Купить крипто
Рынки
Спот
ФьючерсыBTC
Сбережения
Центр событий
Хаб наград
Еще
Фестиваль с 0 комиссией
Hardhat: Что такое Hardhat?Hardhat — это среда разработки с открытым исходным кодом для написания, компиляции, тестирования, отладки, развертывания и верификации смарт-контрактов Ethereum.Она предоставляет разHardhat: Что такое Hardhat?Hardhat — это среда разработки с открытым исходным кодом для написания, компиляции, тестирования, отладки, развертывания и верификации смарт-контрактов Ethereum.Она предоставляет раз

Hardhat

2026/10/14 17:27
#Advanced
Humanity
H$0.05638+1.32%
PX
PX$0.0117-2.50%
Treehouse
TREE$0.03609+0.47%
NODE
NODE$0.005203+0.01%
INIT
INIT$0.12402-0.87%

Что такое Hardhat?

Hardhat — это среда разработки с открытым исходным кодом для написания, компиляции, тестирования, отладки, развертывания и верификации смарт-контрактов Ethereum.

Она предоставляет разработчикам криптовалют структурированное рабочее пространство для создания приложений, работающих на виртуальной машине Ethereum, или EVM.

Hardhat — это не блокчейн, криптовалюта, кошелек, токен или язык программирования смарт-контрактов.

Это инструмент для разработчиков, который координирует работу компиляторов, средств тестирования, симулируемых блокчейн-сетей, систем развертывания, библиотек, скриптов и плагинов.

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

Разработчики могут тестировать поведение контрактов локально до отправки транзакций в публичный блокчейн, где ошибки могут стать необратимыми и дорого обойтись.

Hardhat поддерживается Nomic Foundation для сообщества разработчиков Ethereum.

Текущая версия Hardhat

Hardhat 3 — текущая основная версия среды разработки.

По состоянию на 13 июля 2026 года последним релизом с тегом является Hardhat 3.9.1, выпущенный 2 июля 2026 года.

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

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

Зависимости для разработки следует фиксировать, а не автоматически принимать каждый последующий мажорный релиз.

Зачем Hardhat используют в разработке криптопродуктов

Смарт-контракты могут управлять токенами, казначействами протоколов, кредитными позициями, системами стейкинга, децентрализованным управлением и другими ценными криптоактивами.

Ошибка в коде может заморозить средства, разрешить несанкционированные переводы, привести к неверному расчету балансов или создать условия для экономической эксплуатации уязвимости.

Hardhat помогает выявлять проблемы до развертывания контрактов в действующем блокчейне.

Среда может компилировать исходный код Solidity, запускать автоматические тесты, моделировать транзакции, показывать трассировки исполнения, оценивать использование газа и развертывать контракты по повторяемым процедурам.

Она также помогает унифицировать структуру проектов и автоматизировать рабочие процессы с помощью скриптов и систем непрерывной интеграции.

Hardhat улучшает процесс разработки, но не гарантирует безопасность смарт-контракта.

Для криптоприложений, предназначенных для промышленной эксплуатации, по-прежнему необходимы независимая проверка, моделирование угроз, тестирование, мониторинг и тщательное управление доступом.

Архитектура Hardhat 3

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

Базовая среда загружает конфигурацию проекта, управляет задачами, устанавливает соединения с блокчейнами и предоставляет скриптам и тестам инструменты разработки.

Плагины могут добавлять библиотеки контрактов, инструменты проверок, функции развертывания, сервисы верификации, средства запуска тестов, поддержку аппаратной подписи и другие возможности.

Благодаря модульной архитектуре проект может устанавливать только необходимые ему инструменты.

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

Разработчикам следует документировать все необходимые плагины и фиксировать совместимые версии в файлах конфигурации проекта.

Среда исполнения Hardhat

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

Ее часто сокращенно называют HRE.

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

Hardhat 3 позволяет программно создавать несколько независимых сред исполнения.

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

В документации по среде исполнения Hardhat объясняется, как среда связывает конфигурацию проекта с плагинами и рабочими процессами разработки.

Структура проекта Hardhat

Типичный проект Hardhat — это пакет npm с файлом конфигурации проекта и несколькими каталогами для разработки.

Основной файл конфигурации обычно называется

hardhat.config.ts
.

В каталоге

contracts
обычно хранятся смарт-контракты на Solidity.

В каталоге

test
находятся автоматические тесты на Solidity или TypeScript.

В каталоге

ignition
размещаются модули развертывания для Hardhat Ignition.

В каталоге

scripts
хранятся пользовательские скрипты автоматизации.

В проект также входит файл

package.json
, в котором указаны Hardhat, плагины, библиотеки и другие зависимости для разработки.

Последовательная структура проекта упрощает тестирование, проверку кода, адаптацию новых участников и автоматизированное развертывание.

Установка Hardhat

Hardhat обычно устанавливают как зависимость для разработки в проекте JavaScript или TypeScript.

Для текущей официальной настройки требуется Node.js версии 22.13.0 или новее.

Новый проект можно инициализировать командой

npx hardhat --init
.

В процессе инициализации могут быть созданы примеры контрактов, тесты, конфигурация, скрипты и модули развертывания.

Разработчикам следует использовать поддерживаемую версию Node.js, поскольку неподдерживаемая среда может привести к ошибкам установки или нестабильной работе.

В официальной политике поддержки Node.js указано, какие линейки релизов Node.js поддерживаются в Hardhat 3.

Конфигурация Hardhat

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

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

В файлах конфигурации Hardhat 3 по умолчанию используются модули ECMAScript.

Если это поддерживается соответствующей средой, скрипты и тесты могут использовать и другие форматы модулей.

Конфигурацию необходимо тщательно проверять, поскольку разные настройки компилятора или оптимизатора могут создавать разный развернутый байт-код.

Контракт следует верифицировать с использованием той же версии компилятора и тех же настроек, что использовались для создания развернутого кода.

Переменные конфигурации и секреты

Для разработки криптоприложений часто требуются приватные ключи, адреса RPC-сервисов и другие конфиденциальные значения.

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

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

В руководстве Hardhat по переменным конфигурации объясняется, как проверять, форматировать и передавать значения с помощью внешних систем хранения.

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

Шифрование не защищает слабый компьютер или украденный пароль.

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

Компиляция контрактов Solidity

Hardhat компилирует исходный код Solidity в байт-код, который может выполняться в EVM.

При компиляции также создается двоичный интерфейс приложения, или ABI.

ABI описывает вызываемые функции контракта, события, ошибки и типы параметров.

Кошельки, скрипты, интерфейсные приложения и другие контракты используют ABI для кодирования и декодирования взаимодействий.

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

Разработчикам следует избегать ненужного разнообразия версий компилятора, поскольку оно усложняет проверку и верификацию.

Компилятор следует настраивать явно, а не полагаться на предполагаемые настройки по умолчанию.

Артефакты сборки Hardhat

После компиляции Hardhat создает артефакты с информацией о каждом контракте.

Артефакт может включать название контракта, ABI, байт-код создания, развернутый байт-код, ссылки на библиотеки и информацию об исходном коде.

Hardhat 3 также по умолчанию создает объявления TypeScript для типизированных артефактов.

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

В спецификации артефактов Hardhat описана структура артефактов контрактов и сведений о сборке.

Артефакты следует создавать на основе проверенного исходного кода и воспроизводимых настроек компилятора.

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

Профили сборки

Hardhat 3 поддерживает профили сборки с разными настройками компилятора для разных рабочих процессов.

Профиль разработки может быть оптимизирован для быстрой компиляции и подробной отладочной информации.

Профиль промышленной сборки может включать точные настройки оптимизатора, предназначенные для развертывания.

Профиль покрытия может изменять байт-код, чтобы можно было измерить выполненные участки кода.

Профили сборки избавляют от необходимости многократно переписывать одну конфигурацию.

Тем не менее команде необходимо точно указывать, какой профиль использовался для каждого развертывания.

Развертывание контракта с непредусмотренным профилем может изменить байт-код, расход газа или результаты верификации.

Симулируемые блокчейн-сети

Hardhat включает симулируемые сети, которые локально работают для разработки и тестирования.

Такая сеть позволяет развертывать контракты и отправлять транзакции без расходования реальной криптовалюты.

Она может создавать пополненные тестовые аккаунты, сразу майнить блоки, изменять временные метки и балансы, имитировать действия аккаунтов и сбрасывать состояние.

Эти возможности позволяют тестировать необычные условия, которые сложно или дорого воспроизвести в публичном блокчейне.

В Hardhat 3 используется симулируемая среда исполнения на базе EDR, написанная на Rust.

Эта среда предназначена для быстрого тестирования, подробных сообщений об ошибках, трассировок исполнения и управления состоянием блокчейна.

Локальная симуляция полезна, но не может в точности воспроизвести все реальные условия работы сети.

Мультичейн-симуляция

Hardhat 3 разработан для поддержки создания приложений под различные типы EVM-совместимых сетей.

В проекте можно настроить несколько симулируемых сетей с разным поведением.

Согласно официальной документации, полноценная симуляция поддерживается для Ethereum Mainnet и OP Mainnet; для других совместимых сред доступен общий тип сети.

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

Разработчикам следует проводить тестирование с учетом фактических правил исполнения каждой сети, в которой будет развернут контракт.

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

Менеджер сетей Hardhat

Менеджер сетей Hardhat управляет подключениями к симулируемым и внешним блокчейн-сетям.

В Hardhat 3 задачи и скрипты могут одновременно создавать несколько подключений к сети.

Это полезно для кроссчейн-приложений, тестирования мостов, координации развертывания и приложений, которые считывают данные из одной сети, а записывают в другую.

Названия сетей в конфигурации являются метками подключений, а не доказательством того, что подключение ведет к ожидаемому блокчейну.

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

В руководстве по управлению сетями объясняется, как Hardhat подключается к симулируемым сетям и удаленным конечным точкам JSON-RPC.

Форк блокчейн-сети

Форк сети позволяет локальной симуляции Hardhat копировать состояние выбранного блока публичной сети.

После этого локальная среда может взаимодействовать с уже существующими контрактами, балансами, аккаунтами и хранилищем, не изменяя реальную сеть.

Тестирование на форке полезно для проверки интеграций протоколов, сценариев ликвидации, изменений управления, поведения токенов и обновления контрактов.

Если важны воспроизводимые результаты, форк следует привязывать к конкретному номеру блока.

Тестирование на неопределенном последнем блоке может давать разные результаты по мере изменения состояния публичной сети.

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

Тестирование на форке нельзя путать с разрешением контролировать реальные аккаунты или активы.

Тестирование смарт-контрактов с Hardhat

Автоматическое тестирование — одна из важнейших функций Hardhat.

Hardhat 3 поддерживает тесты непосредственно на Solidity и интеграционные тесты на TypeScript.

Оба подхода можно использовать в одном проекте.

Тесты на Solidity полезны для проверки поведения непосредственно на уровне контракта, поскольку выполняются в среде EVM.

Тесты на TypeScript подходят для проверки процессов работы приложений, нескольких аккаунтов, офчейн-логики, внешних данных и более широкого интеграционного поведения.

В официальном обзоре тестирования Hardhat объясняются преимущества обоих подходов.

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

Тесты на Solidity

Hardhat распознает тестовые файлы Solidity по поддерживаемым соглашениям для каталогов и имен файлов.

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

В тестах на Solidity можно использовать чит-коды для изменения среды тестирования.

Чит-коды позволяют изменить вызывающий аккаунт, перемотать время вперед, изменить балансы, ожидать события или отката транзакции, а также проверять хранилище.

Эти возможности упрощают тестирование условий, для которых иначе потребовалось бы долго ждать или выполнять сложную настройку.

Чит-коды влияют на симулируемую среду тестирования и не являются функциями, доступными обычным пользователям в публичном блокчейне.

Фазз-тестирование

При фазз-тестировании функция контракта многократно выполняется с использованием сгенерированных входных значений.

Такой подход позволяет находить крайние случаи, не предусмотренные разработчиком в вручную составленных примерах.

Расчет токена может работать для обычных значений, но давать сбой при нуле, максимальном целом числе, на границе округления или при неожиданном сочетании состояний.

В фазз-тестах следует задавать реалистичные предположения, чтобы сгенерированные значения оставались осмысленными.

Успешное прохождение фазз-тестов не доказывает безопасность контракта, поскольку проверяются только заданные входные значения и свойства.

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

Тестирование инвариантов

Инвариант — это свойство, которое должно сохраняться при множестве возможных последовательностей действий.

Например, протокол кредитования может требовать, чтобы общий отраженный в учете долг совпадал с суммой долгов пользователей.

Модель токена может требовать, чтобы общее предложение равнялось сумме всех учитываемых балансов.

В автоматизированной системе маркетмейкинга определенные соотношения резервов могут всегда оставаться действительными.

При тестировании инвариантов можно генерировать последовательности транзакций и проверять, сохраняется ли нужное свойство.

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

Тесты на TypeScript

Тесты на TypeScript взаимодействуют с контрактами через библиотеки для разработки и подключения к блокчейну.

В рекомендуемой настройке Hardhat 3 используется встроенный тестовый модуль Node.js вместе с viem.

Официальные плагины также поддерживают настройку на основе ethers и Mocha.

Тесты на TypeScript могут координировать работу нескольких контрактов, аккаунтов, файлов, API и сетевых подключений.

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

Следует по возможности избегать зависимости тестов от работающих внешних сервисов: их недоступность может сделать результаты ненадежными.

Покрытие кода

Покрытие кода показывает, какие инструкции, ветви, функции и пути контрактов выполнялись во время тестирования.

В Hardhat 3 встроена функция измерения покрытия кода Solidity.

Проверку покрытия можно запросить с помощью параметра тестирования

--coverage
.

В руководстве Hardhat по покрытию кода объясняется, что при проверке инструмент добавляет в контракты специальные маркеры.

Инструментированный байт-код отличается от обычного байт-кода промышленной версии и может потреблять больше газа.

Высокое покрытие не доказывает, что тесты содержат полезные проверки или что контракт безопасен.

Тест может выполнить каждую строку кода, но не проверить важнейший экономический результат.

Статистика и снимки использования газа

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

Параметр

--gas-stats
может выводить статистику использования газа для поддерживаемых тестов.

Снимки газа позволяют записывать ожидаемые значения и выявлять неожиданные изменения между версиями кода.

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

Результаты измерения газа в симулируемых сетях могут не учитывать все расходы пользователя в промышленной сети.

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

Оптимизация газа не должна снижать безопасность проверки данных, авторизации или учета.

Отладка с Hardhat

Hardhat может отображать ошибки Solidity, декодированные журналы, стек-трейсы и трассировки исполнения.

Трассировка исполнения показывает последовательность вызовов и операций, связанных с транзакцией.

В руководстве Hardhat по трассировкам исполнения объясняется, как настройки подробности управляют объемом отладочного вывода.

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

Трассировки особенно полезны при работе с протоколами, в которых используются прокси, обратные вызовы, хуки, переводы токенов и несколько связанных контрактов.

Отладочные данные могут содержать адреса, параметры и другую конфиденциальную информацию о разработке, поэтому в общих журналах с ними следует обращаться осторожно.

Вывод сообщений в консоль Solidity

Hardhat поддерживает ориентированный на разработку вывод сообщений из кода Solidity в симулируемых средах.

Разработчики могут выводить значения во время выполнения теста или локальной транзакции.

Это упрощает проверку состояния, вызывающих аккаунтов, балансов и промежуточных расчетов.

Не следует оставлять отладочный вывод в промышленном коде без веской причины.

Вспомогательные средства для логирования могут влиять на байт-код, размер контракта и поведение при развертывании.

Перед выпуском временные отладочные сообщения следует заменить автоматическими тестами и проверками.

Задачи Hardhat

Задача Hardhat — это команда с именем, которая автоматизирует часть рабочего процесса разработки.

Задача может компилировать контракты, проверять аккаунты, создавать отчеты, управлять развертываниями или выполнять специфичную для проекта операцию.

Плагины могут регистрировать задачи, доступные через интерфейс командной строки.

Пользовательские задачи должны проверять сеть и введенные данные, прежде чем отправлять транзакции.

Опасная задача не должна незаметно использовать первый доступный аккаунт или по умолчанию выбирать промышленную сеть.

Понятные названия команд и запросы на подтверждение снижают риск случайного развертывания или перевода средств.

Скрипты Hardhat

Скрипты Hardhat — это программы на TypeScript или JavaScript, использующие среду исполнения и установленные плагины.

Скрипт может развертывать контракты, вызывать функции, читать состояние, передавать административные роли или создавать записи о развертывании.

Скрипты гибки в использовании, но требуют от разработчика большей ответственности, чем структурированная система развертывания.

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

Скрипты следует разрабатывать так, чтобы они выявляли уже существующее состояние и не повторяли опасные операции.

В скриптах для промышленной среды следует записывать хеши транзакций, развернутые адреса, параметры, идентификаторы сетей и результаты.

Hardhat Ignition

Hardhat Ignition — официальная декларативная система развертывания для проектов Hardhat.

Разработчики описывают необходимые экземпляры контрактов и операции в модулях развертывания.

Ignition анализирует эти определения и определяет порядок выполнения развертывания.

Система может параллельно отправлять независимые транзакции, восстанавливаться после некоторых ошибок и продолжать прерванные развертывания.

В руководстве Hardhat Ignition по развертыванию объясняется, как контракты и вызовы после развертывания объединяются в модули.

Декларативное развертывание снижает некоторые риски ручной работы, но логику модулей и параметры все равно нужно тщательно проверять.

Если описание развертывания неверно, автоматизированная система может последовательно повторять одну и ту же ошибку.

Развертывание смарт-контрактов

При развертывании в сеть блокчейна отправляются транзакции для создания контрактов.

Транзакция содержит скомпилированный байт-код для создания контракта и параметры конструктора.

После подтверждения контракт получает адрес, определяемый правилами создания контрактов в блокчейне.

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

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

Сразу после развертывания также следует проверить административные роли, владение, разрешения на обновление, адреса казначейства и средства экстренного контроля.

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

Верификация смарт-контрактов

Верификация смарт-контракта связывает развернутый байт-код с заявленным исходным кодом и настройками компилятора.

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

В Hardhat есть официальный плагин для верификации.

В руководстве Hardhat по верификации объясняется, что она подтверждает создание развернутого байт-кода на основе указанного исходного кода.

Верификация не доказывает, что исходный код безопасен, справедлив или не содержит скрытых экономических рисков.

Параметры конструктора, связанные библиотеки, настройки оптимизатора, метаданные и версии компилятора должны соответствовать развертыванию.

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

Плагины Hardhat

Плагины расширяют возможности Hardhat для разработки.

Официальные плагины поддерживают viem, ethers, проверки, вспомогательные сетевые инструменты, верификацию контрактов, развертывание через Ignition, зашифрованное хранение конфигурации, аппаратные подписанты и запуск тестов.

В официальном каталоге плагинов перечислены плагины, поддерживаемые Nomic Foundation.

Плагины сообщества могут предоставлять полезные функции, но не обязательно проходят такой же процесс проверки или поддержки.

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

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

Безопасность зависимостей

Проект Hardhat зависит от пакетов Node.js, которые могут выполнять код во время установки, тестирования или развертывания.

Скомпрометированная зависимость может попытаться похитить переменные среды, приватные ключи, исходный код или данные для развертывания.

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

Развертывание в рабочей сети следует выполнять в чистой среде с минимальным набором программ и проверенными версиями пакетов.

Автоматические обновления зависимостей нельзя принимать без тестирования и проверки.

Популярность пакета не гарантирует безопасность каждого его релиза.

Hardhat и приватные ключи

При развертывании или вызове контрактов во внешней сети Hardhat может потребоваться доступ к аккаунту, с которого выполняется подписание.

Хранение приватного ключа в открытом виде в файле конфигурации создает серьезный риск безопасности.

На тестовых аккаунтах разработки должны находиться только тестовые средства.

Ключи для промышленной среды следует защищать зашифрованным хранением, аппаратной подписью, ограниченными разрешениями или процедурами мультиподписи.

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

После развертывания административные права можно передать более защищенному аккаунту.

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

Hardhat и аппаратные кошельки

Аппаратный кошелек может подписывать транзакции развертывания или администрирования Hardhat с помощью совместимого плагина и рабочего процесса.

Это позволяет не хранить приватный ключ на компьютере для разработки.

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

Сложные операции развертывания контрактов может быть трудно интерпретировать на небольшом экране устройства.

Аппаратный кошелек не может определить вредоносность развертывания только на том основании, что транзакция создана в Hardhat.

Исходный код, скомпилированные артефакты, аргументы конструктора и данные транзакции все равно нужно проверять независимо.

Распространенные ошибки безопасности при работе с Hardhat

Одна из распространенных ошибок — включение приватного ключа или фразы восстановления в исходный репозиторий.

Другая ошибка — развертывание не в том блокчейне из-за доверия к метке сети без проверки идентификатора сети.

Третья ошибка — использование разных настроек компилятора при тестировании, развертывании и верификации.

Четвертая ошибка — тестирование только успешных операций без проверки неавторизованных вызовов и условий отказа.

Пятая ошибка — зависимость от форка изменяющегося состояния блокчейна без фиксации номера блока.

Шестая ошибка — установка непроверенных плагинов, которые получают доступ к секретам для развертывания.

Седьмая ошибка — предположение, что полное покрытие кода равнозначно аудиту безопасности.

Восьмая ошибка — постоянное предоставление аккаунту развертывания контроля над всеми функциями протокола.

Девятая ошибка — отсутствие проверки развернутых адресов и владения после завершения развертывания.

Десятая ошибка — перевод реальных средств на созданные локально адреса разработки, приватные ключи которых не были защищены.

Рекомендации по работе с Hardhat

Фиксируйте версии Hardhat, плагинов, библиотек и компилятора в файлах зависимостей проекта.

Используйте поддерживаемую версию Node.js и включите файл блокировки пакетов в репозиторий.

Храните приватные ключи и конфиденциальные адреса сервисов за пределами исходного репозитория.

Используйте отдельные аккаунты для локального тестирования, публичной тестовой сети, развертывания и долгосрочного администрирования.

Пишите модульные и интеграционные тесты, фазз-тесты и тесты инвариантов, контроля доступа и условий отказа.

Проверяйте покрытие кода, помня, что оно измеряет выполнение, а не корректность.

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

Перед развертыванием проверяйте изменения расхода газа и размера контракта.

После развертывания верифицируйте исходный код и сохраняйте сведения о сборке.

Для контрактов, управляющих значительными криптоактивами, проводите независимую проверку безопасности.

Ограничения Hardhat

Hardhat не может доказать безопасность экономической модели контракта.

Он не может гарантировать, что набор тестов охватывает все пути атаки.

Он не может идеально воспроизвести все условия рабочей сети.

Он не может помешать разработчику подписать транзакцию не тем аккаунтом или в неправильной сети.

Он не может защитить небрежно хранящийся в проекте приватный ключ.

Он не может сделать надежной небезопасную стороннюю зависимость.

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

Hardhat наиболее эффективен как часть более широкого процесса безопасной разработки.

FAQ

Что такое Hardhat в криптовалюте?

Hardhat — это среда разработки для компиляции, тестирования, отладки, развертывания и верификации смарт-контрактов Ethereum и EVM-совместимых сетей.

Является ли Hardhat блокчейном?

Нет, Hardhat — это инструмент разработки программного обеспечения, а не блокчейн-сеть.

Является ли Hardhat криптовалютой?

Нет, Hardhat не является монетой или токеном.

Кто разрабатывает Hardhat?

Hardhat разрабатывает Nomic Foundation для сообщества разработчиков Ethereum.

Какова текущая основная версия Hardhat?

Текущая основная линейка релизов — Hardhat 3.

Какова последняя версия Hardhat?

По состоянию на 13 июля 2026 года последним релизом с тегом является Hardhat 3.9.1.

Какие языки программирования используются в Hardhat?

В проектах Hardhat обычно используют Solidity для смарт-контрактов и TypeScript или JavaScript для конфигурации, скриптов и интеграционных тестов.

Что компилирует Hardhat?

Hardhat компилирует исходный код Solidity в байт-код EVM, ABI, артефакты и связанные сведения о сборке.

Включает ли Hardhat локальный блокчейн?

Hardhat включает симулируемые блокчейн-сети для локальной разработки и автоматического тестирования.

Поддерживает ли Hardhat тесты на Solidity?

Да, Hardhat 3 поддерживает тесты непосредственно на Solidity и тесты на TypeScript.

Может ли Hardhat выполнять фазз-тестирование?

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

Может ли Hardhat тестировать инварианты контрактов?

Да, разработчики могут задавать свойства, которые должны сохраняться при сгенерированных последовательностях действий с контрактом.

Что такое Hardhat Ignition?

Hardhat Ignition — официальная декларативная система для описания, выполнения и возобновления развертываний смарт-контрактов, а также записи их результатов.

Может ли Hardhat развертывать контракты в публичных сетях?

Да, Hardhat может подключаться к внешней конечной точке JSON-RPC и отправлять подписанные транзакции для развертывания.

Нужна ли настоящая криптовалюта для локального тестирования в Hardhat?

Нет, в симулируемых сетях используются тестовые аккаунты и балансы, не имеющие реальной стоимости.

Что такое форк сети в Hardhat?

Форк сети копирует состояние блокчейна из выбранного блока публичной сети в локальную симуляцию для тестирования.

Может ли Hardhat верифицировать смарт-контракт?

Да, официальный плагин верификации может отправлять исходный код и сведения о сборке в поддерживаемые сервисы верификации.

Доказывает ли верификация контракта его безопасность?

Нет, верификация связывает исходный код с развернутым байт-кодом, но не доказывает безопасность или экономическую надежность логики.

Означает ли высокое покрытие кода, что контракт безопасен?

Нет, высокое покрытие показывает только, что код выполнялся во время тестов, но не доказывает, что проверялись правильные свойства.

Может ли Hardhat оценить расход газа?

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

Может ли Hardhat подключаться к нескольким блокчейн-сетям?

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

Безопасно ли хранить приватный ключ в конфигурации Hardhat?

Нет, приватные ключи следует загружать через защищенную внешнюю систему, а не хранить в репозитории в открытом виде.

Можно ли использовать с Hardhat аппаратный кошелек?

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

Безопасны ли все плагины Hardhat?

Нет, плагины могут получать доступ к конфиденциальным ресурсам проекта, поэтому перед установкой их следует проверять.

Может ли Hardhat заменить аудит смарт-контракта?

Нет, Hardhat помогает разрабатывать и тестировать контракты, но не заменяет независимую оценку безопасности.

Зачем привязывать тест на форке к фиксированному блоку?

Фиксация номера блока сохраняет скопированное состояние блокчейна неизменным и позволяет воспроизводить результаты будущих тестов.

Может ли Hardhat предотвратить развертывание не в той сети?

Hardhat позволяет добавить проверки, но разработчики все равно должны проверять идентификатор сети, аккаунт, конечную точку и параметры развертывания.

Заключение

Hardhat — это комплексная среда разработки программного обеспечения для смарт-контрактов Ethereum и EVM-совместимых сетей.

Она объединяет в рамках одной структуры проекта компиляцию, артефакты, симулируемые сети, тестирование, отладку, развертывание, верификацию, скрипты, задачи и плагины.

Hardhat 3 — текущая основная версия. В ней появились тесты на Solidity, мультичейн-симуляция, типизированные артефакты, профили сборки, измерение покрытия кода и более гибкое управление сетями.

Разработчики могут тестировать контракты в Hardhat локально, прежде чем расходовать реальную криптовалюту или подвергать риску активы пользователей.

Hardhat Ignition предоставляет структурированную систему развертывания, которая может продолжить прерванную работу и записать состояние развертывания.

Тестирование на форке позволяет воспроизводить состояние публичного блокчейна и проверять взаимодействие с существующими контрактами.

Трассировки исполнения, отчеты о покрытии, фазз-тесты, проверки инвариантов и статистика использования газа помогают выявлять множество технических проблем до развертывания.

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

Приватные ключи следует хранить за пределами исходных репозиториев и защищать надежными процедурами подписания и контроля доступа.

Плагины и зависимости пакетов необходимо проверять, поскольку они могут получить доступ к конфиденциальным ресурсам разработки.

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

Для разработчиков криптопродуктов Hardhat — это мощная рабочая среда, помогающая снизить риски разработки смарт-контрактов, а не замена тщательной инженерной работе и проверке безопасности.
BTC ETFs See $679M in Outflows
BTC ETFs See $679M in OutflowsBTC ETFs See $679M in Outflows
Citi sees BTC at $113K. What do institutions see?

В тренде

Трендовые криптовалюты, которые в настоящее время привлекают значительное внимание рынка

Недавно добавленные

Криптовалюты недавно внесенные в листинг и доступные для торговли