Docs
Поиск⌘ K
  • Главная страница
  • О The Graph
  • Поддерживаемые сети
  • Protocol Contracts
  • Субграфы
    • Субпотоки
      • Token API
        • Hypergraph
          • AI Suite
            • Индексирование
              • Graph Horizon
                • Ресурсы
                  Субграфы > How-to Guides

                  5 минуты

                  Агрегируйте данные с помощью композиции субграфов

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

                  Optimize your Subgraph by merging data from independent, source Subgraphs into a single composable Subgraph to enhance data aggregation.

                  Введение

                  Composable Subgraphs enable you to combine multiple Subgraphs’ data sources into a new Subgraph, facilitating faster and more flexible Subgraph development. Subgraph composition empowers you to create and maintain smaller, focused Subgraphs that collectively form a larger, interconnected dataset.

                  Преимущества композиции

                  Композиция субграфов — это мощная функция для масштабирования, позволяющая вам:

                  • Повторно использовать, смешивать и комбинировать существующие данные
                  • Оптимизировать разработку и запросы
                  • Использовать несколько источников данных (до пяти исходных субграфов)
                  • Ускорить синхронизацию вашего субграфа
                  • Обрабатывать ошибки и оптимизировать повторную синхронизацию

                  Обзор архитектуры

                  Настройка для этого примера включает два субграфа:

                  1. Исходный субграф: отслеживает данные событий как объекты.
                  2. Зависимый субграф: использует исходный субграф в качестве источника данных.

                  Вы можете найти их в директориях source и dependent.

                  • Исходный субграф — это базовый субграф для отслеживания событий, который записывает события, генерируемые соответствующими контрактами.
                  • Зависимый субграф ссылается на источник субграфа как на источник данных, используя объекты из источника в качестве триггеров.

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

                  Предварительные требования

                  Source Subgraphs

                  • All Subgraphs need to be published with a specVersion 1.3.0 or later (Use the latest graph-cli version to be able to deploy composable Subgraphs)
                  • See notes here: https://github.com/graphprotocol/graph-node/releases/tag/v0.37.0⁠
                  • Immutable entities only: All Subgraphs must have immutable entities when the Subgraph is deployed
                  • Pruning can be used in the source Subgraphs, but only entities that are immutable can be composed on top of
                  • Source Subgraphs cannot use grafting on top of existing entities
                  • Aggregated entities can be used in composition, but entities that are composed from them cannot performed additional aggregations directly

                  Composed Subgraphs

                  • You can only compose up to a maximum of 5 source Subgraphs
                  • Composed Subgraphs can only use datasources from the same chain
                  • Nested composition is not yet supported: Composing on top of another composed Subgraph isn’t allowed at this time
                  • Aggregated entities can be used in composition, but the composed entities on them cannot also use aggregations directly
                  • Developers cannot compose an onchain datasource with a Subgraph datasource (i.e. you can’t do normal event handlers and call handlers and block handlers in a composed Subgraph)

                  Additionally, you can explore the example-composable-subgraph⁠ repository for a working implementation of composable Subgraphs

                  Начнем

                  The following guide provides examples for defining 3 source Subgraphs to create one powerful composed Subgraph.

                  Специфические особенности

                  • Чтобы сделать этот пример простым, все исходные субграфы используют только блок-обработчики. Однако в реальной среде каждый исходный субграф будет использовать данные из разных смарт-контрактов.
                  • Приведенные ниже примеры показывают, как импортировать и расширять схему другого субграфа для улучшения его функциональности.
                  • Каждый исходный субграф оптимизирован для работы с конкретным объектом.
                  • Все перечисленные команды устанавливают необходимые зависимости, генерируют код на основе схемы GraphQL, строят субграф и деплоят его на ваш локальный экземпляр Graph Node.

                  Шаг 1. Развертывание исходного субграфа для времени блока

                  Этот первый исходный субграф вычисляет время блока для каждого блока.

                  • Он импортирует схемы из других субграфов и добавляет объект block с полем timestamp, представляющим время, когда был добыт каждый блок.
                  • Он слушает события блокчейна, связанные с временем (например, метки времени блоков), и обрабатывает эти данные для обновления объектов субграфа соответствующим образом.

                  Чтобы развернуть этот субграф локально, выполните следующие команды:

                  1npm install2npm run codegen3npm run build4npm run create-local5npm run deploy-local

                  Шаг 2. Развертывание исходного субграфа для стоимости блока

                  Этот второй исходный субграф индексирует стоимость каждого блока.

                  Ключевые функции

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

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

                  Шаг 3. Определите размер блока в исходном субграфе

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

                  Ключевые функции

                  • Он импортирует существующие схемы из других субграфов и добавляет объект block с полем size, представляющим размер каждого блока.
                  • Он слушает события блокчейна, связанные с размерами блоков (например, хранение данных или объем), и обрабатывает эти данные для обновления объектов суграфа соответствующим образом.

                  Шаг 4. Объединение в субграфе для статистики блоков

                  This composed Subgraph combines and aggregates the information from the source Subgraphs above, providing a unified view of block statistics. To deploy this Subgraph locally, run the same commands as above.

                  Примечание:

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

                  Ключевые функции

                  • Он предоставляет объединенную модель данных, которая охватывает все соответствующие метрики блоков.
                  • It combines data from 3 source Subgraphs, and provides a comprehensive view of block statistics, enabling more complex queries and analyses.

                  Основные выводы

                  • Этот мощный инструмент масштабирует разработку ваших субграфов и позволяет комбинировать несколько субграфов.
                  • The setup includes the deployment of 3 source Subgraphs and one final deployment of the composed Subgraph.
                  • Эта функция открывает возможности масштабируемости, упрощая как разработку, так и эффективность обслуживания.

                  Дополнительные ресурсы

                  • Check out all the code for this example in this GitHub repo⁠.
                  • Чтобы добавить продвинутые функции в ваш субграф, ознакомьтесь с продвинутыми функциями субграфа.
                  • Чтобы узнать больше об агрегациях, ознакомьтесь с разделом Временные ряды и агрегации.
                  ⁠Редактировать на GitHub⁠

                  Выставление счетовБыстрая и простая отладка субграфа с использованием форков
                  На этой странице
                  • Введение
                  • Преимущества композиции
                  • Обзор архитектуры
                  • Предварительные требования
                  • Source Subgraphs
                  • Composed Subgraphs
                  • Начнем
                  • Специфические особенности
                  • Шаг 1. Развертывание исходного субграфа для времени блока
                  • Шаг 2. Развертывание исходного субграфа для стоимости блока
                  • Шаг 3. Определите размер блока в исходном субграфе
                  • Шаг 4. Объединение в субграфе для статистики блоков
                  • Основные выводы
                  • Дополнительные ресурсы
                  The GraphСтатусТестовая сетьБрундовые ресурсыФорумБезопасностьПолитика конфиденциальностиУсловия обслуживания