Как получить ABI смарт-контракта с Nethereum?
Я могу получить доступ к службе цепочки блоков на основе кворума, и я использую библиотеку Nethereum для взаимодействия со смарт-контрактом.
Когда я развертываю новый смарт-контракт, Nethereum предоставляет адрес и ABI смарт-контракта.
Но я не могу получить доступ к ABI SmartContract без развертывания процесса. Как я могу получить ABI на основе адреса смарт-контракта?
2 ответа
Вы можете получить ABI JSON во время компиляции исходного кода контракта. Входные данные для компиляции - это исходный код и несколько других значений (например, настройки оптимизатора) ... Выходные данные включают ABI JSON и байт-код ... Так что вам действительно не нужно развертывать контракт для получения json, просто скомпилируйте его (без разворачивания).
Невозможно получить ABI JSON только из байт-кода (или адреса, содержащего только байт-код).
Если в контракте опубликован исходный код, вы можете скомпилировать исходный код, чтобы получить ABI JSON.
Если исходный код не опубликован, также возможно, что контракт реализует какой-либо стандарт (например, ERC-20). Если вы знаете, реализует ли он и какой стандарт, вы можете использовать общий ABI JSON, который отражает этот стандарт (например, это ABI JSON стандарта ERC-20). Однако он не отражает каких-либо функций, которые контракт мог бы использовать для расширения стандартного минимума.
Вы можете скопировать свой смарт-контракт в ремикс и позволить ремиксу его скомпилировать. Затем Remix показывает вам API и байт-код вашего контракта.