Docs
Поиск⌘ K
  • Главная страница
  • О The Graph
  • Поддерживаемые сети
  • Protocol Contracts
  • Субграфы
    • Субпотоки
      • Token API
        • AI Suite
          • Индексирование
            • Ресурсы
              Субграфы > 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СтатусТестовая сетьБрундовые ресурсыФорумБезопасностьПолитика конфиденциальностиУсловия обслуживания