Sui 支付交易类型介绍

我们最新的Sui 版本引入了三种新的本地交易类型,并废除了三种现有方法:Pay、PaySui 和 PayAllSui。

Sui 支付交易类型介绍

我们最新的Sui 版本引入了三种新的本地交易类型,并废除了三种现有方法。新的API--Pay、PaySuiPayAllSui 有效地取代了 TransferSui、SplitCoin 和 MergeCoin。这三种旧方法暂时仍可使用,我们将在删除它们之前提前通知社区。

这些支付方法更易于使用,可支持多种场景,减少硬币管理开销。我们希望开发人员能发现更多的灵活性,以支持更广泛的使用场景,以及更强大的应用程序接口保证,这也是支付使用场景的普遍期望。

PayPaySuiPayAllSui已作为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 模块中。
  • 引入气体估算,以便更好地估算气体预算和气体总成本。
  • 进一步改进硬币选择应用程序接口,适用于各种使用情况。