#
Advanced usage
If you want to use the advanced features of the Transaction
interface you can initalize it using dedicated methods:
#
Initialization with explicit TaPos and expiration time
Test it yourself: src/typescript/transaction/example-usage/advanced-usage/explicit-data-initialization.ts
import { createHiveChain, createWaxFoundation, IWaxBaseInterface } from '@hiveio/wax';
const chain = await createHiveChain();
// We use IWaxBaseInterface here to enforce lack of any network activity.
const base: IWaxBaseInterface = chain;
/** `createTransactionWithTaPoS` can be useful for cases when you would like to perform a lot of massive operations
* without any access to remote Hive API calls.
* Due to long TAPOS lifespan (near to 64000 blocks, so it really targets to the c.a. 3 hours),
* you can easily once receive TAPOS data (reference block-id) from blockchain
* and next reuse it in your code generating massive transactions, to finally sign and broadcast them.
*/
const { head_block_id } = await chain.api.database_api.get_dynamic_global_properties({});
/// here comes your massive transaction generation code:
base.createTransactionWithTaPoS(head_block_id, '+10m');
/// Add some operations here
/// to finally sign and broadcast
#
Initialization from hive API-JSON form
Test it yourself: src/typescript/transaction/example-usage/advanced-usage/api-form-initialization.ts
import { createHiveChain, IWaxBaseInterface } from '@hiveio/wax';
const chain = await createHiveChain();
// We use IWaxBaseInterface here to enforce lack of any network activity.
const base: IWaxBaseInterface = chain;
/**
* This creation method is useful for cases, when already confirmed blockchain transaction is about to analyzed using ITransaction functions
* such as providing signatureKeys or transactoin ID.
*/
// Fetch block data from Hive API.
const { block } = await chain.api.block_api.get_block({ block_num: 5000000 });
// Converts Hive API-form transaction in JSON form to our transaction.
base.createTransactionFromJson(block!.transactions[0]);
#
Initialize from protobuf transaction
Test it yourself: src/typescript/transaction/example-usage/advanced-usage/protobuf-transaction-initialization.ts
import { createWaxFoundation, transaction } from '@hiveio/wax';
const wax = await createWaxFoundation();
/**
* This creation method is dedicated to usecases, when protobuf transaction object is available for further use.
* All other actions provided by ITransaction interface are very common to the case specifc to API-JSON interaction.
*/
const tx: transaction = {
ref_block_num: 34559,
ref_block_prefix: 1271006404,
expiration: '2021-12-13T11:31:33',
operations: [],
extensions: [],
signatures: []
};
// Constructs a new Transaction object with ready protobuf transaction.
wax.createTransactionFromProto(tx);