跳转到内容

Python SDK:二进制规范序列化(BCS)格式

Aptos Python SDK 的交易参数使用二进制规范序列化(BCS)编码。这是 Aptos 链识别的格式,使用 u64u128 等具体类型,而不是泛型整数。

使用匹配的序列化器将每个参数包装为 TransactionArgument

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::aptos_account",
"transfer_coins",
[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),
)

常用序列化方法包括 Serializer.structSerializer.u8Serializer.u16Serializer.u32Serializer.u64Serializer.u128Serializer.u256Serializer.boolSerializer.strSerializer.to_bytes。也支持有符号整数(i8i256)。

也可以直接序列化值:

from aptos_sdk.v2.bcs import Serializer, Deserializer
ser = Serializer()
ser.u64(1_000)
ser.bool(True)
data = ser.output()
deser = Deserializer(data)
assert deser.u64() == 1_000
assert deser.bool() is True

可通过 BCS GitHub 仓库 了解更多 BCS 信息。