我绑定到解码事务输入的具体合同合同,源代码是未知的,ABI也是未知的。在BSCscan,合同没有被验证,内置的反编译返回混乱。
合同地址(BSC) - 0x22726abde7ad5496f7cdb12c1356772e847e6996
示例tx哈希: 0x51a0035fd27270ed1966731a575aa8161b37fac20cb5cdfdd05cf835e15cd610
因此,我想找到一种方法来查看在BSCscan中显示的tx数据。(https://bscscan.com/tx/0x51a0035fd27270ed1966731a575aa8161b37fac20cb5cdfdd05cf835e15cd610)
发布于 2022-01-26 07:58:03
从技术上讲,如果没有ABI,就不可能解码输入数据。您的ABI指定了函数参数中编码的数据和数据类型。尽管如此,您可能已经看到了带有解码输入参数的以太扫描/bscscan。多亏了https://www.4byte.directory/这样的源代码,我们有了一个已知函数签名及其参数类型的列表。这些块探测器可能使用类似于解码已知函数的方法。因此,如果要解码的函数调用在签名数据库中已知,则可以从技术上对其进行解码。例如,假设输入数据是0x2e1a7d4d0000000000000000000000000000000000000000000000000038d7ea4c680000。
其中,前4个字节是函数签名- 0x2e1a7d4。剩下的是输入参数。
然后我们可以在https://www.4byte.directory/中查找签名(链接)。它说这个函数是withdraw(uint256)。
既然我们有了函数定义,我们就可以很容易地解码输入。您可以通过库,如web3或以太,或一些网络工具来做同样的事情。在本例中,输入是0x38d7ea4c680000,这是16000000000000000的十六进制。所以函数调用是withdraw(16000000000000000)。
但是就像前面说的,这只是因为withdraw(256)的函数签名是已知的。如果是以前不知道的新函数签名,则不可能对输入进行解码。您可以阅读更多关于输入是如何编码这里的信息。
https://ethereum.stackexchange.com/questions/119909
复制相似问题