Здесь вы найдете информацию о лучших фреймворках для разработчиков смарт-контрактов и блокчейнов, ориентированных на смарт-контракты Ethereum, на всех доступных языках.
Фреймворки для разработки смарт-контрактов облегчают жизнь инженерам, позволяя им развертывать и тестировать смарт-контракты. Мне потребовался ни один день, чтобы протестировать все рекомендованные фреймворки, начиная от Консенсуса и заканчивая веб-сайтом Ethereum, чтобы выяснить, какие из них являются самыми лучшими на 2021 год. Все мои эксперименты с платформами можно посмотреть на GitHub.
Кроме того, я провел сотни собеседований с участниками блокчейн-хакатонов и просмотрел сотни заявок в поисках самых эффективных и самых продвинутых с точки зрения девелоперского опыта инструментов. Я также проверяю все на своем опыте, отрабатывая каждый фреймворк самостоятельно. Всю тяжелую работу я уже сделал – от вас ничего не требуется.
Критерии, которые я применил, были просты. Фреймворк должен:
- Развертываться в локальной блокчейн-сети;
- Иметь быструю и эффективную систему проверки;
- Разворачивать смарт-контракт, используя Chainlink, в тестовой сети Kovan.
Третий критерий важен, поскольку он позволил мне проверить, как фреймворк взаимодействует с другими пакетами, включая проверку интеграционных процессов. Работа с оракулами и сторонними инструментами, такими как Open Zeppelin, это уже по сути неотъемлемое требование на 2021 год, именно поэтому эта последняя часть так важна.
Мы кратко пройдемся по нескольким другим важным инструментам, о которых вам нужно знать в 2021 году, при этом я оставлю за кадром такие инструменты для начинающих, как ETH-кошелек, клиент Ethereum или текстовый редактор.
Видео-обзор
Содержание статьи
- 1 Три лучших фреймворка для разработки смарт-контрактов
- 2 1. Hardhat
- 3 2. Truffle
- 4 3. Brownie
- 5 4. Embark
- 6 Давайте сделаем паузу
- 7 OpenZeppelin и плагин для обновлений
- 8 Проверка через обозреватель блоков Etherscan
- 9 create-eth-app
- 10 Крутые инструменты для начинающих девелоперов на 2021 год
- 11 Альтернативные фреймворки
- 12 Waffle
- 13 Dapp.Tools
- 14 Epirus
- 15 SBT
- 16 Устаревшие фреймворки
- 17 OpenZeppelin SDK
- 18 Etherlime
- 19 Parasol
- 20 Заключение
Три лучших фреймворка для разработки смарт-контрактов
Когда речь заходит о лучших фреймворках для разработки смарт-контрактов, есть три продукта, которые я бы всем рекомендовал. Каждый из них имеет некоторые отличия и выбран по разным причинам. К этим фреймворкам относятся:
- Hardhat (JavaScript)
- Truffle (JavaScript)
- Brownie (Python)
Давайте пройдемся по каждому из них и выясним, в чем его плюсы и почему он занял свое место в списке.
1. Hardhat
Hardhat – это один из лучших фреймворков с самой оперативной системой тестирования, самыми понятными учебными пособиями и самой простой интеграцией. Честно говоря, каждый, кто пользуется фреймворками для языка JS, должен когда-нибудь попробовать Hardhat. Это действительно легко сделать благодаря молниеносному тестированию и простейшей схеме работы. Их админ в Discord всегда очень быстро отвечал на вопросы, так что, если у вас возникнут проблемы, вы всегда можете обратиться за помощью. Для тестирования здесь используется Waffle и Ethers.js, что, пожалуй, делает его лучшим фреймворком для смарт-контрактов на JavaScript благодаря ряду действительно хороших улучшений по сравнению с Web3.js. Здесь также дается возможность прямой интеграции с плагином для обновления смарт-контрактов от OpenZeppelin, что является огромным плюсом.
У этого проекта есть один большой плюс – он понятный. Он делает то, что вам нужно. И делает это очень быстро. Более того, проект постоянно совершенствуется, и его авторы явно нацелены на то, чтобы облегчить жизнь разработчику смарт-контрактов.
Резюме:
- Проект, финансируемый Фондом ETH, ранее известный как Builder
- Технологии: Javascript, плагины Web3.js и Ethers.js, плагин для обновления смарт-контрактов от OpenZeppelin, плагин Etherscan, возможность форка блокчейна
- Блокчейн: Среда выполнения/локальная среда Hardhat, тестовые сети, основная сеть
- Тестирование: Waffle
- Техническое сопровождение: высокая активность
- Поддержка: активная
- В открытом доступе
2. Truffle
Truffle уже несколько лет является фреймворком по умолчанию, и не без оснований. Это крутой продукт, который устанавливает планку для многих других. Вы найдете множество проектов, использующих эту платформу, поэтому найти примеры не составит труда. Truffle также легко интегрируется со своими родственными инструментами Drizzle и Ganache. Ganache, в частности, является одним из самых популярных среди инженеров инструментов для запуска локальных тестов. Для тех, кому нужны дополнительные фичи, можно купить обновленную версию и получить доступ к непрерывной интеграции смарт-контрактов, визуальному развертыванию и мониторингу. Здесь, как и в первом случае, доступна прямая интеграция с плагином для обновления смарт-контрактов от OpenZeppelin. Авторы проекта без сомнения являются талантливыми инженерами, которые хотят сделать мир лучше и умнее.
Тестирование в Truffle проходит не так быстро, как в Hardhat, и из-за большого количества пользователей достучаться до техподдержки бывает сложно. Я с нетерпением жду, когда разработчики улучшат свой проект, особенно после того, как его приобрела компания ConsenSys. Их документация сложновата для понимания, но если вы загуглите свою ошибку, то наверняка найдете массу примеров ее решения каким-нибудь разрабом, который уже сталкивался с ней в прошлом. Я же вышел из положения тем, что оставил вопрос на их странице в GitHub. В любом случае, наша обязанность – поддерживать проекты с открытым исходным кодом и стараться их улучшить.
Из-за того, что почти все знакомы с этим продуктом, получить поддержку от коллег обычно несложно. Я очень надеюсь, что команде еще чем-нибудь помогут в этом проекте, так как у них много пользователей. Я надеюсь, что они увидят эту статью и поработают над улучшением своей документации, чтобы оставаться одной из лучших платформ для тестирования и развертывания смарт-контрактов.
Резюме:
- Наиболее часто используемая платформа; недавно приобретена компанией ConsenSys (ноябрь 2020 г.)
- Технологии: Javascript, Web3.js, плагин для обновления смарт-контрактов от OpenZeppelin, плагин Etherscan, возможность форка блокчейна
- Блокчейн: Ganache/локальная сеть, тестовые сети, основная сеть
- Имеется тестирование
- Техническое сопровождение: высокая активность
- Поддержка: активная
- В открытом доступе с платными обновлениями
3. Brownie
Во многом «вдохновленный» проектом Truffle, Brownie по сути является аналогом Python, но с некоторыми отличиями. Этот проект в буквальном смысле возник из-за разочарования, которое испытывают большинство разработчиков Python: им не нравится JavaScript. Благодаря тому, что он написан на языке Python, многие проблемы, связанные с работой с JavaScript, снимаются сами собой, и в итоге вы получаете удивительно простой фреймворк для работы и развертывания смарт-контрактов.
Будучи человеком, который сам любит Python, меня очень волнует будущее этого проекта, и по мере того, как его внедрение набирает обороты, похоже, что все больше и больше разработчиков склоняются к использованию Python и этого фреймворка для развертывания смарт-контрактов. Я выбрал Brownie, и мне понравилось, как он работает. Я пообщался с несколькими людьми, у кого больше опыта работы с ним, и это реально умные ребята. Yearn.finance, похоже, тоже купились.
Если вы пользователь Python или хотите действительно простой, чистый фреймворк, этот продукт вам подойдет. Тут вообще без вопросов.
В самом начале я говорил, что выделил три лучших фрейма, но есть еще один вариант, который тоже заслуживает внимания.
Резюме:
- Лучший фреймворк на языке Python, используется такими DeFi-проектами как yearn.finance.
- Технологии: Python, Web3.py, возможность форка блокчейна, плагин Etherscan, поддержка Vyper
- Блокчейн: Ganache/локальная сеть, тестовые сети, основная сеть
- Имеется тестирование
- Техническое сопровождение: высокая активность
- Поддержка: активная
- В открытом доступе
4. Embark
Я был удивлен, увидев фреймворк с таким количеством звезд на GitHub (3,1k). Этот инструмент имеет массу наворотов. Мне потребовалось немного повозиться, чтобы разобраться, что к чему, но это все потому, что Embark задумывался как полностью дапповский фреймворк. Это полноценная блокчейн-платформа. Я-таки смог развернуть свои контракты Chainlink в сети Kovan после пары подсказок, полученных через Gitter (и подняв вопрос на их странице на GitHub; помните, что мы обязаны друг другу помогать!). Этот фреймворк идет вместе с пользовательским интерфейсом, который позволяет вам взаимодействовать с блокчейном и вашими контрактами в графическом интерфейсе. Это выглядело как кривая обучаемости; я не стал тратить на нее много времени, но выглядело все очень многообещающе. Вот почему я захотел включить этот фреймворк сюда.
Мне бы очень хотелось, чтобы люди опробовали эту систему и увидели ее силу. К сожалению, из-за недостатка времени я не смог отдать ей должное и как следует расписать ее достоинства. Я по-прежнему считаю, что разделение вашего продукта на фронтенд и бэкенд – это лучшее, что можно сделать для ускорения его развития, но если вам нужно раскрутить проект за счет хорошего фронтенда и не париться насчет разделения, то вы без сомнения должны обратить внимание на него.
Реально крутой проект, и я бы всем любителям Hardhat и Truffle рекомендовал ознакомиться с ним, если у них есть желание провести интеграцию с фуллстек-решением.
Резюме:
- JavaScript-фреймворк с тонной наворотов для разработки фронтенда
- Технологии: JavaScript, Web3.js, поддержка прокси-контрактов
- Блокчейн: Ganache/локальная сеть, тестовые сети, основная сеть
- Имеется тестирование
- Техническое сопровождение: умеренная активность
- Поддержка: активная
- В открытом доступе
Давайте сделаем паузу
Теперь, прежде чем я перейду к альтернативам вышеупомянутых проектов, я хотел бы сделать небольшую паузу и остановиться на нескольких важных инструментах, актуальных на 2021 год.
- Open Zeppelin и плагин для обновления смарт-контрактов
- Обозреватель блоков Etherscan
- Приложение create-eth-app
OpenZeppelin и плагин для обновлений
OpenZeppelin – это платформа, которая создает инструменты для использования разработчиками смарт-контрактов. У нее есть некоторые инструменты по умолчанию, такие как ERC20 и ERC721: вы можете просто импортировать контракт и построить токен за считанные секунды. Посмотрите, насколько просто создается ERC20 с помощью OpenZeppelin:
pragma solidity ^0.6.0;
import “@openzeppelin/contracts/token/ERC20/ERC20.sol”;contract GLDToken is ERC20 {
constructor(uint256 initialSupply) public ERC20(“Gold”, “GLD”) {
_mint(msg.sender, initialSupply);
}
}
Нет смысла изобретать велосипед. OpenZeppelin — это проект с открытым исходным кодом, предназначенный для того, чтобы вы могли в этом убедиться.
Другой огромный плюс Open Zeppelin — это функция обновления контрактов. Развертывание рабочего проекта означает, что вам придется развернуть прокси-контракт, который вам нужно будет обновлять всякий раз, когда вы захотите внести изменения. Это еще один проект, который кажется удивительным и простым. Честно говоря, каждый проект, независимо от того, какую платформу вы используете, вероятно, должен использовать что-то от OpenZeppelin.
Проверка через обозреватель блоков Etherscan
Etherscan — это самый популярный обозреватель блоков. Если люди захотят проверить ваш контракт и то, что вы развернули, они не смогут этого сделать, если у них нет ABI и адреса контракта. Найти адрес контракта обычно довольно легко, а вот получить ABI очень сложно. Вы же наоборот заинтересованы в том, чтобы у людей не возникло сложностей с вашим смарт-контрактом, и именно поэтому вы предпочли бы его проверить. Большинство фреймворков имеют плагин для проверки, где вы можете развернуть смарт-контракт, а затем сразу после этого проверить его на Etherscan. Обязательно используйте его в своих приложениях.
create-eth-app
Иметь множество бэкенд смарт-контрактов – это здорово, но если никто не может использовать ваше приложение, то грош ему цена. create-eth-app – это приложение представляет собой платформу, которая позволяет запускать фронтенд смарт-контрактов, используя ReactJS. Он использует множество новых фишек React, например, «хуки состояний», и облегчает создание действительно мощных фронтендов.
Крутые инструменты для начинающих девелоперов на 2021 год
Scaffold-ETH
eth.build
Remix
One Click dApp
Я не стану грузить вас лишней информацией, но если вы новичок в этой теме, то вам стоит с ними ознакомиться!
Альтернативные фреймворки
Я не хочу сказать, что остальные фреймворки плохие, наоборот – они могут хорошо себя показать в деле. Некоторые из них являются реально крутыми идеями, и я надеюсь, что часть из них будет реализована в первой тройке моих фаворитов. Это инструменты, на которых я хотел бы заострить чуть больше внимания:
- Waffle (JS)
- Dapp.Tools (Haskell/CLI)
- SBT (Scala/CLI)
- Epirus (Java)
Waffle
Waffle можно использовать как самостоятельную платформу для развертывания, но тогда вам придется написать гораздо больше собственных пользовательских скриптов. Я ее указал в своем списке как фреймворк для смарт-контрактов, хотя кому-то может показаться глупым сравнивать ее с другими фреймворками. Waffle можно использовать с любым фреймворком, который вам нравится, и в настоящее время она является инструментом по умолчанию для работы с Hardhat.
Я не рекомендую использовать ее как отдельную единицу, если вам нужны все те классные функции, которые может предоставить фреймворк, но если ваша цель — поработать с более сырым, простым, настраиваемым фреймворком, тогда дерзайте.
Резюме:
- Легкий JavaScript-фреймворк, ориентированный на тестирование
- Технологии: JavaScript, Ethers.js.
- Блокчейн: любой
- Имеется тестирование
- Техническое сопровождение: высокая активность
- Поддержка: активная
- В открытом доступе
Dapp.Tools
Продукт под названием Dapp.Tools, который используются MakerDAO, сумел удивить меня. Он написан на языке Haskell, но поддерживает множество плагинов (например, OpenZeppelin), которые мы используем и любим. Он выглядит минималистично, при этом он достаточно мощный, чтобы выполнить поставленные перед ним задачи. Мне помогли развернуть контракт с использованием этой платформы, и я был приятно удивлен тем, насколько он прост и понятен. Если вы ищете минималистичный фреймворк для командной строки, то я бы рекомендовал присмотреться к Dapp.Tools.
Резюме:
- Простой фреймворк на языке Haskell, используемый MakerDAO
- Технология: Haskell/CLI
- Блокчейн: Локальный/Ganache, тестовые сети, основная сеть
- Имеется тестирование
- Техническое сопровождение: высокая активность
- Поддержка: активная
- В открытом доступе
Epirus
Хотя я когда-то и сказал, что он «похож на Truffle», но по стилю Epirus не совсем Truffle. Это проект с открытым исходным кодом, но у его авторов есть платная опция для тех, кто хочет большего от работы с ним. Здесь используется веб-сервис Web3 в Java, но похоже, что он все еще сырой. Я был приятно удивлен, что у них есть поддержка Android, поэтому мне действительно любопытно посмотреть, насколько далеко продвинется этот проект. Мы могли бы привлечь в отрасль больше Java-инженеров, поскольку на сегодняшний день не так много платформ для смарт-контрактов на этом языке.
Я не смог развернуть контракт в сети Kovan, так как она здесь не поддерживается, но похоже, что у них есть поддержка для Rinkeby. В любом случае, я очень рад, что проект продвигается.
Резюме:
- Похожая на Truffle версия исполнения для Java
- Технология: Java
- Блокчейн: Ganache/локальный, тестовые сети (но не Kovan)
- Имеется тестирование
- Техническое сопровождение: активное
- Поддержка: не очень активная
- В открытом доступе с платными опциями
SBT
Это один из наиболее интересных проектов, с которым мне доводилось поработать. SBT взаимодействует со смарт-контрактами почти полностью от командной строки или с помощью Scala. У меня почти нулевой опыт работы с языком Scala, поэтому мне здесь нечего сказать. Вполне может быть, что это отличный продукт, если вы владеете языком Scala и хотите поработать на блокчейне Ethereum.
Резюме:
- Проект, работающий от командной строки и на языке Scala и решающий две проблемы. Подходит для любителей, работающих со смарт-контрактами, и инженеров, специализирующихся на смарт-контрактах.
- Технология: Scala
- Блокчейн: Локальный/Ganache, тестовые сети, основная сеть
- Имеется тестирование
- Техническое сопровождение: средне активное
- Поддержка: неактивная
- В открытом доступе
Устаревшие фреймворки
Информация о них время от времени будет всплывать, но, несмотря на то, что когда-то они прекрасно справлялись с поставленными задачи, сегодня они утратили свою актуальность и от них мало пользы. Ниже я приведу список фреймворков, которых следует избегать в работе:
- OpenZeppelin CLI/SDK (JS)
- Etherlime (JS)
- Parasol (JS)
- Cobra (PY)
OpenZeppelin SDK
Теперь я понимаю, почему этот проект перестал работать над его дальнейшим развитием: они хотят сосредоточиться на решении сложной задачи обновления смарт-контрактов, но, честно говоря, мне жаль, что все прекратилось. Этот проект простой и понятный. Я смог развернуть свой привязанный к Chainlink смарт-контракт и узнать цену ETH быстрее, чем с помощью любого другого фреймворка. У него также было несколько действительно хороших вариантов CLI, которые, кажется, есть у Epirus и Hardhat. Он также идет вместе со встроенными обновляемыми опциями, что очень важно.
Я не рекомендую использовать этот продукт, так как его разработчики намеренно больше не поддерживают его, но это был один из лучших моих опытов работы с фреймворком для смарт-контрактов. Я надеюсь, что авторы тройки моих фаворитов смогут понять, что сделало этот проект таким блестящим. Есть причина, почему я сказал выше, что каждый должен когда-нибудь воспользоваться открытыми инструментами Zeppelin. Просто они РАБОТАЮТ.
Если бы они не свернули проект, их SDK легко вошел бы в четверку лучших фреймворков.
Резюме:
Устаревший фреймворк для работы со смарт-контрактами от OpenZeppelin. Его авторы переключились на плагин для обновлений. Тем не менее, это реально отличный фреймворк на JS.
- Технология: JavaScript, плагины Web3.js и Ethers.js, плагин для обновления контрактов OpenZeppelin
- Блокчейн: локальный, тестовые сети, основная сеть
- Имеется тестирование
- Техническое сопровождение: неактивно
- Поддержка: неактивна
- В открытом доступе
Etherlime
Etherlime, похоже, является еще одним фреймворком на JS, который попал в немилость и над которым уже не ведется активная работа. Он тесно связан с устаревшей функцией Infura, поэтому мы не смогли развернуть свои смарт-контракты в сети Kovan. Похоже, что при жизни это был действительно сильный проект, и, похоже, что он все еще работает в локальной сети, но я бы не рекомендовал его к использованию.
Резюме:
- Недействующий фреймворк для языка JS
- Технология: JavaScript, Ethers.js
- Блокчейн: локальный, тестовые сети, основная сеть
- Имеется тестирование
- Техническое сопровождение: неактивно
- Поддержка: неактивна
- В открытом доступе
Parasol
Еще один неактивный JS-фреймворк (более двух лет). У него есть кое-какие интересные функции, такие как parasol interact, и некоторые интеграции, и очевидно, что над ним работали реально умные ребята, но я не вижу причин использовать эту платформу вместо любых других.
Резюме:
- Недействующий фреймворк для языка JS
- Технология: JavaScript, Web3.js
- Блокчейн: локальный/ Ganache, тестовые сети, основная сеть
- Имеется тестирование
- Техническое сопровождение: неактивно
- Поддержка: неактивна
- В открытом доступе
Заключение
Мир смарт-контрактов и блокчейна развивается семимильными шагами. Некоторые из самых популярных инструментов двухлетней давности уже сильно устарели, и фреймворки для разработки смарт-контрактов здесь не исключение. Здорово видеть, что Truffle не теряет своей актуальности, но еще больше радует то, что так много проектов пересмотрели свой подход к решению этой задачи.
Если вы считаете, что я что-то упустил или где-то ошибся или у вас есть какие-то другие мысли на этот счет, оставляйте свои комментарии или пишите мне в личку. Мой посыл заключался в том, чтобы инженеры, которые работают со смарт-контрактами, могли как можно быстрее и эффективнее начать работу. Узнав про все инструменты, мы сможем быстрее достичь той точки, где мир становится децентрализованным. Надеюсь, эта статья была вам полезна.