2017-10-10 88 views
0

0x5537f99e000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000072268656c6c6f2200000000000000000000000000000000000000000000000000下面的以太坊合同函数调用数据是如何构建的?

5537f99e是函数的名字,这就是“的SetString” 2268656c6c6f22是参数的功能,这是“你好”,

请解释这些原始数据的复仇合同consturcted。我对这些偏移感到困惑。

回答

0

您可以在这里找到https://solidity.readthedocs.io/en/develop/abi-spec.html

参考,如果你的函数是

function setstring(string string_value) { 
} 
  1. 第4字节0x5537f99e

前4个字节的数据被推断为第一个4个字节签名的ASCII形式的Keccak散列setstring(string)

  • 下一个32字节0x0000000000000000000000000000000000000000000000000000000000000020
  • 这意味着你的STRING_VALUE,从一开始就以字节为单位的参数块的数据部分的位置。在这种情况下,下一个块

  • 下一个32个字节 0000000000000000000000000000000000000000000000000000000000000007
  • 这意味着你的字符串的尺寸,7. "hello"

  • 下一个32个字节 ​​
  • "hello"的UTF-8编码的内容。

    +0

    谢谢,该文档帮助了很多 –