etherscan 如何获取区块链编译代码?

问题描述

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

提前致谢

解决方法

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

上发布代码

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

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


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

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...