Docs
搜索⌘ K
  • 主页
  • 关于 The Graph
  • 支持的网络
  • 协议合约
  • 子图
    • 子流
      • 代币 API
        • Hypergraph
          • AI Suite
            • 索引
              • 资源
                子图 > 操作指南

                7 分钟

                使用子图合成的集成数据

                利用子图构成来加快开发时间。创建基础子图,带有基本数据,然后在它上方构建附加子图。

                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节点实例。

                第 1 步:部署源子图区块时间

                第一个源子图计算每个区块的区块时间。

                • 它从其它子图中导入方案并添加一个带有“时间戳”字段的block实体,这代表了每个区块被开采的时间。
                • 它监听与时间相关的区块链事件(例如区块时间戳),并处理此数据以相应地更新子图的实体。

                要在本地部署此子图,请运行以下命令:

                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.

                注意:

                • 对源子图的任何更改都可能生成一个新的部署ID。
                • 请务必更新子图数据源地址中的部署 ID 来利用最新的更改。
                • 所有源子图均应在部署合成子图之前部署。

                关键函数

                • 它提供了一个综合数据模型,其中包括所有相关的区块计量。
                • 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⁠.
                • 若要将高级功能添加到您的子图,请参阅子图高级功能。
                • 要了解更多关于聚合的信息,请查看 Timeseries and Aggreg。
                ⁠在GitHub上编辑⁠

                计费使用分叉快速轻松地调试子图
                在此页面上
                • 介绍
                • 合成的好处
                • 架构概述
                • 先决条件
                • Source Subgraphs
                • Composed Subgraphs
                • 开始
                • 详情
                • 第 1 步:部署源子图区块时间
                • 第 2 步:部署源子图区块时间
                • 第 3 步:定义源子图中区块大小
                • 第 4 步:合并进区块统计子图
                • 要点前瞻
                • 其他资源
                The GraphStatusTestnetBrand AssetsForum安全Privacy PolicyTerms of Service