区块链是一个去中心化账本,账本记录的是数据,不过在浏览器里看到的是,交易打包成块后,交易数据都变成了哈希。在以太坊的erc20协议作用下,我们可以看到转账交易等这些基础数据。
但对于用户来说,查询区块链的数据,如果浏览器没有特殊显示的情况下,只能看到哈希,在可能的需求里,区块链上会有很多类型的数据,这些数据需要索引和查询。
这些索引和查询可以把数据进行统计,进行聚合显示,帮助用户使用。
在这个部分,The Graph是一个示例,是一个专做索引和查询的协议,所有的区块链网络理论上都需要部署这样的工具。
例如,The Graph在以太坊上,使查询难以直接查询的数据成为可能。
像Uniswap等具有复杂智能合约的项目和Bored Ape Yacht Club这样的NFT将数据存储在以太坊区块链上后,从区块链上读取基本数据以外的任何内容都是困难的。
例如 Bored Ape Yacht Club NFT,对合约执行读取操作,可以获得拥有者信息、总供应量、内容 URI等,这些都是合约里的基本信息,如果想像搜索引擎一样实现高级的查询和操作,如聚合、搜索、筛选都是不可能的。
因为如果想要获取这些数据,就必须处理交易者曾经发出的所有事件,用代币 ID 和 IPFS 哈希从IPFS存储位置读取元数据,然后对其进行聚合。费时费力。
The Graph 通过一个去中心化的协议解决了这个问题,该协议可以对区块链数据进行索引并实现高性能和高效的查询。然后可以使用标准 GraphQL API 查询这些 API(索引“子图”)。
具体实现流程如下:
1.去中心化应用程序通过智能合约上的交易向以太坊添加数据,智能合约在处理交易时发出一个或多个事件.
2.The Graph节点不断扫描以太坊以寻找新块以及它们可能包含的子图数据。The Graph节点在这些块中为子图查找以太坊事件并运行映射处理程序。映射是一个 WASM 模块,它创建或更新Graph Node 存储的数据实体以响应以太坊事件。
3.去中心化应用程序使用节点的GraphQL 端点查询 Graph Node 以获取从区块链索引的数据。Graph Node 反过来将 GraphQL 查询转换为对其底层数据存储的查询,以利用存储的索引功能获取这些数据。去中心化应用程序在丰富的用户界面中为最终用户显示这些数据,他们用这些用户界面在以太坊上发布新交易。
Ps:每个子图的页面都包含一个 Playground,可使用 GraphQL 查询该子图的数据。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。