将数据存储在区块链上有其优势, 但也有缺点,因为获得数据可能很复杂。
"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中)
基本流程
- Dapp添加事务
- 智能合约发出事件
- 图节点扫描新块/子图数据
- 图节点查找子图事件并运行映射处理程序
- Dapp使用GraphQL端点查询Graph Node中的数据并显示数据