WEB 3.0 Graph 概览 About The Graph
Graph
用于充满活力的去中心化未来的 API
Graph 是一种用于查询以太坊和 IPFS 等网络的索引协议。
任何人都可以构建和发布称为子图的开放 API,使数据易于访问。
About The Graph
图表是什么
The Graph 是一种去中心化协议,用于从以太坊开始索引和查询来自区块链的数据。它使查询难以直接查询的数据成为可能。
Uniswap 等具有复杂智能合约的项目和 Bored Ape Yacht Club 等 NFT 计划将数据存储在以太坊区块链上,这使得直接从区块链中读取除基本数据之外的任何内容非常困难。
在 Bored Ape Yacht Club 的情况下,我们可以对合约执行基本的读取操作,例如获取某个 Ape 的所有者,根据 Ape 的 ID 或总供应量获取 Ape 的内容 URI,因为这些读取操作是经过编程的直接进入智能合约,但更高级的现实世界查询和操作,如聚合、搜索、关系和非平凡过滤是不可能的。
例如,如果我们想查询某个地址拥有的猿类,并按其特征之一进行过滤,我们将无法通过直接与合约本身交互来获取该信息。
要获取此数据,您必须处理曾经发出的每个传输事件,使用令牌 ID 和 IPFS 哈希从 IPFS 读取元数据,然后聚合它。
即使对于这些类型的相对简单的问题,在浏览器中运行的去中心化应用程序(dapp)也需要数小时甚至数天才能得到答案。
您还可以构建自己的服务器,在那里处理事务,将它们保存到数据库中,并在其之上构建 API 端点以查询数据。但是,此选项占用大量资源,需要维护,存在单点故障,并破坏了分散化所需的重要安全属性。
索引区块链数据非常非常困难。
最终性、链重组或未处理的块等区块链属性使这一过程进一步复杂化,不仅耗时而且在概念上难以从区块链数据中检索正确的查询结果。
The Graph 通过一个去中心化协议解决了这个问题,该协议索引并支持对区块链数据的高性能和高效查询。
然后可以使用标准 GraphQL API 查询这些 API(索引的“子图”)。
今天,有一个托管服务以及一个具有相同功能的去中心化协议。
两者都由 Graph Node 的开源实现提供支持。
图表是如何工作的
Graph 根据子图描述(称为子图清单)学习什么以及如何索引以太坊数据。
子图描述定义了子图感兴趣的智能合约,这些合约中要关注的事件,以及如何将事件数据映射到 The Graph 将存储在其数据库中的数据。
编写子图清单后,您可以使用 Graph CLI 将定义存储在 IPFS 中,并告诉索引器开始索引该子图的数据。
此图提供了有关部署子图清单后数据流的更多详细信息,以处理以太坊事务:

该流程遵循以下步骤:
去中心化应用程序通过智能合约上的交易将数据添加到以太坊。
智能合约在处理交易时发出一个或多个事件。
Graph Node 不断地扫描以太坊以寻找新的块以及它们可能包含的子图的数据。
Graph Node 在这些块中为您的子图查找 Ethereum 事件并运行您提供的映射处理程序。映射是一个 WASM 模块,它创建或更新 Graph Node 存储的数据实体以响应以太坊事件。
去中心化应用程序使用节点的 GraphQL 端点查询 Graph 节点以获取从区块链索引的数据。
Graph 节点反过来将 GraphQL 查询转换为对其底层数据存储的查询,以便利用存储的索引功能获取此数据。
去中心化应用程序在丰富的 UI 中为最终用户显示这些数据,他们使用这些数据在以太坊上发布新交易。循环重复。
后续步骤
在以下部分中,我们将更详细地介绍如何定义子图、如何部署它们以及如何从 Graph Node 构建的索引中查询数据。
在开始编写自己的子图之前,您可能需要查看 Graph Explorer 并探索一些已经部署的子图。
每个子图的页面都包含一个游乐场,可让您使用 GraphQL 查询该子图的数据。