⌘K

Icon Link输出变量

有时,您调用的合约可能会根据其执行向特定地址转移资金。这种合约调用的底层交易必须具有适当数量的变量输出 Icon Link才能成功。

假设您部署了一个具有以下方法的合约:

fn transfer(coins: u64, asset_id: AssetId, recipient: Identity) {
    transfer(recipient, asset_id, coins);
}

当使用 SDK 调用 transfer_coins_to_output 时,您可以通过在调用中链式添加 append_variable_outputs(amount) 来指定变量输出的数量。就像这样:

let address = wallet.address();
let asset_id = contract_id.asset_id(&Bits256::zeroed());
 
// withdraw some tokens to wallet
let response = contract_methods
    .transfer(1_000_000, asset_id, address.into())
    .append_variable_outputs(1)
    .call()
    .await?;

append_variable_outputs 方法实际上将给定数量的 Output::Variable 添加到交易的输出列表中。该输出类型表示金额和所有者可能会根据交易执行而变化。

Icon InfoCircle

注意: Sway 的 lib-std 函数 mint_to_address 在内部调用了 transfer_to_address,因此您需要像对待 transfer_to_address 一样在 Rust SDK 测试中调用 append_variable_outputs