SUI Network 更新支付交易类型,将带来哪些变化?
今天SUI Network 官方发文,SUI 0.14.0 版本已经发布,将会用Pay、PaySui和PayAllSui 三种新的支付交易类型替代TransferSui、SplitCoin和MergeCoin 三种旧的方法,三种较老的方法目前仍然有效,官方在删除它们之前向社区提前通知。
SUI 的支付类型更新的具体类型是什么?为什么SUI 需要更新支付方式?将会带来哪些变化?
原文:@SuiNetwork
编译:SUI World DAO
关注SUI World DAO 推特,了解更多SUI 空投信息:@SuiWorldHQ
SUI 更新交易支付类型
最新的 Sui 版本引入了三种新的本地交易类型替代三种现有方法。新的 API — Pay、PaySui 和 PayAllSui 将会替代 TransferSui、SplitCoin 和 MergeCoin。三种旧的方法暂时仍然有效,在删除它们之前我们会提前通知社区。
这些支付方式能够提供更大的易用性,更高的灵活性,并且可以以更少的代币管理开销支持各种场景。我们希望更加灵活的支持开发人员更广泛的用例,以及更强大的API保证,这通常是支付产品所期望的。
新的支付交易类型有什么变化?
Pay 交易类型采用多币种并按照指定的数量列表发送到多个地址,Pay 交易类型采用任何类型的代币,包括 SUI。GAS 支付将使用一个单独的SUI对象,如果需要,协议将选择一个用于交易。如果接收人和发送人相同,Pay 实际上是 splitCoin 和 mergeCoin 的通用版本。
PaySui 交易类型采用多个 SUI 代币并按照指定的数额列表发送到多个地址,PaySui 交易类型只接受 SUI 币,不需要 gas 币对象。
1)第一个 SUI 币对象输入将用于支付 gas,因此该 SUI 币的余额必须等于或大于 gas 预算。
2)总 SUI 币余额输入必须足以涵盖 gas 预算和要支付的金额。
Payallsui 交易类型发件人可以通过这种交易类型将他们所有的 SUI 币转移到另一个地址,在一次交易中完全没有留下任何SUI。
第一个 SUI 币对象输入将用于支付 gas,因此该 SUI 币的余额必须大于或等于 gas 预算。发送人可以通过这种交易类型将他们所有的 SUI 硬币转移到另一个地址,在一次交易中 SUI 严格为零。
迁移指南
以下是基于 Typescript SDK 的迁移代码示例。这些更改与用于 Rust SDK 和 RPC 端点的更改非常相似。
指定金额的 TransferSui 将迁移到 PaySui
// pre-migration codes in TSconst txn = {suiObjectId: id,gasBudget: GAS_BUDGET,recipient: recipient_addr,amount: amount,};await signer.transferSuiWithRequestType(txn);// post-migration codes in TSconst txn = {inputCoins: [id],// length of recipients need to be the same as amountsrecipients: [recipient_addr],amounts: [amount],gasBudget: GAS_BUDGET,};await signer.paySuiWithRequestType(txn);
没有指定金额的TransferSui将迁移到PayAllSui
// pre-migration codes in TSconst txn = {suiObjectId: id,gasBudget: GAS_BUDGET,recipient: recipient_addr,amount: null,};await signer.transferSuiWithRequestType(txn);// post-migration codes in TSconst txn = {inputCoins: [id],recipient: recipient_addr,gasBudget: GAS_BUDGET,};await signer.payAllSuiWithRequestType(txn);
SplitCoin和MergeCoin将迁移到 Pay
// pre-migration split coinconst txn = {coinObjectId: id;splitAmounts: [amount0, amount1],gasPayment: gas_obj_id,gasBudget: GAS_BUDGET,};await signer.SplitCoinWithRequestType(txn);// post-migration pay txn for splittingconst txn = {inputCoins: [id],// length of recipients need to be the same as amountsrecipients: [sender_addr, sender_addr],amounts: [amount0, amount1],gasPayment: gas_obj_id,gasBudget: GAS_BUDGET,};await signer.PayWithRequestType(txn);// pre-migration merge coinconst txn = {primaryCoin: primary_coin_id,coinToMerge: coin_to_merge,gasPayment?: gas_obj_id,gasBudget: GAS_BUDGET,};await signer.MergeCoinWithRequestType(txn);// post-migration pay txn for mergingconst txn = {inputCoins: [primary_coin_id, coin_to_merge],recipients: [sender_addr],amounts: [primary_coin_amount + coin_to_merge_amount],gasPayment: gas_obj_id,gasBudget: GAS_BUDGET,};await signer.PayWithRequestType(txn);
正在进行的相关工作
我们的团队将继续努力,进一步提高与支付相关的开发者体验和速度。我们正在开展的其他举措包括:
1、实现类似的util函数,如Move模块中的Pay。
2、引入GAS 估算模型以便更好地估算 GAS 预算和总 GAS 成本。
3、进一步改进各种应用案例的代币选择 API。
公众号后台回复“1”,加入SUI World社区