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

问题描述 投票:0回答:1

事务散列给出输入数据,如“0xa9059cbb00000000000000000000000024c38db6c4a85b3e6b58631de2334105f6209da300000000000000000000000000000000000000000000000000000dca4f1516a8”。如果我调用这个函数,请使用encodedFunctionSignature = web3.eth.abi.encodeFunctionSignature('transfer(address,uint256)');

它给我这个“0xa9059cbb”.etherscan调用这个方法ID

我的问题是我如何从这个“0xa9059cbb”获得转移(地址,uint256)

enter image description here

web3js
1个回答
0
投票

函数选择器是规范化函数签名的keccak256散列的前四个字节。在这种情况下,web3.sha3('transfer(address,uint256)').substring(0, 10) === "0xa9059cbb"

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

一个常用的函数选择器列表在这里:https://github.com/ethereum-lists/4bytes,实际上transfer(addresss,uint256)是给出的第一个例子。

© www.soinside.com 2019 - 2024. All rights reserved.