跳转到内容

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

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

EntryFunction::apt_transfer 等辅助方法会为你编码参数。手动构建 payload 时,请使用 aptos_bcs 序列化每个参数:

use aptos_sdk::{
transaction::{EntryFunction, TransactionPayload},
types::MoveModuleId,
};
let payload = TransactionPayload::EntryFunction(EntryFunction {
module: MoveModuleId::from_str_strict("0x1::aptos_account")?,
function: "transfer".to_string(),
type_args: vec![],
args: vec![
aptos_bcs::to_bytes(&bob.address())?,
aptos_bcs::to_bytes(&1_000u64)?,
],
});
let raw_txn = aptos.build_transaction(&alice, payload).await?;

也可以直接序列化和反序列化值:

let bytes = aptos_bcs::to_bytes(&value)?;
let value: MyType = aptos_bcs::from_bytes(&bytes)?;

SDK 中提供 Move 类型标签:

use aptos_sdk::types::{MoveStructTag, MoveType, TypeTag};

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