July 18, 2022

Hardhat or Truffle: какой инструмент наиболее подходящий для начинающих

Если вы только начинаете свою карьеру в мире блокчейна и задаетесь вопросом, что выбрать: Hardhat или Truffle, то вы попали по адресу! В этой статье мы рассмотрели оба этих фреймворка и далее провели небольшое сравнение.

Hardhat Tools

Hardhat - это среда разработки Ethereum для разработчиков, которая позволяет выполнять частые задачи.

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

Давайте рассмотрим эти возможности по порядку.

Hardhat Network

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

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

Plugins

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

В разработке Hardhat используется 30+ плагинов, поэтому они считаются основой Hardhat.

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

  • nomiclabs/hardhat-ethers: Позволяет разработчикам внедрять ethers.js в Hardhat Runtime Environment.
  • nomiclabs/hardhat-waffle: Позволяет добавить провайдер, совместимый с Waffle, Hardhat Runtime Environment.
  • nomiclabs/hardhat-etherscan: Автоматически проверяет контракты на Etherscan.
  • hardhat-gas-reporter: Gas reporter помогает подтвердить использование газа на единичный тест и среднее использование газа на метод.

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

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

Hardhat предоставляет отличную документацию для понимания методов тестирования с помощью Hardhat.

Truffle Tools

Как и Hardhat, Truffle — это среда разработки, относящаяся к блокчейну Эфируима.

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

Для разработки dapps девсы используют Truffle Suite.

Truffle Suite — это экосистема Web 3 разработки, состоящая из 3х разных инструментов: Truffle, Ganache, и Drizzle:

  • Truffle — это среда разработки, использующая EVM для разработки смарт-контрактов.
  • Ganache — это инструмент, используемый для создания собственного локального блокчейна Ethereum, который можно использовать для развертывания и тестирования смарт-контрактов.
    Кроме того, Ganache позволяет разработчикам избежать ненужных платежей за газ в процессе разработки.
  • Drizzle — это набор библиотек для фронтенда, основой которого является магазин Redux.Благодаря этому разработка фронтенда становится намного проще.

Truffle предлагает несколько различных функций, таких как:

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

Миграция и развертывание с помощью скриптов

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

Мощная интерактивная консоль

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

(A) Truffle Console: Базовая интерактивная консоль, подключаемая к любому клиенту Ethereum. Чтобы запустить консоль, используйте команду truffle console. Когда вы загрузите консоль, вы сразу же увидите следующее приглашение:

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

(B) Truffle Develop: Интерактивная консоль, которая также запускает блокчейн разработки. Она служит той же цели, что и hardhat node.

Вы можете легко запустить Truffle Develop, используя командуtruffle develop.

Truffle Dashboard

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

Какой инструмент наиболее полезный?

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

К счастью, Hardhat ввел в Solidity так называемую функцию console.log.

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

Вот как это выглядит:

Добавьтеconsole.log внутрь функции

Лог будет отображаться при запуске тестов:

EVM, созданный hardhat, специально поддерживает эту функцию и, следовательно, является родным для Hardhat Node. Эта возможность сама по себе является большим плюсом для Hardhat.

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

Библиотеки (Ethersjs and Web3)

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

Вы также можете использовать Etherjs в Truffle, но это считается более сложным и трудно реализуемым.

Хотя ethers-js и web3-js похожи, большинство разработчиков используют ethers-js по умолчанию.

Local Ethereum Network Node

Hardhat comes inbuilt with Hardhat Node. However, it does not have a GUI for developers to see account info in real-time.

Truffle, on the other hand, uses Ganache which has to be set up separately. However, it comes with both a CLI and a GUI version allowing flexibility for the developer.

If you prefer the GUI you should choose Ganache.

Развертывание

Для развертывания контракта Hardhat использует базовые скрипты Js, поэтому с ним легче начать работу.

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

Но за простоту начала работы с развертыванием hardhat определенно берет приз.

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

Для выполнения различных тестов и Truffle, и Hardhat используют библиотеку Chai и Mocha в качестве фреймворка для тестирования, но hardhat также включает waffle. Они оба сильны, когда дело доходит до тестирования.

Статистика

До появления Hardhat самым популярным фреймворком для тестирования смарт-контрактов был Web3.

Сейчас можно увидеть, что тенденция меняется со временем, и Hardhat приобрел большую популярность по сравнению с Truffle.

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

Помощь комьюнити

Сообщество Truffle на Github довольно активно и полезно, в то время как комьюнити Hardhat взаимодействует на сервере Discord. Следует отметить, что Truffle поддерживается компанией Consensys, поэтому вы можете рассчитывать на "службу поддержки". Hardhat также разрабатывается и управляется организацией Nomic Foundation и имеет удивительную и не менее хорошую систему поддержки через свой сервер Discord.

Заключение

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

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

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

Не забудьте подписаться на наш канал для разработчиков и хакатонщиков — Definition. Если вы еще не сделали этого:)