Transaction policies are rules that can govern how a transaction is processed, introduced by the transaction parameters that you pass to a transaction request. The available policies are as follows:
The below snippet will show which transaction parameters set which policy:
// #import { ScriptTransactionRequest };
const transactionRequest = new ScriptTransactionRequest({
tip: bn(10), // Sets the tip policy
witnessLimit: bn(1), // Sets the witness limit policy
maturity: 1, // Sets the maturity policy
maxFee: bn(1), // Sets the max fee policy
});
Policies used for a transaction can be retrieved from a transaction using a TransactionResponse
. The below snippet will show how to retrieve the policies from a transaction:
// #import { ScriptTransactionRequest, TransactionResponse, Policy };
// Instantiate the transaction request with transaction parameters that would
// set the respective policies.
const transactionRequest = new ScriptTransactionRequest({
script: scriptBytecode,
gasLimit: bn(2000),
maturity: 2,
tip: bn(3),
witnessLimit: 900,
maxFee: bn(60_000),
});
// Set the script main function arguments
transactionRequest.setData(scriptAbi, scriptMainFunctionArguments);
// Fund the transaction
transactionRequest.addResources(resources);
// Submit the transaction and retrieve the transaction response
const tx: TransactionResponse = await wallet.sendTransaction(transactionRequest);
const response = await tx.waitForResult();
// is undefined if the transaction had no policies applied.
const policies: Policy[] | undefined = response.transaction.policies;