
Вот некоторые факторы, которые стоит учесть при выборе между Hardhat и Foundry.

Выбор правильных инструментов для разработки dapp влияет не только на производительность, но и на эффективность тестирования, развёртывания и сопровождения смарт-контрактов. В этом блоге мы сравниваем два популярных инструмента среди разработчиков Ethereum dapp: Foundry и Hardhat, уделяя особое внимание требованиям к установке, рабочим процессам тестирования и развёртывания, а также конкретным техническим аспектам и ограничениям.
Hardhat — это хорошо зарекомендовавшая себя среда разработки, созданная для помощи разработчикам в управлении и автоматизации задач, связанных с разработкой смарт-контрактов. Она известна своей гибкостью и адаптивностью. Hardhat включает Hardhat Network — локальную сеть Ethereum, предназначенную для разработки, которая также обеспечивает удобное тестирование, развёртывание и отладку.
Разработчики могут взаимодействовать со смарт-контрактами, развёрнутыми в Hardhat Network, напрямую через интерактивную консоль, что обеспечивает комплексную локальную среду, адаптированную для задач разработки. Hardhat также поддерживает развитую экосистему плагинов, позволяя разработчикам легко расширять его возможности. Однако некоторые пользователи могут счесть первоначальную настройку и конфигурацию Hardhat сложной.
С другой стороны, Foundry — это относительно новый набор инструментов разработки, делающий акцент на скорости и надёжности. Он построен на основе Forge — мощного фреймворка для тестирования, который позволяет разработчикам эффективно писать, компилировать и тестировать смарт-контракты. Одной из ключевых особенностей Foundry являются быстрые возможности тестирования: фреймворк Forge значительно ускоряет время выполнения тестов, позволяя разработчикам быстрее итерировать.
Кроме того, Foundry включает встроенные инструменты отладки, которые помогают разработчикам диагностировать и устранять проблемы непосредственно в среде разработки. Foundry также легко интегрируется с другими инструментами экосистемы Ethereum, обеспечивая более упорядоченный процесс разработки. Однако, будучи относительно новым инструментом, Foundry может уступать более зрелым решениям по уровню поддержки со стороны сообщества.
В этом разделе мы будем использовать базовый смарт-контракт случайной суммы. Этот смарт-контракт будет одинаковым для Hardhat и Foundry, однако настройка проекта будет немного отличаться в зависимости от фреймворка.
Чтобы начать использовать Hardhat, на вашем компьютере должен быть установлен Node.js. После его настройки вы можете создать новый проект Hardhat, выполнив следующие шаги:
Инициализируйте новый проект Node.js:
Установите Hardhat:
npm install --save-dev hardhatСоздайте проект Hardhat:
npx hardhatСледуйте подсказкам для создания базового проекта. Выберите «Create an empty hardhat.config.js» для минимальной настройки. Выберите создание примера проекта. Это настроит среду Hardhat со всеми необходимыми конфигурациями.
Контракт: поместите ваш контракт RandomSum в папку contracts.
Foundry использует Rust, поэтому на вашей системе должен быть установлен Rust. После установки Rust вы можете установить Foundry, выполнив:
Установите Foundry:
Инициализируйте новый проект Foundry:
Контракт: поместите ваш контракт RandomSum в директорию src.
Локальный блокчейн: используйте Hardhat Network, которая запускается автоматически при выполнении таких задач, как тестирование или развёртывание контрактов.
Скрипт развёртывания: создайте скрипт в scripts/deploy.js:
Запуск развёртывания: выполните развёртывание с помощью:
npx hardhat run scripts/deploy.js --network localhostЛокальный блокчейн: Foundry использует anvil — локальный узел Ethereum. Запустите его в отдельном терминале для старта локального узла.
anvilСкрипт развёртывания: используйте команду forge create напрямую:
forge create RandomSum --private-key YOUR_PRIVATE_KEY --rpc-url Конфигурация сети: настройте нужную сеть в hardhat.config.js, добавив раздел с параметрами сети (например, Sepolia).
Развёртывание: запустите тот же скрипт развёртывания, изменив параметр сети на Sepolia.
Конфигурация сети: дополнительный файл конфигурации не требуется; укажите сеть в команде.
Развёртывание: используйте:
forge create RandomSum --private-key YOUR_PRIVATE_KEY --rpc-url Написание тестов: создайте файл тестов в test/randomSum.js на JavaScript:
Запуск тестов: выполните с помощью:
npx hardhat testЕсли у вас возникнут проблемы с тестированием, просто добавьте функцию loadFixture из @nomicfoundation/hardhat-toolbox/network-helpers.
Основные преимущества использования loadFixture:
Создаёт чистую среду для каждого теста, откатываясь к снимку состояния.
Эффективнее повторного развёртывания контрактов для каждого теста.
Позволяет использовать общий код настройки в нескольких тестах.
Написание тестов: добавьте файл тестов в test/RandomSum.t.sol на Solidity:
Запуск тестов: используйте:
forge testВыбор между Hardhat и Foundry зачастую определяется навыками команды и конкретными потребностями проекта. Если команда хорошо владеет JavaScript и нуждается в широкой интеграции с веб-технологиями, Hardhat может оказаться лучшим выбором. Его развитая экосистема плагинов и гибкая среда делают его идеальным для проектов, требующих высокой степени кастомизации и взаимодействия с различными веб-технологиями.
С другой стороны, если проект требует быстрых циклов разработки с фокусом исключительно на смарт-контрактах, Foundry предлагает привлекательный и эффективный вариант, позволяющий оставаться полностью в экосистеме Solidity. Его скорость и встроенная поддержка Solidity могут значительно повысить производительность команд, специализирующихся на разработке смарт-контрактов.
В конечном счёте оба инструмента имеют свои сильные стороны, и правильный выбор зависит от уникальных требований вашего проекта и экспертизы вашей команды.
Переведено ИИ. Может содержать ошибки. Пожалуйста, всегда проверяйте информацию.