Sui 支付交易类型介绍
我们最新的Sui 版本引入了三种新的本地交易类型,并废除了三种现有方法:Pay、PaySui 和 PayAllSui。
我们最新的Sui 版本引入了三种新的本地交易类型,并废除了三种现有方法。新的API--Pay、PaySui 和PayAllSui 有效地取代了 TransferSui、SplitCoin 和 MergeCoin。这三种旧方法暂时仍可使用,我们将在删除它们之前提前通知社区。
这些支付方法更易于使用,可支持多种场景,减少硬币管理开销。我们希望开发人员能发现更多的灵活性,以支持更广泛的使用场景,以及更强大的应用程序接口保证,这也是支付使用场景的普遍期望。
Pay、PaySui 和PayAllSui已作为Sui 0.14.0 的一部分发布。
新的支付*交易类型
薪酬
交易使用多个硬币,并按照指定的金额列表发送到多个地址。 薪酬
交易可以使用任何类型的硬币,包括SUI 。气体支付将使用一个单独的SUI 对象,如果需要,协议将为交易选择一个对象。
- 如果收件人和发件人相同、
薪酬
实际上是splitCoin
和合并币
.
付瑞
交易使用多个SUI 硬币,并按照指定的金额列表发送到多个地址。 付瑞
只需要SUI 硬币,不需要气体硬币对象。
- 输入的第一个SUI 硬币对象将用于支付燃气费,因此该SUI 硬币的余额必须等于或大于燃气预算。
- SUI 硬币余额输入总额必须足以支付气体预算和要转移的金额。
全额支付
交易将多个SUI 硬币扣除气体付款后发送给一个收件人。交易完成后,输入的SUI 硬币将严格归零,并保留在发件人地址下。
- 输入的第一个SUI 硬币对象将用于支付燃气费,因此该SUI 硬币的余额必须等于或大于燃气预算。
- 发送方可以通过这种交易类型将其所有SUI 币转移到另一个地址,而SUI 在一次交易中严格保持为零。
迁移指南
以下是基于 Typescript SDK 的迁移代码示例。这些更改与 Rust SDK 和 RPC 端点的更改非常相似。
转让隋
将迁移到付瑞
// pre-migration codes in TS
const txn = {
suiObjectId: id,
gasBudget: GAS_BUDGET,
recipient: recipient_addr,
amount: amount,
};
await signer.transferSuiWithRequestType(txn);
// post-migration codes in TS
const txn = {
inputCoins: [id],
// length of recipients need to be the same as amounts
recipients: [recipient_addr],
amounts: [amount],
gasBudget: GAS_BUDGET,
};
await signer.paySuiWithRequestType(txn);
转让隋
将迁移到全额支付
// pre-migration codes in TS
const txn = {
suiObjectId: id,
gasBudget: GAS_BUDGET,
recipient: recipient_addr,
amount: null,
};
await signer.transferSuiWithRequestType(txn);
// post-migration codes in TS
const txn = {
inputCoins: [id],
recipient: recipient_addr,
gasBudget: GAS_BUDGET,
};
await signer.payAllSuiWithRequestType(txn);
分币
和合并币
将迁移到支付
// pre-migration split coin
const txn = {
coinObjectId: id;
splitAmounts: [amount0, amount1],
gasPayment: gas_obj_id,
gasBudget: GAS_BUDGET,
};
await signer.SplitCoinWithRequestType(txn);
// post-migration pay txn for splitting
const txn = {
inputCoins: [id],
// length of recipients need to be the same as amounts
recipients: [sender_addr, sender_addr],
amounts: [amount0, amount1],
gasPayment: gas_obj_id,
gasBudget: GAS_BUDGET,
};
await signer.PayWithRequestType(txn);
// pre-migration merge coin
const 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 merging
const 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);
正在进行的相关工作
我们的团队将继续努力,进一步改善开发人员的体验,提高支付速度。我们正在实施的其他计划包括
- 实现类似于
薪酬
Move 模块中。 - 引入气体估算,以便更好地估算气体预算和气体总成本。
- 进一步改进硬币选择应用程序接口,适用于各种使用情况。