Инфраструктура большинства децентрализованных приложений Ethereum состоит из двух частей (простая версия):
- Внешний интерфейс (запускается в браузере)
- Узел Ethereum (интерфейс с сетью ETH)
Когда транзакция происходит в Ethereum, он генерирует события. Внешний интерфейс отслеживает эти события и соответствующим образом обновляет пользовательский интерфейс. dApps могут выполнять ограниченные типы запросов к узлу Ethereum для отображения данных во внешнем интерфейсе.
Но dApps не могут жить только с транзакциями, событиями и этими минимальными запросами. Для обеспечения полноценного взаимодействия с пользователем приложение dApp должно обрабатывать как минимум свои собственные данные, отображать действия конкретного пользователя, создавать профиль пользователя, отображать аналитику и включать несколько функций … Как мы можем сделать все это сейчас?
Ряд команд разработчиков dApp делают это, создавая свои собственные индивидуальные решения — очищая данные блокчейна, отслеживая события, транзакции и сохраняя их в традиционной централизованной базе данных. Но мы же хотим минимизировать доверие к web3, верно?
Резюмируя проблему –
«DApps нуждаются в индексированных данных для выполнения крупномасштабных запросов, чтобы обеспечить полноценное взаимодействие с пользователем с минимальным доверием»
The Graph.
Что такое The Graph?
Команда Graph решает эту проблему, создавая децентрализованный протокол, который будет задействован узлами Graph, обрабатывающими события Ethereum и сохраняющими их в виде индексированных данных, которые dApps могут запрашивать через конечную точку API.
Протокол Graph попадает в категорию, которую мы называем решением для масштабирования чтения уровня 2 . Его цель состоит в том, чтобы позволить децентрализованным приложениям (dApps) эффективно и без доверия запрашивать данные общедоступной цепочки блоков через службу, которая, подобно блокчейнам и самому Интернету, работает как общественная утилита. Это делается в интересах сведения к минимуму роли хрупкой централизованной инфраструктуры, наблюдаемой сегодня во многих «децентрализованных» архитектурах приложений. — Спецификация протокола графика
Эти индексы («подграфы») в настоящее время размещаются командой Graph. Но в будущем эти индексы будут жить в полностью децентрализованной сети Graph узлов.
Как работает The Graph?
Давайте копнем глубже и поймем, как на самом деле работает The Graph:
- dApps (через свои смарт-контракты) создают транзакции Ethereum, которые генерируют события.
- Графические узлы сканируют каждый блок Ethereum в поисках событий.
- Узлы графа находят события для вашего подграфа в блоках Ethereum и запускают предоставленные вами обработчики сопоставлений. Это сопоставление определяет, как данные будут храниться и обновляться в узлах графиков.
- Ваше dApp может запрашивать эти данные через API GraphQL, которые переводятся узлами Graph для получения индексированных данных.