serializeAccessList
Serializes an EIP-2930 access list for RLP encoding
Loading...
Serializes an EIP-2930 access list for RLP encoding
Serializes an EIP-2930 access list for RLP encoding. Validates addresses and storage keys before serialization.
import "github.com/ChefBingbong/viem-go/utils/transaction"import "github.com/ChefBingbong/viem-go/utils/transaction"
accessList := transaction.AccessList{ { Address: "0x1234567890123456789012345678901234567890", StorageKeys: []string{ "0x0000000000000000000000000000000000000000000000000000000000000001", }, },}
serialized, err := transaction.SerializeAccessList(accessList)if err != nil { log.Fatal(err)}// serialized is []any for RLP encoding([]any, error)The serialized access list as an RLP-compatible slice. Each item is [address, [storageKey1, storageKey2, ...]].
transaction.AccessListThe access list to serialize. Each item contains an address and storage keys.
accessList := transaction.AccessList{ { Address: "0x1234567890123456789012345678901234567890", StorageKeys: []string{ "0x0000000000000000000000000000000000000000000000000000000000000001", }, },}
serialized, _ := transaction.SerializeAccessList(accessList)stringThe contract address. Must be a valid 40-character hex address with 0x prefix.
item := transaction.AccessListItem{ Address: "0x1234567890123456789012345678901234567890", StorageKeys: []string{...},}[]stringThe storage keys to access. Each key must be exactly 32 bytes (64 hex characters with 0x prefix).
item := transaction.AccessListItem{ Address: "0x1234567890123456789012345678901234567890", StorageKeys: []string{ "0x0000000000000000000000000000000000000000000000000000000000000001", "0x0000000000000000000000000000000000000000000000000000000000000002", },}The serialized access list format is:
[
[address1, [storageKey1, storageKey2, ...]],
[address2, [storageKey3, ...]],
...
]
To parse an RLP-decoded access list back to AccessList:
parsed, _ := transaction.ParseAccessList(rlpDecodedData)
This function validates: