0

我可以访问基于 Quorum 的区块链服务,并且我正在使用 Nethereum 库与智能合约进行交互。

当我部署一个新的智能合约时,Nethereum 会给出智能合约的地址和 ABI。

但是如果不部署流程,我就无法访问 SmartContract 的 ABI。如何根据智能合约的地址获取 ABI?

4

1 回答 1

1

您可以在编译合约源代码的过程中获取 ABI JSON。编译的输入是源代码和一些其他值(例如优化器设置)......输出包括 ABI JSON 和字节码......所以你不需要部署合约来获取 json,只需编译它(没有部署)。

纯粹从字节码(或仅包含字节码的地址)获取 ABI JSON 是不可能的。


如果合约发布了源代码,您可以编译源代码以获取 ABI JSON。

如果没有发布源代码,也有可能合约实现了一些标准(例如 ERC-20)。如果您知道它是否实现以及实现什么标准,您可以使用反映该标准的通用 ABI JSON(例如,是 ERC-20 标准的 ABI JSON)。但是,它不反映合约可能用于扩展标准定义的最小值的任何功能。

于 2021-05-20T08:50:30.453 回答