The Graph — протокол индексации для организации и эффективного доступа к данным

Valeria123
3 min readOct 26, 2020

Перевод на русский язык выполнила Valeria144#5903
Оригинал документа

Вступление

Эта страница объяснит все, что вам нужно знать, чтобы использовать размещенное предложение The Graph. Давайте сначала опишем, что такое The Graph, а затем объясним, как вы можете начать!

Что такое The Graph

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

Например, с популярным приложением CryptoKitties dApp относительно просто задать следующие вопросы:

Сколько CryptoKitties принадлежит конкретной учетной записи Ethereum?

Когда родился конкретный CryptoKitty?

Это связано с тем, что эти шаблоны чтения напрямую поддерживаются методами balanceOf и getKitty, предоставляемыми контрактом.

Однако на другие вопросы ответить сложнее:

Кто являются владельцами CryptoKitties, рожденных в период с января по февраль 2018 года?

Чтобы ответить на этот вопрос, вы должны обработать все события рождения, а затем вызвать метод ownerOf для каждого созданного CryptoKitty.

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

Сегодня The Graph решает эту проблему с помощью размещенного сервиса, который индексирует данные блокчейна. Затем эти индексы («подграфы») можно запросить с помощью стандартного API GraphQL. В будущем размещенный сервис превратится в полностью децентрализованный протокол с теми же возможностями. Оба они поддерживаются реализацией Graph Ноды с открытым исходным кодом.

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

The Graph узнает, как индексировать данные Ethereum на основе описаний подграфов, известных как манифест подграфов. Описание подграфа определяет интеллектуальные контракты, представляющие интерес для подграфа, события в этих контрактах, на которые следует обратить внимание, и то, как сопоставить данные событий с данными, которые The Graph будет хранить в своей базе данных.

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

Эта диаграмма дает более подробную информацию о потоке данных после развертывания манифеста подграфа, связанного с транзакциями Ethereum:

Диаграмма потока данных

Поток следует за этими шагами:

  1. Децентрализованное приложение добавляет данные в Ethereum посредством транзакции смарт-контракта.
  2. Смарт-контракт генерирует одно или несколько событий при обработке транзакции.
  3. Graph Нода постоянно сканирует Ethereum на предмет новых блоков и данных для вашего подграфа, которые они могут содержать.
  4. Graph Нода находит события Ethereum для вашего подграфа в этих блоках и запускает обработчики отображений, которые вы предоставили. Отображение — это модуль WASM, который создает или обновляет объекты данных, которые Graph Нода хранит в ответ на события Ethereum.
  5. Децентрализованное приложение запрашивает у Graph Ноды данные, проиндексированные из цепочки блоков, используя конечную точку GraphQL Ноды. Graph Нода, в свою очередь, переводит запросы GraphQL в запросы для своего базового хранилища данных, чтобы получить эти данные, используя возможности индексации хранилища.
  6. Децентрализованное приложение отображает эти данные в удобном пользовательском интерфейсе для конечных пользователей, который они используют для выполнения новых транзакций в Ethereum.
  7. Цикл повторяется.

Следующие шаги

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

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

Пока вы находитесь в проводнике, убедитесь, что вы создали учетную запись, нажав кнопку «Зарегистрироваться с помощью Github». Это понадобится вам позже, когда вы захотите развернуть свой первый подграф.

--

--