Домой Новости С чего начать разработку Web3-приложений?

С чего начать разработку Web3-приложений?

В конце 2023 года венчурная компания Andreessen Horowitz опубликовала список «больших идей» в криптоиндустрии. Эксперты выделили рестарт UX при создании криптовалютных приложений, а также развитие модульного технологического стека в Web3-разработке polygant.net/ru/fintech-apps/web3-razrabotka/.

Технологический стек Web3-разработчика

Технологический стек ― набор технологий, инструментов и языков программирования для создания ПО. Например, MEAN (MongoDB, Express.js, AngularJS/Angular, Node.js) и MERN (MongoDB, Express.js, React, Node.js) ― популярные стеки веб-разработчиков.

В Web3 можно выделить четыре основных компонента:

  • библиотеки. С их помощью создают приложения, которые работают в блокчейне или обращаются к нему;
  • смарт-контракты. Неизменяемый код, работающий внутри сети;
  • кошельки. Адрес является идентификатором пользователя или смарт-контракта, а также хранилищем криптовалют и токенов;
  • ноды. Хранят копию блокчейна. Без нод Web3-библиотека не сможет взаимодействовать со смарт-контрактами.

Для работы с ними предназначены следующие инструменты:

  • GetBlock ― провайдер, предоставляющий связь с нодами; Remix ― IDE для тестирования, развертывания и исполнения смарт-контрактов в браузере;
  • Hardhat ― локальная среда разработки на Ethereum. Она позволяет развертывать приложения и смарт-контракты в тестнетах Mumbai и Goerli и основной сети Ethereum;
  • MetaMask ― браузерный Web3-кошелек. Разработчики используют его для тестирования и развертывания dapps, пользователи ― для хранения криптоактивов и взаимодействия с Web3;
  • Etherscan ― обозреватель Ethereum, показывающий статус транзакций и детали смарт-контракта.

Для создания Web3-приложений также понадобится знание языков JavaScript и Solidity.

Провайдеры нод

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

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

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

Это довольно трудоемкий процесс, требующий постоянной поддержки работоспособности инфраструктуры (мониторинг, установка, обновление). Поэтому часто Web3-разработчики обращаются к провайдерам RPC-нод. Последние предоставляют доступ к узлу через API. Адрес ноды (URL эндпоинта) вписывается в код приложения, которое и шлет на нее запросы.

Начинающим Web3-разработчикам GetBlock предлагает бесплатный доступ с лимитом в 40 000 запросов в сутки. Цены на платные тарифы начинаются с $29.

Web3-библиотеки

Библиотеки ― это наборы готовых функций, повышающие скорость разработки децентрализованных приложений. Их основная задача ― обеспечить взаимодействие со смарт-контрактами, развернутыми в Ethereum или других сетях. Большинство разработчиков для этих целей выбирают Web3.js и Ethers.js.

Web3.js ― популярная библиотека для работы с Ethereum, созданная в 2015 году. Многие проекты используют ее для подключения смарт-контрактов к внешнему коду на JavaScript, выполнения транзакций и получения данных о блокчейне.

Библиотека состоит из нескольких модулей:

  • eth ― помогает установить соединение с тестнетами и мейннетом Ethereum, управлять транзакциями, конструировать контракты Solidity и взаимодействовать с ними;
  • shh ― выполняет обмен информацией между dapps;
  • utils ― форматирует и конвертирует данные;
  • bzz ― позволяет использовать Swarm в качестве децентрализованной системы хранения данных.

Библиотеку можно загрузить с помощью менеджера пакетов вроде NPM или YARN, а затем интегрировать в различные консоли.

Ethers.js ― альтернатива Web3.js, выпущенная в 2016 году разработчиком Ричардом Муром. Она предлагает схожий набор функций, но может похвастаться дополнительными возможностями. Среди них:

  • встроенная поддержка системы доменных имен Ethereum Name Service;
  • лицензия MIT позволяет повторно использовать и перерабатывать код практически без ограничений;
  • небольшой размер пакетов предотвращает негативное влияние на производительность фронтенда;
  • использование языка TypeScript повышает безопасность и минимизирует вероятность ошибок и багов.

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