О The Graph

Reading time: 4 min

На этой странице Вы узнаете что такое протокол The Graph и как приступить к работе.

Что такое Graph?

Ссылка на этот раздел

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

Комплексные и сложные проекты такие, как Uniswap и проекты NFT такие, как Bored Ape Yacht Club сохраняют свои данные в блокчейн Ethereum в таком формате, что их сложно обработать посылая запросы непосредственно в блокчейн.

В случае с Bored Ape Yacht Club, мы можем выполнить базовые операции чтения данных смарт-контракт такие, как запрос на получение собственника определенного Ape, получение URI определенного Ape имея его ID, или запрос на получение информации об общем количестве Ape, потому что эти операции чтения запрограммированы непосредственно в смарт-контракте. Но более сложные запросы, которые встречаются в реальном мире и операции такие как, агрегация данных, поиск, связи между объектами, и не тривиальные фильтры попросту невозможны. На пример, если мы хотим получить Ape, владельцем которого является определенный адрес и отфильтровать, имея определенные характеристики, мы не сможем этого сделать взаимодействуя напрямую со смарт-контрактом.

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

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

Индексация данных - это очень трудоемкий процесс.

Такие свойства объектов блокчейна как "finality", реорганизация цепочек, или "uncled" блоки усложняют обработку запросов на столько, что запрос не просто сложно выполнить, но и в принципе невозможно получить корректные данные.

Протокол The Graph создан для решения данной проблемы путем распределенной сети узлов индексации и обработки запросов. Данные могут быть запрошены используя API (индексируемые "subgraphs") и стандарта GraphQL API. На сегодня существует 2 сети, работающие параллельно: централизованная и распределенная с одинаковым функционалом. Обе сети основаны на открытом коде Graph Node.

Как работает The Graph

Ссылка на этот раздел

The Graph протокол узнает что и как индексировать из блокчейна основываясь на инструкциях "subgraph", называемый "subgraph манифест". Subgraph описывает: смарт-контракт, данные которого будут индексироваться, события данного смарт-контракта и как данные будут связаны (структура таблиц базы данных) для сохранения данных в базе данных.

Как только Вы создаете subgraph манифест, Вы с помощью Graph CLI сохраняете манифест в сети IPFS и указываете индексатору начинать индексировать данные использую данный субграф.

Данная диаграмма более детально описывает порядок следования данных после того как subgraph манифест активирован на сети:

График, объясняющий потребителям данных, как The Graph использует Graph Node для обслуживания запросов

Данные проходят следующий путь:

  1. Dapp добавляет данные в Ethereum через транзакцию в смарт-контракте.
  2. Смарт-контракт создает одно или несколько событий обрабатывая транзакции.
  3. TheGraph нода постоянно сканирует блокчейна и обрабатывает каждый новый блок на предмет поиска данных описанных в Вашем субграфе.
  4. The Graph нода затем разбирает события, относящиеся к Вашему субграфу, которые записаны в данном блоке и структурирует их согласно схеме данных описанной в subgraph используя модуль WASM. Затем данные сохраняются в таблицы базы данных Graph Node.
  5. Dapp запрашивает у Graph Node данные, проиндексированные с блокчейна, используя конечную точку GraphQL ноды. В свою очередь, Graph Node переводит запросы GraphQL в запросы к его базовому хранилищу данных, чтобы получить эти данные, используя возможности индексации этого хранилища. Dapp отображает эти данные в насыщенном пользовательском интерфейсе для конечных пользователей, который они используют для создания новых транзакций в Ethereum. Цикл повторяется.

В следующих главах мы более детально разберем принципы построение субграфов, как их запускать, и как создавать запросы для извлечения данных из базы данных Graph Node.

Перед тем как приступить к разработке своего собственного субграфа, мы рекомендуем изучить Graph Explorer на предмет субграфов, которые уже развернуты на сети. Страничка каждого субграфа содержит "тестовую среду" в которой Вы можете потренироваться в создании GraphQL запросов.

Редактировать страницу

Предыдущий
Начнем
Следующий
Overview
Редактировать страницу