⌘K

Icon Link交易策略

交易策略定义如下:

pub struct TxPolicies {
    tip: Option<u64>,
    witness_limit: Option<u64>,
    maturity: Option<u64>,
    max_fee: Option<u64>,
    script_gas_limit: Option<u64>,
}

其中:

  1. 小费(Tip) - 用于支付区块生产者以优先处理交易的金额。
  2. 见证数据限制(Witness Limit) - 交易允许的最大见证数据量。
  3. 成熟度(Maturity) - 交易无法包含在此区块之后的区块中。
  4. 最大费用(Max Fee) - 此交易可支付的最大费用。
  5. 脚本 Gas 限制(Script Gas Limit) - 交易在执行其脚本代码时可以消耗的最大 Gas 量。

当未设置脚本 Gas 限制时,Rust SDK 将在后台估算消耗的 Gas 并将其设置为限制。

如果未设置见证数据限制,SDK 将其设置为交易生成器中定义的所有见证和签名的大小。

您可以通过创建TxPolicies实例并将其传递给名为with_tx_policies的链式方法来配置这些参数:

let contract_methods = MyContract::new(contract_id.clone(), wallet.clone()).methods();
 
let tx_policies = TxPolicies::default()
    .with_tip(1)
    .with_script_gas_limit(1_000_000)
    .with_maturity(0);
 
let response = contract_methods
    .initialize_counter(42) // Our contract method
    .with_tx_policies(tx_policies) // Chain the tx policies
    .call() // Perform the contract call
    .await?; // This is an async call, `.await` it.

您还可以使用TxPolicies::default()来使用默认值。

如下所示:

let response = contract_methods
    .initialize_counter(42)
    .with_tx_policies(TxPolicies::default())
    .call()
    .await?;

正如您可能已经注意到的,TxPolicies也可以在部署合约或转移资产时通过将其传递给相应的方法来指定。