Как получить ABI смарт-контракта с Nethereum?

Я могу получить доступ к сервису Blockchain на основе Quorum, и я использую библиотеку Nethereum для взаимодействия со смарт-контрактом.

Когда я развертываю новый смарт-контракт, Nethereum предоставляет адрес и ABI смарт-контракта.

Но я не могу получить доступ к ABI SmartContract без развертывания процесса. Как я могу получить ABI на основе адреса смарт-контракта?


person OguzKaanAkyalcin    schedule 20.05.2021    source источник


Ответы (1)


Вы можете получить ABI JSON во время компиляции исходного кода контракта. Входными данными для компиляции являются исходный код и несколько других значений (таких как настройки оптимизатора)... Выходные данные включают ABI JSON и байт-код... Таким образом, вам не нужно развертывать контракт, чтобы получить json, просто скомпилируйте его. (без развертывания).

Невозможно получить ABI JSON исключительно из байт-кода (или адреса, содержащего только байт-код).


Если в контракте опубликован исходный код, вы можете скомпилировать исходный код, чтобы получить ABI JSON.

Если исходный код не опубликован, также возможно, что контракт реализует какой-либо стандарт (например, ERC-20). Если вы знаете, реализует ли он и какой стандарт, вы можете использовать общий ABI JSON, который отражает этот стандарт (например, это ABI JSON стандарта ERC-20). Однако он не отражает каких-либо функций, которые контракт мог бы использовать для расширения установленного стандартом минимума.

person Petr Hejda    schedule 20.05.2021
comment
Спасибо за ответ. Но особенно в процессе разработки мне всегда нужно запрашивать ABI у разработчиков Solidity и обновлять свой проект. Я думаю, что если я получу доступ к ABI по адресу смарт-контракта, я сэкономлю много времени. Есть ли у вас какие-либо предложения по этому поводу? - person OguzKaanAkyalcin; 20.05.2021
comment
Если вы не можете получить исходный код по адресу, технически невозможно сгенерировать json только по адресу. Он должен быть сгенерирован из исходного кода контракта... Если я обращаюсь к ABI по адресу смарт-контракта - это зависит от вашего контекста, опубликовали ли авторы контракта свой исходный код и является ли набор (исходных кодов) доступны в некотором доступном для поиска формате (по адресу). - person Petr Hejda; 20.05.2021