如何构建以下以太坊契约函数调用数据?

时间:2017-10-10 18:58:52

标签: ethereum web3js web3 go-ethereum

0x5537f99e000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000072268656c6c6f2200000000000000000000000000000000000000000000000000

5537f99e是函数名称,它是' setstring' 2268656c6c6f22是该函数的参数,它是' hello',

请解释如何构建以太坊合约的原始数据。我对这些补偿感到困惑。

1 个答案:

答案 0 :(得分:2)

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

找到参考资料

如果您的功能是

function setstring(string string_value) {
}
  1. 前4个字段0x5537f99e
  2. 前4个字节的数据派生为签名的ASCII形式的Keccak哈希的前4个字节setstring(string)

    1. 接下来的32个字节0x0000000000000000000000000000000000000000000000000000000000000020
    2. 这意味着string_value的数据部分的位置,以参数块开头的字节为单位。在这种情况下,下一个块

      1. 接下来的32个字节 0000000000000000000000000000000000000000000000000000000000000007
      2. 这意味着您的字符串大小为7. "hello"

        1. 接下来的32个字节 2268656c6c6f2200000000000000000000000000000000000000000000000000
        2. 以UTF-8编码的"hello"的内容。