etherscan如何获得区块链编译代码?
Posted
技术标签:
【中文标题】etherscan如何获得区块链编译代码?【英文标题】:How does etherscan get blockchain compiled code? 【发布时间】:2021-08-19 03:21:35 【问题描述】:我正在开发一个以太坊浏览器,我想知道 etherscan 如何获取合约源代码、ABI 以及他们如何将交易输入 hexa 解析为合约函数?
提前致谢
【问题讨论】:
【参考方案1】:合约开发者(维护者,或者基本上任何人)可以在https://etherscan.io/verifyContract上发布代码
当您在 Etherscan 上发布合约时,他们会询问您实际的源代码和编译参数,例如使用的语言(例如 Solidity 或 Vyper)、编译器版本(例如 0.8.4)、优化设置和其他一些细节.
然后 Etherscan 使用提供的参数编译提供的代码,如果(现在编译的)字节码与区块链上的字节码匹配,它会发布源代码。
ABI JSON 是编译过程的返回值之一 - 以及实际的字节码、操作码列表、错误数组等。
至于事务输入十六进制:他们使用函数签名字典,转换为实际函数定义(包括参数数据类型)。您可以在此other answer 中找到有关 ABI 编码函数签名和传递给函数的参数的更多信息。
【讨论】:
非常感谢 @PeterSmith 提供的信息,我将不得不连接到 etherscan API 以根据合同 ABI JSON 检查输入数据。以上是关于etherscan如何获得区块链编译代码?的主要内容,如果未能解决你的问题,请参考以下文章