Blockchain Contract Action Methods Each blockchain contract function has some additional functionality you can find very useful
action.getRawTransaction(params, ?options)
Construct raw transaction for an action
Copy const faucetContract = eoslime . Contract .fromFile ( FAUCET_ABI_PATH , faucetAccount .name , faucetAccount);
const rawFunctionTx = await faucetContract . actions .produce.
getRawTransaction ([ myAccount .name , '100.0000 TKNS' ]);
/*
rawFunctionTx =
{
expiration: '2019-11-12T15:19:15',
ref_block_num: 24381,
ref_block_prefix: 3641461961,
max_net_usage_words: 0,
max_cpu_usage_ms: 0,
delay_sec: 0,
context_free_actions: [],
actions:
[ { account: 'l3ac5afc1334',
name: 'produce',
authorization: [Array],
data:
'20d458628c150e8940420f000000000004544b4e530000000c6c6532353331343433636335046d656d6f' } ],
transaction_extensions: []
}
*/
The options one can provide here are the same as the ones for the contract actions
Copy const faucetContract = eoslime . Contract .fromFile ( FAUCET_ABI_PATH , faucetAccount .name , faucetAccount);
const rawFunctionTx = await faucetContract . actions .produce.
getRawTransaction ([ myAccount .name , '100.0000 TKNS' ] , { unique : true });
action.sign(params, ?options)
Sign action and return a ready-to-broadcast transaction
Copy const faucetContract = eoslime . Contract .fromFile ( FAUCET_ABI_PATH , faucetAccount .name , faucetAccount);
const signedFunctionTx = await faucetContract .actions.
produce .sign ([ myAccount .name , '100.0000 TKNS' ]);
/*
signedActionTx =
{
compression: 'none',
signatures:
[ 'SIG_K1_K7nuuRW3LTzcjwjot6BStnSKj4cmdgNBp8yXsqJuAxTTrRiLEGmA253JBPLt6pNL4XWopJrA3UrhXWnLDcB3XAmYR25J9j'],
transaction:
{
expiration: '2019-11-12T15:22:38',
ref_block_num: 24786,
ref_block_prefix: 24901427,
max_net_usage_words: 0,
max_cpu_usage_ms: 0,
delay_sec: 0,
context_free_actions: [],
actions: [ [Object] ],
transaction_extensions: []
}
}
*/
The options one can provide here are the same as the ones for the contract actions
Copy const faucetContract = eoslime . Contract .fromFile ( FAUCET_ABI_PATH , faucetAccount .name , faucetAccount);
const rawFunctionTx = await faucetContract . actions .produce.
sign ([ myAccount .name , '100.0000 TKNS' ] , { from : ANOTHER_ACCOUNT });
Events
processed
You can process some logic every time a contract function is broadcasted to the chain
Copy const faucetContract = eoslime . Contract .fromFile ( FAUCET_ABI_PATH , faucetAccount .name , faucetAccount);
faucetContract . produce .on ( 'processed' , (txReceipt) =>
{
// do some custom logic
}
);