Определение стека web3

Средний1/8/2024, 2:50:04 AM
Статья исследует применение и развитие Web3 в блокчейне.

В этом следующем сегменте Building on web3 инженер по взаимодействию с разработчиками Edge & Node Надер Дабит расширяет стек web3 и объясняет, как разработчики могут концептуализировать различные аспекты создания на web3.


В апреле 2021 года я перешел на web3 после того, как проработал традиционным full-stack разработчиком около 10 лет. Погружаясь во все эти новые технологии и идеи, первое, что я хотел узнать, было: "что такое стек web3?".

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

  1. Серверы API / приложений (REST или GraphQL)
  2. Слой аутентификации (управляемый или настраиваемый вручную)
  3. База данных
  4. Фреймворки, платформы и библиотеки на стороне клиента
  5. Хранилище файлов

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

Оказывается, ответ на этот вопрос не так прост, потому что:

  1. Парадигма во многих отношениях совершенно другая
  2. Инструменты, технологии и экосистема web3 менее зрелые, чем web2

Мне также было сложнее понять, как начать работу с и создавать веб-приложения web3, потому что я подходил к проблемам так же, как и в мире web2.

После работы, исследований, экспериментов и создания вещей за последние 8 месяцев или около того, я бы хотел поделиться тем, что я узнал.

Что такое веб3?

Прежде чем мы определим стек web3, давайте попробуем определить web3. Существует бесконечное количество определений в зависимости от того, кого вы спросите, но для меня я нахожу этоопределение точное место на:

Web3 - это набор протоколов, позволяющих создавать полностью децентрализованные приложения.

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

Некоторые из характеристик, доступных благодаря web3, включают:

  • Децентрализованная веб-инфраструктура
  • Собственность (данных, контента и платформы)
  • Цифровые платежи
  • Самовластная идентичность
  • Распределенная, бесдоверительная, & жесткая инфраструктура
  • Открытые, общедоступные, компонуемые бэкенды

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

Цифровые платежи и общая инфраструктура заднего конца – такие как машинное обучение, мобильные устройства, виртуальная реальность и другие технологические элементы, платформы и строительные блоки – позволяют создавать совершенно новые типы приложений, некоторые из которых еще предстоит представить.

Это означает, что все будет заменено на веб3? Не обязательно. Хотя я считаю, что построение на децентрализованном технологическом стеке является гораздо лучшим выбором для определенных типов приложений - как и в любом техническом решении, все зависит от того, что вы строите.

Давайте теперь начнем погружение в стек web3, разбитый на этот набор категорий:

  • Блокчейн
  • Среда разработки блокчейна
  • Хранилище файлов
  • Протоколы данных вне цепи
  • API (индексация & запросы)
  • Идентификация
  • Клиент (фреймворки и библиотеки)
  • Оракулы
  • Другие протоколы

Блокчейн

Существует бесконечное количество блокчейнов, на которых вы можете выбрать для построения. Нет единственного, который является «лучшим», вместо этого вы должны учитывать различные компромиссы между ними.

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

В мире блокчейна изучение Solidity и EVM(или Виртуальная машина Ethereum) может быть лучшей ставкой при начале карьеры в качестве разработчика блокчейна. Используя эти навыки (и технологический стек), вы можете создавать не только для Ethereum, но и для других уровней 2 Ethereum, сайдчейнов, а также других блокчейнов, таких как Avalanche, Fantom и Celo.

Говоря об этом, Rust начинает становиться все более популярным в мире блокчейн, с Solana, NEAR, Polkadot и другими, имеющими поддержку Rust первого класса. Вероятно, нельзя допустить ошибки, изучая одно из них, но для начинающего я бы сказал, что на сегодняшний день Solidity все еще будет лучшим выбором, если кто-то меня спросит.

Помимо этого совета, вот неполный пример блокчейнов, которые имеют прочное сочетание технологий, полезности, сообщества, динамики и будущей жизнеспособности:

  • Ethereum- оригинальная платформа смарт-контрактов
  • ZK rollups: ZKSync, Starknet, Hermez - Высокопроизводительные Ethereum layer 2, но не совместимы с EVM на уровне ядра
  • Оптимистичные роллапы: Arbitrum & Оптимизм - Ethereum слой 2, совместимый с EVM (узнайте больше о различиях между оптимистическими и ZK rollups здесь)
  • Полигон - боковая цепочка Ethereum
  • Solana - высокая пропускная способность, недорогие транзакции, быстрые блоки, но сложнее в обучении, чем EVM (Rust)
  • NEAR - Блокчейн уровня 1, позволяющий писать смарт-контракты на Rust или Assemblyscript
  • Космос - экосистема взаимодействующих блокчейнов
  • Polkadot- платформа вычислений на основе блокчейна, которая позволяет блокчейнам, построенным на ее основе, выполнять транзакции между собой, создавая взаимосвязанный интернет блокчейнов
  • Аврора- Цепь, совместимая с EVM, работающая на протоколе NEAR.
  • Фантом- Совместимый с EVM уровень 1
  • Лавина- EVM совместимый уровень 1
  • Celo- EVM compatible layer 1, разработанный для удобства отправки, получения и хранения криптовалюты любым пользователем смартфона
  • Tezos- Несовместимый с EVM уровень 1, многие проекты NFT используют его

При взаимодействии с сетью вам потребуется использовать конечную точку RPC.

Есть несколько способов, как вы можете это сделать:

  1. Доступ к общедоступной RPC-точке
  2. Запуск собственных узлов
  3. Доступ к поставщику узлов в качестве услуги
  4. Доступ к децентрализованному узлу-провайдеру в качестве сервиса

Публичные RPC конечные точки часто предоставляются сетью, но для большинства производственных dapps вам захочется использовать собственные конечные точки, так как они не являются стабильными или рекомендуемыми для производства.

Есть несколько поставщиков услуг RPC, вот некоторые из них:

Также есть веб3 / децентрализованное решение, Сеть Pocketкоторый, кажется, приобретает тягу.

Любой из этих вариантов, вероятно, хорошо подойдет для прямого взаимодействия с вашей сетью.

Среды разработки блокчейна

Для разработки EVM доступно несколько хороших сред разработки:

  • Каска(JavaScript) - это новый вариант, который набирает все большую популярность. Их документация отлична, инструменты и опыт разработчика отточены, и именно это я лично использую для создания dapps.
  • Truffle (JavaScript) - это набор инструментов для создания и разработки приложений на EVM. Он зрелый, прошел боевые испытания и хорошо задокументирован. Он существует уже некоторое время, и им пользуются многие разработчики.
  • Foundryэто новая среда разработки Solidity от Paradigm, которая обещает многое. Основные особенности - возможность писать тесты на Solidity, поддержка fuzzing и скорость (она написана на Rust). Я написал отдельное введение в этоздесь.
  • Brownieэто фреймворк разработки и тестирования на основе Python для умных контрактов для разработки Solidity / EVM.

Для развития Solana, Якорьбыстро становится точкой входа для новых разработчиков. Он предоставляет интерфейс командной строки для создания, сборки и тестирования программ Solana, а также клиентские библиотеки, которые можно использовать для создания пользовательских интерфейсов. Он также включает DSL, который абстрагирует множество сложностей, с которыми разработчики часто сталкиваются при начале работы с Solana и разработкой на Rust.

Хранилище файлов

Где мы храним изображения, видео и другие файлы в web3? Хранение чего-либо такого большого в цепи обычно является чрезвычайно дорогостоящим, поэтому, вероятно, мы не хотим хранить их там.

Вместо этого мы можем использовать один из нескольких протоколов хранения файлов:

  • IPFS- протокол файловой системы peer-to-peer
    • плюсы: это надежно, хорошо задокументировано с большой экосистемой
    • cons: если данные не закреплены, их можно потерять
  • ArweaveПозволяет сохранять данные навсегда, заплатив одну комиссию за транзакцию. Я фанат Arweave и написал о нем пост в блоге здесь.
  • Filecoin - от Protocol Labs, та же команда, которая создала IPFS, это протокол, разработанный для обеспечения системы постоянного хранения данных. Есть горстка способовдля разработчиков, чтобы строить на Filecoin, включаяweb3.storageчто довольно приятно.
  • Skynet - Я еще не использовал его в производстве, но пробовал его и кажется, что он работает хорошо. API здесьвыглядит отлично. У меня есть вопросы, например, как долго данные сохраняются, и взаимодействие Skynet с другими протоколами.

Протоколы передачи данных вне цепи

Помимо хранения файлов и хранения на цепочке, вам также может понадобиться хранить данные вне цепочки. Вы можете использовать эти типы решений аналогично тому, как вы могли бы использовать базу данных в традиционном технологическом стеке, но вместо этого они реплицируются через n количество узлов на децентрализованной сети, и поэтому более надежны (по крайней мере, в теории).

Несколько вариантов:

  • Керамическая сеть - децентрализованная, открытая платформа для создания, размещения и обмена данными. У Ceramic также есть отличный протокол идентификации, о котором я расскажу позже. Вероятно, мое любимое решение для хранения вне цепи на данный момент.Here’sдовольно хорошая демонстрация.
  • ТекстильThreadDB- многосторонняя база данных, построенная на IPFS и Libp2p. Если я правильно понимаю, сейчас может происходить крупное изменение API. Я попробовал это и оно показывает определенный потенциал, но документация и DX требуют некоторого улучшения.
  • GunDB - децентрализованная, пиринговая база данных. Gun существует уже достаточно долгое время и несколько довольно интересных приложенийбыли построены с ним.

С моей точки зрения, в контексте зрелости экосистемы решений для хранения вне цепи блоков пока не там, где нужно для реализации некоторых более продвинутых сценариев использования, которые могут заинтересовать некоторых разработчиков. Некоторые из вызовов здесь - это данные в реальном времени, обнаружение конфликтов и разрешение конфликтов, авторизация на запись, документация и общий опыт разработчика.

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

API (индексирование и запросы)

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

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

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

Традиционно эту работу выполняют базы данных в централизованной технологической стопке, но в веб-стопке 3 отсутствовала эта индексирующая слой.

Графэто протокол индексации и запроса данных блокчейна, который делает этот процесс намного проще и предлагает децентрализованное решение для этого. Любой может создавать и публиковать открытые GraphQL API, называемые подграфами, что делает запрос данных блокчейна легким.

Чтобы узнать больше о Графе, ознакомьтесь с документациейздесьили мой урокздесь.

Идентификация

Идентичность - это совершенно другая парадигма в web3. В веб2 аутентификация почти всегда основана на личной информации пользователя. Эта информация обычно собирается либо через форму, либо через OAuth-провайдера, который просит пользователя предоставить ее в обмен на доступ к приложению.

В web3 идентичность полностью вращается вокруг идеи кошельков и криптография на открытом ключе.

В то время как название "кошелек" служит своей цели, я обнаружил, что новички в веб-3 находят терминологию запутанной в отношении аутентификации и идентификации. Надеюсь, что в будущем мы сможем придумать какой-то другой способ передать, что такое кошелек, поскольку он объединяет аспекты финансов, а также идентичности и репутации.

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

На очень базовом уровне (и очень распространенном требовании) вам может потребоваться запросить доступ к кошельку пользователя. Для этого вы обычно сможете получить доступ к кошельку пользователя в контексте окна (веб-браузер) или использовать что-то вроде WalletConnectилиАдаптер кошелька Solana.

Например, если у них есть доступный кошелек Ethereum, вы сможете получить доступ к window.ethereum. То же самое для Solana (window.solana), Arweave (window.arweaveWallet) и еще нескольких. WalletConnect хорош для мобильного веба и React Native, поскольку он позволяет пользователям авторизовываться, используя свои мобильные кошельки напрямую с устройства.

Если вы хотите обрабатывать аутентификацию самостоятельно, вы можете разрешить пользователю подписать транзакцию, а затем где-то раскодировать ее, чтобы аутентифицировать пользователя, но это обычно требует наличие сервера.Здесьэто пример того, как это может выглядеть при использовании кошелька EVM и здесьэто пример того, как это сделать с Solana / Phantom.

Что насчет управления профилями пользователей децентрализованным способом?Керамическая сетьпредлагает самый надежный протокол и набор инструментов для управления децентрализованной идентичностью. Недавно они выпустили статья в блогеописание некоторых из их последних обновлений и рекомендации по тому, как все инструменты взаимодействуют. Я бы начал с этого, а затем исследовалих документыдля понимания того, как начать строить, и рассмотрите возможность ознакомления с моим примером проектаздеськоторый использует керамикуself.id.

Если вы хотите извлечь пользователя ENS текстовые записи, библиотека ENSJS предлагает хороший API для получения пользовательских данных:

const ens = новый ENS({ провайдер, ensAddress: getEnsAddress(‘1’) })

const content = await ens.name(‘sha.eth’).getText(‘avatar’)

SpruceIDтоже выглядит многообещающим, но я еще не пробовал это.

Керамический и Ельоба реализуютW3C DIDспецификация, которая сама по себе также является тем, что я бы считал строительным блоком web3. Сказав это, любая централизованная реализация DIDs противоречит идее того, что спецификация пытается достичь.

Клиент

На сколько пойдут JavaScript-фреймворки, вы можете построить что угодно, так как SDK для клиентской стороны блокчейна в основном не привязан к фреймворкам. Сказано это, подавляющее количество проектов и примеров созданы в React. Есть также несколько библиотек, таких как Адаптер кошелька Solanaчто предлагают дополнительные утилиты для React, поэтому я бы сказал, что изучение или знакомство с React, скорее всего, будет разумным шагом.

Для клиентских SDK в Ethereum естьweb3.jsиethers.jsДля меня Ethers более доступен и имеет лучшую документацию, хотя web3.js существует дольше.

На Solana вы, вероятно, будете работать с@solana/web3.jsи / илиЯкорь. Я обнаружил, что клиентские библиотеки Anchor являются моим любимым инструментом для создания программ на Solana, поскольку я в любом случае использую фреймворк Anchor, и я обнаружил, что тогда мне гораздо легче понять @solana/web3.js.

Оракулы

Оракулы позволяют разработчикам получать доступ к чтению данных из реального мира & внешних систем из смарт-контракта.

Например, большинство финансовых приложений требуют знания данных и событий реального мира, происходящих вне цепи, поэтому Оракулы особенно важны в DeFi.

ChainlinkЭто оракул, который обеспечивает доступ к данным реального мира и вычислениям вне цепи, сохраняя при этом гарантии безопасности и надежности, присущие технологии блокчейн.

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

Другие протоколы

Радикл - это децентрализованный протокол сотрудничества по коду, построенный на Git. Его можно рассматривать как децентрализованную версию GitHub.

Livepeerэто децентрализованная сеть видеопотоков. Она зрела и широко используется, более 70 000 GPU работают в сети.

Завершение

Этот пост будет живым документом, который я буду поддерживать, учась, экспериментируя и собирая обратную связь от разработчиков, создающих веб3.

Если у вас есть какие-либо отзывы или идеи по поводу того, что здесь упущено, пожалуйста, свяжитесь и поделитесь своими мыслями со мной. Увлекательно видеть всю активность, происходящую вокруг web3, поскольку разработчики включаются и принимают участие. Хотя инфраструктура все еще развивается, видение построения по-настоящему децентрализованных протоколов и приложений, которые позволяют людям координироваться, не передавая власть и контроль крупным компаниям, является важным, и мы приближаемся к тому, чтобы сделать это видение реальностью.

Disclaimer:

  1. Эта статья перепечатана с [edgeandnode]. Все авторские права принадлежат автору оригинала [Nader Dabit]. Если есть возражения по поводу этого перепечатывания, пожалуйста, свяжитесь сGate Learnкоманда, и они оперативно справятся с этим.
  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, принадлежат исключительно автору и не являются какими-либо инвестиционными рекомендациями.
  3. Переводы статьи на другие языки выполняются командой Gate Learn. За исключением указанных случаев, копирование, распространение или плагиат переведенных статей запрещены.

Определение стека web3

Средний1/8/2024, 2:50:04 AM
Статья исследует применение и развитие Web3 в блокчейне.

В этом следующем сегменте Building on web3 инженер по взаимодействию с разработчиками Edge & Node Надер Дабит расширяет стек web3 и объясняет, как разработчики могут концептуализировать различные аспекты создания на web3.


В апреле 2021 года я перешел на web3 после того, как проработал традиционным full-stack разработчиком около 10 лет. Погружаясь во все эти новые технологии и идеи, первое, что я хотел узнать, было: "что такое стек web3?".

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

  1. Серверы API / приложений (REST или GraphQL)
  2. Слой аутентификации (управляемый или настраиваемый вручную)
  3. База данных
  4. Фреймворки, платформы и библиотеки на стороне клиента
  5. Хранилище файлов

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

Оказывается, ответ на этот вопрос не так прост, потому что:

  1. Парадигма во многих отношениях совершенно другая
  2. Инструменты, технологии и экосистема web3 менее зрелые, чем web2

Мне также было сложнее понять, как начать работу с и создавать веб-приложения web3, потому что я подходил к проблемам так же, как и в мире web2.

После работы, исследований, экспериментов и создания вещей за последние 8 месяцев или около того, я бы хотел поделиться тем, что я узнал.

Что такое веб3?

Прежде чем мы определим стек web3, давайте попробуем определить web3. Существует бесконечное количество определений в зависимости от того, кого вы спросите, но для меня я нахожу этоопределение точное место на:

Web3 - это набор протоколов, позволяющих создавать полностью децентрализованные приложения.

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

Некоторые из характеристик, доступных благодаря web3, включают:

  • Децентрализованная веб-инфраструктура
  • Собственность (данных, контента и платформы)
  • Цифровые платежи
  • Самовластная идентичность
  • Распределенная, бесдоверительная, & жесткая инфраструктура
  • Открытые, общедоступные, компонуемые бэкенды

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

Цифровые платежи и общая инфраструктура заднего конца – такие как машинное обучение, мобильные устройства, виртуальная реальность и другие технологические элементы, платформы и строительные блоки – позволяют создавать совершенно новые типы приложений, некоторые из которых еще предстоит представить.

Это означает, что все будет заменено на веб3? Не обязательно. Хотя я считаю, что построение на децентрализованном технологическом стеке является гораздо лучшим выбором для определенных типов приложений - как и в любом техническом решении, все зависит от того, что вы строите.

Давайте теперь начнем погружение в стек web3, разбитый на этот набор категорий:

  • Блокчейн
  • Среда разработки блокчейна
  • Хранилище файлов
  • Протоколы данных вне цепи
  • API (индексация & запросы)
  • Идентификация
  • Клиент (фреймворки и библиотеки)
  • Оракулы
  • Другие протоколы

Блокчейн

Существует бесконечное количество блокчейнов, на которых вы можете выбрать для построения. Нет единственного, который является «лучшим», вместо этого вы должны учитывать различные компромиссы между ними.

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

В мире блокчейна изучение Solidity и EVM(или Виртуальная машина Ethereum) может быть лучшей ставкой при начале карьеры в качестве разработчика блокчейна. Используя эти навыки (и технологический стек), вы можете создавать не только для Ethereum, но и для других уровней 2 Ethereum, сайдчейнов, а также других блокчейнов, таких как Avalanche, Fantom и Celo.

Говоря об этом, Rust начинает становиться все более популярным в мире блокчейн, с Solana, NEAR, Polkadot и другими, имеющими поддержку Rust первого класса. Вероятно, нельзя допустить ошибки, изучая одно из них, но для начинающего я бы сказал, что на сегодняшний день Solidity все еще будет лучшим выбором, если кто-то меня спросит.

Помимо этого совета, вот неполный пример блокчейнов, которые имеют прочное сочетание технологий, полезности, сообщества, динамики и будущей жизнеспособности:

  • Ethereum- оригинальная платформа смарт-контрактов
  • ZK rollups: ZKSync, Starknet, Hermez - Высокопроизводительные Ethereum layer 2, но не совместимы с EVM на уровне ядра
  • Оптимистичные роллапы: Arbitrum & Оптимизм - Ethereum слой 2, совместимый с EVM (узнайте больше о различиях между оптимистическими и ZK rollups здесь)
  • Полигон - боковая цепочка Ethereum
  • Solana - высокая пропускная способность, недорогие транзакции, быстрые блоки, но сложнее в обучении, чем EVM (Rust)
  • NEAR - Блокчейн уровня 1, позволяющий писать смарт-контракты на Rust или Assemblyscript
  • Космос - экосистема взаимодействующих блокчейнов
  • Polkadot- платформа вычислений на основе блокчейна, которая позволяет блокчейнам, построенным на ее основе, выполнять транзакции между собой, создавая взаимосвязанный интернет блокчейнов
  • Аврора- Цепь, совместимая с EVM, работающая на протоколе NEAR.
  • Фантом- Совместимый с EVM уровень 1
  • Лавина- EVM совместимый уровень 1
  • Celo- EVM compatible layer 1, разработанный для удобства отправки, получения и хранения криптовалюты любым пользователем смартфона
  • Tezos- Несовместимый с EVM уровень 1, многие проекты NFT используют его

При взаимодействии с сетью вам потребуется использовать конечную точку RPC.

Есть несколько способов, как вы можете это сделать:

  1. Доступ к общедоступной RPC-точке
  2. Запуск собственных узлов
  3. Доступ к поставщику узлов в качестве услуги
  4. Доступ к децентрализованному узлу-провайдеру в качестве сервиса

Публичные RPC конечные точки часто предоставляются сетью, но для большинства производственных dapps вам захочется использовать собственные конечные точки, так как они не являются стабильными или рекомендуемыми для производства.

Есть несколько поставщиков услуг RPC, вот некоторые из них:

Также есть веб3 / децентрализованное решение, Сеть Pocketкоторый, кажется, приобретает тягу.

Любой из этих вариантов, вероятно, хорошо подойдет для прямого взаимодействия с вашей сетью.

Среды разработки блокчейна

Для разработки EVM доступно несколько хороших сред разработки:

  • Каска(JavaScript) - это новый вариант, который набирает все большую популярность. Их документация отлична, инструменты и опыт разработчика отточены, и именно это я лично использую для создания dapps.
  • Truffle (JavaScript) - это набор инструментов для создания и разработки приложений на EVM. Он зрелый, прошел боевые испытания и хорошо задокументирован. Он существует уже некоторое время, и им пользуются многие разработчики.
  • Foundryэто новая среда разработки Solidity от Paradigm, которая обещает многое. Основные особенности - возможность писать тесты на Solidity, поддержка fuzzing и скорость (она написана на Rust). Я написал отдельное введение в этоздесь.
  • Brownieэто фреймворк разработки и тестирования на основе Python для умных контрактов для разработки Solidity / EVM.

Для развития Solana, Якорьбыстро становится точкой входа для новых разработчиков. Он предоставляет интерфейс командной строки для создания, сборки и тестирования программ Solana, а также клиентские библиотеки, которые можно использовать для создания пользовательских интерфейсов. Он также включает DSL, который абстрагирует множество сложностей, с которыми разработчики часто сталкиваются при начале работы с Solana и разработкой на Rust.

Хранилище файлов

Где мы храним изображения, видео и другие файлы в web3? Хранение чего-либо такого большого в цепи обычно является чрезвычайно дорогостоящим, поэтому, вероятно, мы не хотим хранить их там.

Вместо этого мы можем использовать один из нескольких протоколов хранения файлов:

  • IPFS- протокол файловой системы peer-to-peer
    • плюсы: это надежно, хорошо задокументировано с большой экосистемой
    • cons: если данные не закреплены, их можно потерять
  • ArweaveПозволяет сохранять данные навсегда, заплатив одну комиссию за транзакцию. Я фанат Arweave и написал о нем пост в блоге здесь.
  • Filecoin - от Protocol Labs, та же команда, которая создала IPFS, это протокол, разработанный для обеспечения системы постоянного хранения данных. Есть горстка способовдля разработчиков, чтобы строить на Filecoin, включаяweb3.storageчто довольно приятно.
  • Skynet - Я еще не использовал его в производстве, но пробовал его и кажется, что он работает хорошо. API здесьвыглядит отлично. У меня есть вопросы, например, как долго данные сохраняются, и взаимодействие Skynet с другими протоколами.

Протоколы передачи данных вне цепи

Помимо хранения файлов и хранения на цепочке, вам также может понадобиться хранить данные вне цепочки. Вы можете использовать эти типы решений аналогично тому, как вы могли бы использовать базу данных в традиционном технологическом стеке, но вместо этого они реплицируются через n количество узлов на децентрализованной сети, и поэтому более надежны (по крайней мере, в теории).

Несколько вариантов:

  • Керамическая сеть - децентрализованная, открытая платформа для создания, размещения и обмена данными. У Ceramic также есть отличный протокол идентификации, о котором я расскажу позже. Вероятно, мое любимое решение для хранения вне цепи на данный момент.Here’sдовольно хорошая демонстрация.
  • ТекстильThreadDB- многосторонняя база данных, построенная на IPFS и Libp2p. Если я правильно понимаю, сейчас может происходить крупное изменение API. Я попробовал это и оно показывает определенный потенциал, но документация и DX требуют некоторого улучшения.
  • GunDB - децентрализованная, пиринговая база данных. Gun существует уже достаточно долгое время и несколько довольно интересных приложенийбыли построены с ним.

С моей точки зрения, в контексте зрелости экосистемы решений для хранения вне цепи блоков пока не там, где нужно для реализации некоторых более продвинутых сценариев использования, которые могут заинтересовать некоторых разработчиков. Некоторые из вызовов здесь - это данные в реальном времени, обнаружение конфликтов и разрешение конфликтов, авторизация на запись, документация и общий опыт разработчика.

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

API (индексирование и запросы)

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

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

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

Традиционно эту работу выполняют базы данных в централизованной технологической стопке, но в веб-стопке 3 отсутствовала эта индексирующая слой.

Графэто протокол индексации и запроса данных блокчейна, который делает этот процесс намного проще и предлагает децентрализованное решение для этого. Любой может создавать и публиковать открытые GraphQL API, называемые подграфами, что делает запрос данных блокчейна легким.

Чтобы узнать больше о Графе, ознакомьтесь с документациейздесьили мой урокздесь.

Идентификация

Идентичность - это совершенно другая парадигма в web3. В веб2 аутентификация почти всегда основана на личной информации пользователя. Эта информация обычно собирается либо через форму, либо через OAuth-провайдера, который просит пользователя предоставить ее в обмен на доступ к приложению.

В web3 идентичность полностью вращается вокруг идеи кошельков и криптография на открытом ключе.

В то время как название "кошелек" служит своей цели, я обнаружил, что новички в веб-3 находят терминологию запутанной в отношении аутентификации и идентификации. Надеюсь, что в будущем мы сможем придумать какой-то другой способ передать, что такое кошелек, поскольку он объединяет аспекты финансов, а также идентичности и репутации.

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

На очень базовом уровне (и очень распространенном требовании) вам может потребоваться запросить доступ к кошельку пользователя. Для этого вы обычно сможете получить доступ к кошельку пользователя в контексте окна (веб-браузер) или использовать что-то вроде WalletConnectилиАдаптер кошелька Solana.

Например, если у них есть доступный кошелек Ethereum, вы сможете получить доступ к window.ethereum. То же самое для Solana (window.solana), Arweave (window.arweaveWallet) и еще нескольких. WalletConnect хорош для мобильного веба и React Native, поскольку он позволяет пользователям авторизовываться, используя свои мобильные кошельки напрямую с устройства.

Если вы хотите обрабатывать аутентификацию самостоятельно, вы можете разрешить пользователю подписать транзакцию, а затем где-то раскодировать ее, чтобы аутентифицировать пользователя, но это обычно требует наличие сервера.Здесьэто пример того, как это может выглядеть при использовании кошелька EVM и здесьэто пример того, как это сделать с Solana / Phantom.

Что насчет управления профилями пользователей децентрализованным способом?Керамическая сетьпредлагает самый надежный протокол и набор инструментов для управления децентрализованной идентичностью. Недавно они выпустили статья в блогеописание некоторых из их последних обновлений и рекомендации по тому, как все инструменты взаимодействуют. Я бы начал с этого, а затем исследовалих документыдля понимания того, как начать строить, и рассмотрите возможность ознакомления с моим примером проектаздеськоторый использует керамикуself.id.

Если вы хотите извлечь пользователя ENS текстовые записи, библиотека ENSJS предлагает хороший API для получения пользовательских данных:

const ens = новый ENS({ провайдер, ensAddress: getEnsAddress(‘1’) })

const content = await ens.name(‘sha.eth’).getText(‘avatar’)

SpruceIDтоже выглядит многообещающим, но я еще не пробовал это.

Керамический и Ельоба реализуютW3C DIDспецификация, которая сама по себе также является тем, что я бы считал строительным блоком web3. Сказав это, любая централизованная реализация DIDs противоречит идее того, что спецификация пытается достичь.

Клиент

На сколько пойдут JavaScript-фреймворки, вы можете построить что угодно, так как SDK для клиентской стороны блокчейна в основном не привязан к фреймворкам. Сказано это, подавляющее количество проектов и примеров созданы в React. Есть также несколько библиотек, таких как Адаптер кошелька Solanaчто предлагают дополнительные утилиты для React, поэтому я бы сказал, что изучение или знакомство с React, скорее всего, будет разумным шагом.

Для клиентских SDK в Ethereum естьweb3.jsиethers.jsДля меня Ethers более доступен и имеет лучшую документацию, хотя web3.js существует дольше.

На Solana вы, вероятно, будете работать с@solana/web3.jsи / илиЯкорь. Я обнаружил, что клиентские библиотеки Anchor являются моим любимым инструментом для создания программ на Solana, поскольку я в любом случае использую фреймворк Anchor, и я обнаружил, что тогда мне гораздо легче понять @solana/web3.js.

Оракулы

Оракулы позволяют разработчикам получать доступ к чтению данных из реального мира & внешних систем из смарт-контракта.

Например, большинство финансовых приложений требуют знания данных и событий реального мира, происходящих вне цепи, поэтому Оракулы особенно важны в DeFi.

ChainlinkЭто оракул, который обеспечивает доступ к данным реального мира и вычислениям вне цепи, сохраняя при этом гарантии безопасности и надежности, присущие технологии блокчейн.

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

Другие протоколы

Радикл - это децентрализованный протокол сотрудничества по коду, построенный на Git. Его можно рассматривать как децентрализованную версию GitHub.

Livepeerэто децентрализованная сеть видеопотоков. Она зрела и широко используется, более 70 000 GPU работают в сети.

Завершение

Этот пост будет живым документом, который я буду поддерживать, учась, экспериментируя и собирая обратную связь от разработчиков, создающих веб3.

Если у вас есть какие-либо отзывы или идеи по поводу того, что здесь упущено, пожалуйста, свяжитесь и поделитесь своими мыслями со мной. Увлекательно видеть всю активность, происходящую вокруг web3, поскольку разработчики включаются и принимают участие. Хотя инфраструктура все еще развивается, видение построения по-настоящему децентрализованных протоколов и приложений, которые позволяют людям координироваться, не передавая власть и контроль крупным компаниям, является важным, и мы приближаемся к тому, чтобы сделать это видение реальностью.

Disclaimer:

  1. Эта статья перепечатана с [edgeandnode]. Все авторские права принадлежат автору оригинала [Nader Dabit]. Если есть возражения по поводу этого перепечатывания, пожалуйста, свяжитесь сGate Learnкоманда, и они оперативно справятся с этим.
  2. Отказ от ответственности: Взгляды и мнения, выраженные в этой статье, принадлежат исключительно автору и не являются какими-либо инвестиционными рекомендациями.
  3. Переводы статьи на другие языки выполняются командой Gate Learn. За исключением указанных случаев, копирование, распространение или плагиат переведенных статей запрещены.
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!