跳转到内容

Python SDK:无序交易

无序交易允许创建彼此之间不指定执行顺序的交易。这在多台机器需要为同一发送账户签名或提交、但顺序不影响结果的场景中很有用。

协议概览请参阅无序交易AIP-123AIP-129)。

创建和执行无序交易的流程与简单交易流程相同。向 aptos.transaction.build 传入 replay_protection_nonce,而不是依赖序列号。

import random
import time
from aptos_sdk.v2.bcs import Serializer
from aptos_sdk.v2.transactions import EntryFunction, TransactionArgument, TransactionPayload
from aptos_sdk.v2.types import StructTag, TypeTag
payload = EntryFunction.natural(
"0x1::coin",
"transfer",
[TypeTag(StructTag.from_str("0x1::aptos_coin::AptosCoin"))],
[
TransactionArgument(bob.address, Serializer.struct),
TransactionArgument(1_000, Serializer.u64),
],
)
raw_txn = await aptos.transaction.build(
sender=alice.address,
payload=TransactionPayload(payload),
replay_protection_nonce=random.randint(0, 2**64 - 1),
expiration_timestamps_secs=int(time.time()) + 60,
)
result = await aptos.transaction.sign_submit_and_wait(raw_txn, alice)

之后遵循与简单交易相同的步骤:

  1. 模拟交易(可选)
  2. 签名交易。
  3. 交易提交到网络。
  4. 等待交易执行。

要并行发送多笔无序转账,请参阅批量提交交易

SDK 仓库包含遵循此 API 的可运行示例:

克隆仓库时,这些文件会导入 aptos_sdk_v2。执行 pip install aptos-sdk 后,请从 aptos_sdk.v2 导入相同 API。