什么是区块链中的”图graph“?

23-01-02 banq

将数据存储在区块链上有其优势, 但也有缺点,因为获得数据可能很复杂。
"The Graph"可以成为一种高效索引和查询区块链数据的解决方案。

“The Graph”是区块链的去中心化协议,起始于以太坊。

Graph的核心功能是:
  • ·索引数据
  • ·查询数据


它允许您查询难以直接查询的数据。

例如,“Uniswap”和“Bored Ape Yacht Club”(BAYC)项目将数据存储在以太坊区块链上。 阅读和查询这些大项目的数据可能非常困难。

以BAYC为例子:
可以执行一些基本操作

我们可以得到:
  • ·某个猿类的主人
  • ·基于Ape ID的内容URI
  • ·总供给

这是因为它们是直接编码到智能合约中的。

获取数据并不容易,要获取数据,您必须:
  • ·处理每一个传输事件。
  • ·使用令牌ID和IPFS从IPFS读取元数据 散列。
  • ·汇总。


即使是这些简单的事情,在浏览器中也要花很多时间。

要解决获取数据的难题,可以有一个自制的解决方案:
  • ·建立自己的服务器。
  • ·在服务器中处理事务。
  • ·将它们保存到DB中。
  • ·在其上构建一个API端点来查询数据。


但自制的解决方案也有一些缺点:
  • ·资源密集型
  • ·需要维护
  • ·存在单点故障
  • ·它打破了安全分散化的属性。


为区块链数据编制索引非常困难。 区块链的一些特性使这一过程更加复杂:
  • finality
  • chain reorganizations
  • uncled blocks

在这种情况下,这不仅仅是时间的问题,也是操作的复杂性的问题。

Graph解决方案
Graph用一个去中心化的协议解决了这个问题。
它允许高效查询区块链数据。 
这些API(子图)可以使用标准GraphQL API进行查询。
有托管服务和具有相同功能的分散式协议。

Graph使用子图说明为数据编制索引。
它规定:

  • ·感兴趣的智能合约
  • ·重要事件
  • ·如何将事件数据映射到数据(存储在DB中)


基本流程
  1. Dapp添加事务
  2. 智能合约发出事件
  3. 图节点扫描新块/子图数据
  4. 图节点查找子图事件并运行映射处理程序
  5. Dapp使用GraphQL端点查询Graph Node中的数据并显示数据