Aptos SDK 技术问题:如何在单笔交易中发送多个payload?
在Aptos单笔交易中发送多个Payload的实现方法
完全可行,Aptos原生支持单笔交易包含多个操作(即多个Payload),这类交易被称为多操作交易,所有操作会原子执行——要么全部成功,要么全部失败,不会出现部分执行的情况。
实现代码示例
对比你提供的单Payload交易代码,多Payload交易的核心是通过buildMultiPayload方法将多个单独的Payload组合成一个批量Payload,后续的交易签名、提交流程和单Payload完全一致:
// 构建第一个转账操作的Payload let payload1 = txBuilder.buildTransactionPayload( "0x1::aptos_account::transfer", [], [to1.address(), 100000] ); // 构建第二个转账操作的Payload(示例为转给另一个地址) let payload2 = txBuilder.buildTransactionPayload( "0x1::aptos_account::transfer", [], [to2.address(), 200000] ); // 将多个Payload组合成批量Payload let multiPayload = txBuilder.buildMultiPayload([payload1, payload2]); // 后续流程与单Payload交易一致 let raw = await client.generateRawTransaction(acc.address(), multiPayload); let signed = await client.signTransaction(acc, raw); let res = await client.submitTransaction(signed); console.log(res); let waiting = await client.waitForTransaction(res.hash);
关键注意事项
- 原子性保障:多操作交易中的所有步骤要么全部完成,要么全部回滚,不会出现部分操作成功、部分失败的情况
- Gas费用:整个多操作交易只需要支付一次Gas,无需为每个单独操作重复付费
- 余额要求:发起交易的账户需要有足够的APT余额,覆盖所有操作的转账金额总和加上Gas费用
内容的提问来源于stack exchange,提问作者Bob Sfog
相关产品推荐
相关产品推荐

