Crypto Currency Tracker logo Crypto Currency Tracker logo
Forklog 2024-01-22 16:26:24

С чего начать разработку Web3-приложений в 2024 году ― рассказывает GetBlock

В конце 2023 года венчурная компания Andreessen Horowitz опубликовала список «больших идей» в криптоиндустрии. Эксперты выделили рестарт UX при создании криптовалютных приложений, а также развитие модульного технологического стека в Web3-разработке. Вместе с провайдером RPC-нод GetBlock рассказываем о том, что необходимо знать и уметь Web3-инженеру в 2024 году. Технологический стек 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. «Изучив эти концепты и инструменты, начинающий разработчик поймет, как устроен, например, криптовалютный кошелек и что нужно сделать для создания похожего продукта», ― комментирует команда GetBlock. Провайдеры нод Для обмена данными с блокчейном нужен полный узел, к которому обращается любой криптовалютный сервис. Нода предоставляет данные о транзакциях, блоках, балансах и вписывает произошедшие изменения. Например, чтобы Алиса отправила Бобу 1 ETH, кошелек должен проверить, сколько денег у обоих до отправки, удостовериться в авторизации транзакции Алисой и валидности кошелька Боба, а потом «сказать» блокчейну, что балансы изменились. Полную ноду можно запустить самому: арендовать виртуальный сервер или купить физический, установить клиент ноды и дождаться синхронизации с такими же участниками. Это довольно трудоемкий процесс, требующий постоянной поддержки работоспособности инфраструктуры (мониторинг, установка, обновление). Поэтому часто Web3-разработчики обращаются к провайдерам RPC-нод. Последние предоставляют доступ к узлу через API. Адрес ноды (URL эндпоинта) вписывается в код приложения, которое и шлет на нее запросы. «RPC-ноды также запускают команды блокчейнов, чтобы наращивать аудиторию. Но их публичные RPC-ноды перегружены и непригодны для коммерческой разработки. Такие узлы можно использовать скорее в исследовательских целях», ― указывают в GetBlock. Провайдеры оказывают услуги по одной схеме: клиент платит за вычислительную мощность (право отправить запросы блокчейну), а компания обеспечивает работу ноды.  «Первым популярным RPC-провайдером стала Infura, предоставляя доступ к нодам Ethereum и EVM-совместимым сетям.  GetBlock ― платформа нового поколения. Мы поддерживаем более 50 блокчейнов. Если команда строит мультивалютный обменник, она может подключиться к биткоину, Ethereum, Tron и другим сетям через один сервис», ― комментирует команда проекта. RPC-нода упрощает, ускоряет и удешевляет процесс разработки и запуска приложений, а также экономит ресурсы на их дальнейшем обслуживании. «GetBlock предоставляет доступ к общим (shared) и выделенным (dedicated) нодам. Последняя опция предполагает развертывание узла строго под задачи клиента, максимальную скорость и аптайм. Она ориентирована на проекты с солидным трафиком или перспективами масштабирования. Для быстрого ответа RPC-ноды мы используем серверы в Европе, Азии и США.   Общие ноды ― решение для обычных пользователей. Они делят инфраструктуру с другими, но также получают высокоскоростной доступ. Можно выбрать как тарифы с лимитом запросов (от 5 млн запросов к блокчейну), так и безлимитные тарифы на месяц, полгода или год», ― утверждают в GetBlock. Начинающим Web3-разработчикам GetBlock предлагает бесплатный доступ с лимитом в 40 000 запросов в сутки. Цены на платные тарифы начинаются с $29. Web3-библиотеки Библиотеки ― это наборы готовых функций, повышающие скорость разработки децентрализованных приложений. Их основная задача ― обеспечить взаимодействие со смарт-контрактами, развернутыми в Ethereum или других сетях. Большинство разработчиков для этих целей выбирают Web3.js и Ethers.js.  Web3.js ― популярная библиотека для работы с Ethereum, созданная в 2015 году. Многие проекты используют ее для подключения смарт-контрактов к внешнему коду на JavaScript, выполнения транзакций и получения данных о блокчейне. Библиотека состоит из нескольких модулей: eth ― помогает установить соединение с тестнетами и мейннетом Ethereum, управлять транзакциями, конструировать контракты Solidity и взаимодействовать с ними; shh ― выполняет обмен информацией между dapps; utils ― форматирует и конвертирует данные; bzz ― позволяет использовать Swarm в качестве децентрализованной системы хранения данных. «Полный список функций Web3.js огромен. Она очень популярна благодаря совместимости практически со всеми существующим фреймворками», ― отмечает команда GetBlock. Библиотеку можно загрузить с помощью менеджера пакетов вроде NPM или YARN, а затем интегрировать в различные консоли. Ethers.js ― альтернатива Web3.js, выпущенная в 2016 году разработчиком Ричардом Муром. Она предлагает схожий набор функций, но может похвастаться дополнительными возможностями. Среди них: встроенная поддержка системы доменных имен Ethereum Name Service; лицензия MIT позволяет повторно использовать и перерабатывать код практически без ограничений; небольшой размер пакетов предотвращает негативное влияние на производительность фронтенда; использование языка TypeScript повышает безопасность и минимизирует вероятность ошибок и багов. Библиотека регулярно обновляется и имеет процесс установки, аналогичный Web3.js. Однако, в отличие от последней, Ethers.js не требует полной загрузки пакетов. Это может быть полезно, если вы собираетесь использовать только отдельные модули. Кошельки Web3-кошельки нужны для взаимодействия с dapps. Они предоставляют интерфейс для управления криптоактивами с помощью приватных ключей (MetaMask, Phantom) или смарт-контрактов (Safe, Argent). Как правило, при взаимодействии с блокчейнами некастодиальные кошельки полагаются на RPC-ноды. Так, MetaMask по умолчанию обращается к провайдеру Infura (оба продукта принадлежат компании ConsenSys). «MetaMask отслеживает IP-адреса и кошельки пользователей, выбравших Infura в качестве RPC-провайдера. Так ConsenSys становится гораздо проще накладывать ограничения на кошелек, что не очень-то согласуется с принципом децентрализованности. Вы можете в любой момент изменить RPC-провайдера, например на GetBlock. Мы не передаем данные/информацию третьим лицам и предоставляем 40 000 запросов ко всем блокчейнам после регистрации. Этого вполне достаточно для личного пользования», ― отмечают представители провайдера. В следующем разделе мы рассмотрим, как изменить RPC-провайдера в настройках MetaMask. Смарт-контракты Смарт-контракт ― это самоисполняющаяся программа, которая позволяет децентрализованным приложениям выполнять автоматические транзакции и сохранять данные в блокчейне в соответствии с набором определенных условий. Для создания смарт-контрактов на базе Ethereum и других EVM-совместимых блокчейнов большинство разработчиков пользуются библиотекой OpenZeppelin и IDE Remix, а для доступа к данным блокчейна — услугами провайдеров RPC-нод вроде GetBlock. Создадим токен стандарта ERC-721 (NFT) в блокчейне Ethereum. Для этого выполните следующие шаги: откройте Contracts Wizard и выберите один из доступных вариантов (в нашем случае ERC-721), введите название токена и тикер; заполните поле Base URI ссылкой на IPFS (хранит метаданные NFT) и укажите свойства актива; нажмите кнопку Open in Remix для переноса контракта в среду разработки. В ней можно прописать дополнительные условия; после внесения изменений в Remix нажмите кнопку Solidity Compiler в боковой панели, чтобы скомпилировать код. Код ERC-721 в Remix. Данные: GetBlock. Контракт готов к развертыванию. Протестировать его работу можно в тестнетах Sepolia или Goerli. Для этого: установите GetBlock в качестве провайдера RPC-нод ― создайте аккаунт и получите бесплатный эндпоинт для Sepolia; добавьте сеть в MetaMask, вставив RPC-ссылку. Добавление RPC-ссылки в MetaMask. Данные: GetBlock. После этого в боковой панели перейдите в раздел Deploy & Run Transactions и выберите Injected Provider ― MetaMask в поле Environment. Если сеть Sepolia активна в кошельке, она автоматически подключится к Remix. Убедитесь, что у вас есть ETH на оплату газа. В Sepolia и других тестнетах его можно получить бесплатно с помощью кранов. Развертывание смарт-контракта в Remix. Данные: GetBlock. Наконец, нажмите Deploy и подтвердите транзакцию в появившемся расширении MetaMask. При развертывании в мейннете созданный NFT будет отображаться в аккаунте testnets.opensea.io или на главном сайте OpenSea. Выводы Web3-разработка включает в себя технологический стек из нескольких взаимосвязанных компонентов. Важную роль в нем играют RPC-провайдеры вроде GetBlock: они упрощают разработку приложений и экономят ресурсы на их обслуживании. Даже если вы не планируете заниматься созданием децентрализованных приложений, понимание того, как работает та или иная технология, поможет лучше разобраться в сути разных криптовалютных проектов.

Read the Disclaimer : All content provided herein our website, hyperlinked sites, associated applications, forums, blogs, social media accounts and other platforms (“Site”) is for your general information only, procured from third party sources. We make no warranties of any kind in relation to our content, including but not limited to accuracy and updatedness. No part of the content that we provide constitutes financial advice, legal advice or any other form of advice meant for your specific reliance for any purpose. Any use or reliance on our content is solely at your own risk and discretion. You should conduct your own research, review, analyse and verify our content before relying on them. Trading is a highly risky activity that can lead to major losses, please therefore consult your financial advisor before making any decision. No content on our Site is meant to be a solicitation or offer.