1

我正在开发以太坊浏览器,我想知道 etherscan 如何获取合约源代码、ABI 以及它们如何将交易输入六进制解析为合约函数?

提前致谢

4

1 回答 1

2

合约开发者(维护者,或者基本上任何人)可以在https://etherscan.io/verifyContract上发布代码

当您在 Etherscan 上发布合约时,他们会询问您实际的源代码和编译参数,例如使用的语言(例如 Solidity 或 Vyper)、编译器版本(例如 0.8.4)、优化设置和其他一些细节。

然后 Etherscan 使用提供的参数编译提供的代码,如果(现在编译的)字节码与区块链上的字节码匹配,它会发布源代码。


ABI JSON 是编译过程的返回值之一——连同实际的字节码、操作码列表、错误数组等。

至于事务输入十六进制:他们使用转换为实际函数定义(包括参数数据类型)的函数签名字典。您可以在其他答案中找到有关 ABI 编码函数签名和传递给函数的参数的更多信息。

于 2021-05-31T21:34:48.153 回答