我正在开发一个以太坊浏览器,我想知道etherscan是如何获得Contract源代码、ABI的,以及他们是如何将事务输入hexa解析为Contract的函数的?
提前感谢
合同开发人员(维护人员,或者基本上任何人(都可以在https://etherscan.io/verifyContract
当你在Etherscan上发布合同时,他们会询问你实际的源代码和编译参数,如使用的语言(如Solidity或Vyper(、编译器版本(如0.8.4(、优化设置和其他一些细节。
然后Etherscan用提供的params编译提供的代码,如果(现在编译的(字节码与区块链上的字节码匹配,它就会发布源代码。
ABI JSON是编译过程中返回的值之一,还有实际的字节码、操作码列表、错误数组等。
至于事务输入十六进制:他们使用一个函数签名字典,该字典可以转换为实际的函数定义(包括参数数据类型(。您可以在另一个答案中找到有关ABI编码函数签名和传递给函数的参数的更多信息。