117 хардхат ethereum : среда выполнения хардхата (HRE)

— введение

— Использование HRE

— глобальные переменные

— Доступ к HRE извне задачи

— Расширение HRE

— учебники по hardhat , hardhat 教程

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

— представить

Среда выполнения Hardhat, или сокращенно HRE, — это объект, содержащий все функциональные возможности, которые Hardhat раскрывает при выполнении задачи, теста или сценария. В действительности, Hardhat и есть HRE.

Когда вы требуете Hardhat (const hardhat = require("hardhat")), вы получаете экземпляр HRE.

Во время инициализации конфигурационный файл Hardhat, по сути, составляет список того, что должно быть добавлено в HRE. Сюда входят задачи, конфигурации и плагины. Затем, когда выполняются задачи, тесты или сценарии, HRE всегда присутствует и доступен для доступа ко всему, что в нем содержится.

HRE играет роль централизованной координации всех компонентов Hardhat. Эта архитектура позволяет подключаемым модулям внедрять функциональность, которая становится доступной везде, где есть доступ к HRE.

— Использование HRE

По умолчанию HRE предоставляет вам программный доступ к исполнителю задач и системе конфигурации, а также экспортирует Ethereum-провайдер, совместимый с EIP1193.

Плагины могут расширять HRE. Например, hardhat-ethers добавляет к нему экземпляр Ethers.js, делая его доступным для задач, тестов и скриптов.

— глобальные переменные

Перед запуском задачи, теста или скрипта Hardhat внедряет HRE в глобальную область видимости, превращая все его поля в глобальные переменные. После завершения выполнения задачи эти глобальные переменные удаляются, восстанавливая свое первоначальное значение, если оно у них было.

Не всем нравятся волшебные глобальные переменные, и Hardhat не заставляет вас их использовать. Все можно сделать явно в задачах, тестах и скриптах.

При написании тестов или скриптов вы можете использовать require("hardhat") для импорта HRE. Подробнее об этом можно прочитать в разделе Доступ к HRE извне задачи.

Вы можете импортировать API конфигурации явно при определении задач и получать HRE явно в качестве аргумента ваших действий. Подробнее об этом можно прочитать в разделе Создание собственных задач.

— Доступ к HRE извне задачи

HRE можно использовать из любого файла JavaScript или TypeScript. Для этого достаточно импортировать его с помощью require("hardhat"). Вы можете сделать это, чтобы лучше контролировать рабочий процесс разработки, создавать собственные инструменты или использовать Hardhat с другими инструментами разработки из экосистемы node.js.

Запуск тестов непосредственно с Mocha вместо npx hardhat test можно сделать, явно импортировав в них HRE следующим образом:

const hre = require("hardhat");
const assert = require("assert");

describe("Hardhat Runtime Environment", function () {
  it("should have a config field", function () {
    assert.notEqual(hre.config, undefined);
  });
});
Войти в полноэкранный режим Выйти из полноэкранного режима

Таким образом, тесты, написанные для Hardhat, являются обычными тестами Mocha. Это позволяет запускать их из вашего любимого редактора без необходимости использования какого-либо специфического для Hardhat плагина. Например, вы можете запускать их из Visual Studio Code с помощью Mocha Test Explorer.

— Расширение HRE

HRE предоставляет только основную функциональность, которая необходима пользователям и разработчикам плагинов, чтобы начать строить поверх Hardhat. Его использование для прямого взаимодействия с Ethereum в вашем проекте может оказаться несколько сложнее, чем ожидалось.

Все становится проще, когда вы используете библиотеки более высокого уровня, такие как Ethers.js или ethereum-waffle, но эти библиотеки требуют некоторой инициализации для работы, и это может стать повторяющимся.

Hardhat позволяет вам подключиться к конструкции HRE и расширить ее новой функциональностью. Таким образом, вам придется инициализировать все только один раз, а ваши новые функции или библиотеки будут доступны везде, где используется HRE.

Вы можете сделать это, добавив расширитель HRE в очередь. Этот расширитель — просто синхронная функция, которая получает HRE и добавляет в него поля с вашей новой функциональностью. Эти новые поля также будут добавлены в глобальную область видимости во время выполнения.

Например, добавление экземпляра Web3.js в HRE можно сделать, установив пакет web3 и добавив следующее в ваш hardhat.config.js:

extendEnvironment((hre) => {
  const Web3 = require("web3");
  hre.Web3 = Web3;

  // hre.network.provider is an EIP1193-compatible provider.
  hre.web3 = new Web3(hre.network.provider);
});
Войти в полноэкранный режим Выход из полноэкранного режима

— 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
Добавить комментарий