— введение
— Информационные файлы сборки
— Чтение артефактов
— Структура каталога
— 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