ABIEncoder介绍ABIEncoder应用ABIEncoderV2和ABIEncoderV1的区别1.ABIEncoder介绍ABIEncodeV2和V1是对整个合约的编译检查和更丰富的编译功能,跟abi.encode/decode无关。2.ABIEncoder应用So
ABIEncodeV2和V1是对整个合约的编译检查和更丰富的编译功能,跟 abi.encode/decode 无关。
Solidity0.8.0,默认是ABIEncoderV2,无需多余操作,<https://docs.soliditylang.org/en/v0.8.1/layout-of-source-files.html?highlight=0.8.0#abi-coder-pragma> 。
在Solidity0.8.0之前,默认是ABIEncoderV1:
应用 | 版本 | 状态 | 链接 |
添加代码`pragma experimental ABIEncoderV2` | 0.5.0 | experimental | <https://docs.soliditylang.org/en/v0.5.0/layout-of-source-files.html#abiencoderv2> |
添加代码`pragma abicoder v2` | 0.7.4 | nonexperimental | <https://docs.soliditylang.org/en/v0.7.5/layout-of-source-files.html?#abiencoderv2> |
无需多余操作,默认ABIEncoderV2 | 0.8.0 | nonexperimental | <https://docs.soliditylang.org/en/v0.8.1/layout-of-source-files.html?highlight=0.8.0#abi-coder-pragma><https://docs.soliditylang.org/en/v0.8.0/080-breaking-changes.html?highlight=ABIEncoderV2#how-to-update-your-code> |
Ps: 0.8.0之后,如果想使用ABIEncoderV1,可以引用代码`pragma abicoder v1`
V2能够编码和解码任意嵌套的数组和结构体,V2支持的类型集是V1支持的类型集的超集。
V2使某些函数调用更加昂贵,因为V2比V1支持更多的类型,并且对函数输入执行更多的完整性检查。
V1中, external函数不能接受多维数组作为参数。
V1中, 不能从非内部函数返回某些类型,尤其是多维数组和结构体。
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!