登录后可观看高清视频
ABI编码 | EVM内存8
26次播放
2025-01-27
智能合约返回的数据采用ABI编码。在调用其他合约时,返回的数据以及使用汇编调用外部合约时返回的数据都必须进行ABI编码。对于小于或等于32字节的值类型,左侧填充零;对于固定大小的字节类型(如bytes4、bytes16、bytes32),则右侧填充零。结构体和固定大小数组以32字节块返回,而动态数组则需要编码偏移量、长度和32字节元素。
例如,地址类型在ABI编码时左侧填充零,返回32字节,其中20字节为地址内容。结构体的编码则会将每个数据类型填充至32字节,返回时会包含多个32字节块。固定大小数组与结构体类似,返回时不编码长度,而是直接返回32字节块。动态数组则包含偏移量和长度,元素同样以32字节编码。
了解这些编码规则对于使用汇编进行外部调用和返回数据至关重要。