Skip to content
🎉 Welcome! Translations are currently experimental. | 翻訳は現在実験的です。 | 翻译目前处于实验阶段。
Click here to submit feedback! | ここをクリックしてフィードバックを送信してください! | 点击这里提交反馈!

Binary Canonical Serialization (BCS) Format

All transaction arguments for the Aptos Go SDK are encoded as bytes in Binary Canonical Serialization (BCS) format. This is the format the Aptos chain recognizes, with specific types (ex. Instead of an uint64 or big.Int, it uses types like u64 or u128)

You can directly use the BCS format to build transactions by specifying argument types explicitly like so:

example.go
	accountBytes, err := bcs.Serialize(&bob.Address)
	if err != nil {
		panic("Failed to serialize bob's address:" + err.Error())
	}
 
	amountBytes, err := bcs.SerializeU64(TransferAmount)
	if err != nil {
		panic("Failed to serialize transfer amount:" + err.Error())
	}
	rawTxn, err := client.BuildTransaction(alice.AccountAddress(), aptos.TransactionPayload{
		Payload: &aptos.EntryFunction{
			Module: aptos.ModuleId{
				Address: aptos.AccountOne,
				Name:    "aptos_account",
			},
			Function: "transfer",
			ArgTypes: []aptos.TypeTag{},
			Args: [][]byte{
				accountBytes,
				amountBytes,
			},
		}},
	)

You can learn more about BCS by exploring the BCS GitHub repo.