以太坊的ABI编码(以太坊ABI编码简介)?

175
okx
ABI是Application Binary Interface的缩写,它定义了调用智能合约函数和合约之间函数调用的消息编码格式。类似于Webservice中的SOAP协议,ABI指定了操作函数签名、参数编码和返回结果编码等接口说明。

使用ABI协议时必须强制要求类型在编译时已知。编译完成后,智能合约的abi接口定义就确定了,例如智能合约生成的字节码和abi定义。可根据abi定义生成调用智能合约函数的abi格式的数据。

函数调用的前四个字节数据指定了要调用的函数签名,计算方式是使用函数签名的keccak256哈希取四个字节。如果函数名有多个参数,需要用逗号隔开,并去掉表达式中的所有空格。在geth客户端通过命令可以得到函数签名的哈希值。函数的返回结果类型可以是任何类型,例如布尔值。

对于固定大小的类型(例如uint256和bytes10),值可以直接编码。对于动态内容类型(例如uint32[]和bytes),需要先编码偏移值,即整个值编码的开始到真正存这个数据的偏移值,然后按顺序编码值。除了bytes和string,其他类型的数据少于32字节的需要补0以达到32字节长度。动态长度的编码规则在后面的例子中介绍。

综上,ABI协议是智能合约与外部世界的桥梁,使得外部应用程序可以方便地与智能合约进行交互。

欧易

欧易(OKX)

用戶喜愛的交易所

币安

币安(Binance)

已有账号登陆后会弹出下载

进群交流|欧易官网