119 ethereum hardhat : Артефакты компиляции

— введение

— Информационные файлы сборки

— Чтение артефактов

— Структура каталога

— hardhat Tutorials , hardhat 教程

— Контакт 联系方式

— введение

Компиляция с помощью Hardhat генерирует два файла на каждый скомпилированный контракт (не каждый файл .sol): артефакт и файл отладки.

Артефакт содержит всю информацию, необходимую для развертывания и взаимодействия с контрактом. Они совместимы с большинством инструментов, включая формат артефактов Truffle. Каждый артефакт состоит из json со следующими свойствами:

  • contractName: Строка с названием контракта.

  • abi: JSON-описание ABI контракта.

  • bytecode: Шестнадцатеричная строка с префиксом "0x", содержащая несвязанный байткод развертывания. Если контракт не является развертываемым, эта строка имеет значение "0x".

  • deployedBytecode: Шестнадцатеричная строка с префиксом "0x" несвязанного runtime/развернутого байткода. Если контракт не является развертываемым, эта строка имеет значение "0x".

  • linkReferences: Объект ссылок на ссылки байткода, возвращенный solc. Если контракт не нуждается в ссылках, это значение содержит пустой объект.

  • deployedLinkReferences: Объект ссылок на ссылки развернутого байткода, возвращаемый solc. Если контракт не нуждается в ссылках, это значение содержит пустой объект.

Файл отладки содержит всю информацию, необходимую для воспроизведения компиляции и отладки контрактов: сюда входят исходные входные и выходные данные solc, а также версия solc, использованная для компиляции.

— Информационные файлы сборки

Hardhat оптимизирует компиляцию путем компиляции минимально возможного набора файлов за один раз. Файлы, которые компилируются вместе, имеют одинаковые входные и выходные данные solc. Поскольку наличие этой информации в каждом отладочном файле было бы значительным расточительством, она дублируется в информационных файлах сборки, которые размещаются в artifacts/build-info. Каждый файл отладки контракта содержит относительный путь к своему файлу информации о сборке, а каждый файл информации о сборке содержит входные данные solc, выходные данные solc и используемую версию solc.

Вы не должны взаимодействовать с этими файлами напрямую.

— Чтение артефактов

В [HRE] есть объект artifacts с вспомогательными методами. Например, вы можете получить список с путями ко всем артефактам, вызвав hre.artifacts.getArtifactPaths().

Вы также можете прочитать артефакт, используя имя контракта, вызвав hre.artifacts.readArtifact("Bar"), который вернет содержимое артефакта для контракта Bar. Это сработает, только если во всем проекте только один контракт с именем Bar; если их два, то будет выдана ошибка. Чтобы исключить этот случай, вам придется использовать полное квалифицированное имя контракта: hre.artifacts.readArtifact("contracts/Bar.sol:Bar").

— Структура каталога

Каталог artifacts/ имеет структуру, которая повторяет исходную структуру каталогов контрактов. Например, если ваши контракты выглядят следующим образом:

contracts
├── Foo.sol
├── Bar.sol
└── Qux.sol
Вход в полноэкранный режим Выход из полноэкранного режима

то структура каталога артефактов будет выглядеть следующим образом:

artifacts
└── contracts
    ├── Foo.sol
    │   ├── Foo.json
    │   ├── Foo.dbg.json
    │   ├── Foo2.json
    │   └── Foo2.dbg.json
    ├── Bar.sol
    │   ├── Bar.json
    │   └── Bar.dbg.json
    └── Qux.sol
        ├── Foo.json
        └── Foo.dbg.json
Вход в полноэкранный режим Выход из полноэкранного режима

Каждый файл Solidity в вашем источнике получит каталог в структуре артефактов. Каждый из этих каталогов содержит один файл артефактов (.json) и один файл отладки (.dbg.json) для каждого контракта в этом файле. Foo.sol, например, содержит два контракта внутри.

Два файла Solidity могут иметь контракты с одинаковыми именами, и эта структура позволяет это сделать.

— hardhat Tutorials , hardhat 教程

CN 中文 Github hardhat 教程 : github.com/565ee/hardhat_CN

CN 中文 CSDN hardhat 教程 : blog.csdn.net/wx468116118

EN 英文 Github hardhat Tutorials : github.com/565ee/hardhat_EN

— Контакт 联系方式

Домашняя страница : 565.ee

GitHub : github.com/565ee

Электронная почта : 565.eee@gmail.com

Facebook : facebook.com/565.ee

Twitter : twitter.com/565_eee

Telegram : t.me/ee_565

Оцените статью
devanswers.ru
Добавить комментарий