4 минуты
О The Graph
Что такое Graph?
The Graph — это мощный децентрализованный протокол, который позволяет беспрепятственно запрашивать и индексировать данные блокчейна. Это упрощает сложный процесс запроса данных блокчейна, ускоряя и упрощая разработку децентрализованных приложений.
Понимание основ
Проекты со сложными смарт-контрактами, такие как Uniswap, и инициативы по созданию NFT, подобные Bored Ape Yacht Club, хранят данные в блокчейне Ethereum, что делает практически невозможным непосредственное чтение чего-либо, кроме базовых данных, из блокчейна.
Сложности, которые могут возникнуть без использования The Graph
В приведенном выше примере, Bored Ape Yacht Club, Вы можете выполнять базовые операции чтения контракта. Вы можете узнать владельца определенного Ape, прочитать URI контента Ape на основе его идентификатора или узнать общее предложение.
-
Это можно сделать, поскольку данные операции чтения запрограммированы непосредственно в самом смарт-контракте. Однако более сложные, конкретные и реальные запросы и операции, такие как агрегирование, поиск, связи и нетривиальная фильтрация, невозможны.
-
Например, если Вы хотите узнать об Apes, принадлежащих определенному адресу, и уточнить свой поиск на основе конкретной характеристики, Вы не сможете получить эту информацию путем прямого взаимодействия с самим контрактом.
-
Чтобы получить больше данных, Вам придется обработать каждое когда-либо созданное событие
передачи
, прочитать метаданные из IPFS, используя идентификатор токена и хэш IPFS, а затем агрегировать их.
Почему это является проблемой?
Децентрализованному приложению (dapp), запущенному в браузере, потребуются часы или даже дни, чтобы получить ответ на эти простые вопросы.
В качестве альтернативы у Вас есть возможность настроить собственный сервер, обрабатывать транзакции, хранить их в базе данных и создать конечную точку API для запроса данных. Однако этот вариант ресурсоемок, требует обслуживания, создает единую точку отказа и нарушает важные требования безопасности, необходимые для децентрализации.
Такие свойства блокчейна, как окончательность, реорганизация чейна и необработанные блоки, усложняют процесс, делая получение точных результатов запроса из данных блокчейна трудоемким и концептуально сложным.
The Graph предлагает решение
The Graph solves this challenge with a decentralized protocol that indexes and enables the efficient and high-performance querying of blockchain data. These APIs (indexed “Subgraphs”) can then be queried with a standard GraphQL API.
Сегодня существует децентрализованный протокол, поддерживаемый реализацией с открытым исходным кодом Graph Node, который обеспечивает этот процесс.
Как функционирует The Graph
Indexing blockchain data is very difficult, but The Graph makes it easy. The Graph learns how to index Ethereum data by using Subgraphs. Subgraphs are custom APIs built on blockchain data that extract data from a blockchain, processes it, and stores it so that it can be seamlessly queried via GraphQL.
Специфические особенности
-
The Graph uses Subgraph descriptions, which are known as the Subgraph manifest inside the Subgraph.
-
The Subgraph description outlines the smart contracts of interest for a Subgraph, the events within those contracts to focus on, and how to map event data to the data that The Graph will store in its database.
-
When creating a Subgraph, you need to write a Subgraph manifest.
-
After writing the
subgraph manifest
, you can use the Graph CLI to store the definition in IPFS and instruct an Indexer to start indexing data for that Subgraph.
The diagram below provides more detailed information about the flow of data after a Subgraph manifest has been deployed with Ethereum transactions.

Данные проходят следующий путь:
- Dapp добавляет данные в Ethereum через транзакцию в смарт-контракте.
- Смарт-контракт генерирует одно или несколько событий во время обработки транзакции.
- Graph Node continually scans Ethereum for new blocks and the data for your Subgraph they may contain.
- Graph Node finds Ethereum events for your Subgraph in these blocks and runs the mapping handlers you provided. The mapping is a WASM module that creates or updates the data entities that Graph Node stores in response to Ethereum events.
- Dapp запрашивает у Graph Node данные, проиндексированные с блокчейна, используя конечную точку GraphQL ноды. В свою очередь, Graph Node переводит запросы GraphQL в запросы к его базовому хранилищу данных, чтобы получить эти данные, используя возможности индексации этого хранилища. Dapp отображает эти данные в насыщенном пользовательском интерфейсе для конечных пользователей, который они используют для создания новых транзакций в Ethereum. Цикл повторяется.
Что далее
The following sections provide a more in-depth look at Subgraphs, their deployment and data querying.
Before you write your own Subgraph, it’s recommended to explore Graph Explorer and review some of the already deployed Subgraphs. Each Subgraph’s page includes a GraphQL playground, allowing you to query its data.