Developer Documentation Contract 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
}
);