如何使用 Nethereum 获取智能合约的 ABI?
How to get ABI of Smart Contract with Nethereum?
我可以访问基于 Quorum 的区块链服务,我正在使用 Nethereum 库与智能合约进行交互。
当我部署一个新的智能合约时,Nethereum 给出了智能合约的地址和 ABI。
但是在没有部署进程的情况下,我无法访问SmartContract的ABI。如何根据智能合约地址获取ABI?
您可以在编译合约源码的过程中获取ABI JSON。编译的输入是源代码和一些其他值(例如优化器设置)......输出包括 ABI JSON 和字节码......所以你真的不需要部署合约来获得 json, 直接编译即可(不部署)
不可能完全从字节码(或仅包含字节码的地址)获得 ABI JSON。
如果合约有源码发布,您可以编译源码获取ABIJSON。
如果没有公开源代码,也有可能是合约实现了某种标准(例如ERC-20)。如果你知道它是否实现以及它实现了什么标准,你可以使用反映该标准的通用 ABI JSON(例如 this 是 ERC-20 标准的 ABI JSON)。但是,它不反映合约可能用于扩展标准定义的最小值的任何功能。
我可以访问基于 Quorum 的区块链服务,我正在使用 Nethereum 库与智能合约进行交互。
当我部署一个新的智能合约时,Nethereum 给出了智能合约的地址和 ABI。
但是在没有部署进程的情况下,我无法访问SmartContract的ABI。如何根据智能合约地址获取ABI?
您可以在编译合约源码的过程中获取ABI JSON。编译的输入是源代码和一些其他值(例如优化器设置)......输出包括 ABI JSON 和字节码......所以你真的不需要部署合约来获得 json, 直接编译即可(不部署)
不可能完全从字节码(或仅包含字节码的地址)获得 ABI JSON。
如果合约有源码发布,您可以编译源码获取ABIJSON。
如果没有公开源代码,也有可能是合约实现了某种标准(例如ERC-20)。如果你知道它是否实现以及它实现了什么标准,你可以使用反映该标准的通用 ABI JSON(例如 this 是 ERC-20 标准的 ABI JSON)。但是,它不反映合约可能用于扩展标准定义的最小值的任何功能。