首页 > 解决方案 > 从输入数据中查找函数名和参数

问题描述

事务哈希给出这样的输入数据“0xa9059cbb00000000000000000000000024c38db6c4a85b3e6b58631de2334105f6209da300000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000006 如果我调用这个函数 let encodedFunctionSignature = web3.eth.abi.encodeFunctionSignature('transfer(address,uint256)');

它给了我这个“0xa9059cbb”。etherscan调用这个methodId

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

在此处输入图像描述

标签: web3js

解决方案


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

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

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


推荐阅读