使用ABI协议时必须强制要求类型在编译时已知。编译完成后,智能合约的abi接口定义就确定了,例如智能合约生成的字节码和abi定义。可根据abi定义生成调用智能合约函数的abi格式的数据。
函数调用的前四个字节数据指定了要调用的函数签名,计算方式是使用函数签名的keccak256哈希取四个字节。如果函数名有多个参数,需要用逗号隔开,并去掉表达式中的所有空格。在geth客户端通过命令可以得到函数签名的哈希值。函数的返回结果类型可以是任何类型,例如布尔值。
对于固定大小的类型(例如uint256和bytes10),值可以直接编码。对于动态内容类型(例如uint32[]和bytes),需要先编码偏移值,即整个值编码的开始到真正存这个数据的偏移值,然后按顺序编码值。除了bytes和string,其他类型的数据少于32字节的需要补0以达到32字节长度。动态长度的编码规则在后面的例子中介绍。
综上,ABI协议是智能合约与外部世界的桥梁,使得外部应用程序可以方便地与智能合约进行交互。
用戶喜愛的交易所
已有账号登陆后会弹出下载