获取/猜测未验证合约的外部方法

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

如果智能合约的外部(或公共)函数未经验证,有什么方法可以获取或猜测它吗?

我使用事务历史记录来获取至少一次被调用的函数,但这非常慢。也许有办法从字节码或其他东西猜测?

ethereum solidity web3js
2个回答
2
投票

您正在寻找的是字节码反编译器,以便您可以检索合约的 ABI。

由于字节码仅包含函数签名哈希值 - 特别是函数签名哈希值的最后 4 个字节 - 检索字节码的 ABI 是一个尝试和猜测的游戏。

幸运的是,有一些工具结合了不同的技术(交易历史、反编译、已知函数签名数据库等)来从字节码和地址“猜测”合约的 ABI。例如,查看 porosityJEB DecompilermythrilEthervm.iowhatsabi

函数签名数据库:https://www.4byte.directory/signatures/


0
投票

ContractCompanion 项目提供了用于在原始字节码中查找函数选择器的附加工具,如其自述文件中所述。该项目还具有一个前端界面,用于与未经验证的合约进行交互。

https://github.com/DOBEN/ContractCompanion https://deployment-vercel-dqhc.vercel.app/

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