В конце 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 не требует полной загрузки пакетов. Это может быть полезно, если вы собираетесь использовать только отдельные модули.