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

Transactions etherscan如何获得区块链编译代码?,transactions,ethereum,smartcontracts,etherscan,Transactions,Ethereum,Smartcontracts,Etherscan,我正在开发以太坊浏览器,我想知道以太扫描是如何获得合同源代码ABI的,以及他们是如何将事务输入hexa解析为合同函数的 提前感谢合同开发人员(维护人员,或者基本上任何人)可以在 当您在Etherscan上发布合同时,他们会询问您实际的源代码和编译参数,如使用的语言(如Solidity或Vyper)、编译器版本(如0.8.4)、优化设置和其他一些细节 然后Etherscan使用提供的参数编译提供的代码,如果(现在编译的)字节码与区块链上的字节码匹配,它将发布源代码 ABI JSON是编译过程中返

我正在开发以太坊浏览器,我想知道以太扫描是如何获得合同源代码ABI的,以及他们是如何将事务输入hexa解析为合同函数的

提前感谢

合同开发人员(维护人员,或者基本上任何人)可以在

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

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


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


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

非常感谢@PeterSmith提供这些信息,我将必须连接到etherscan API,根据合同ABI JSON检查输入数据。