Graph基础入门
The Graph是一个去中心化的索引协议,专注于整理和归纳区块链数据。对于具备复杂智能合约的项目而言,实现高级查询和操作,如聚合、搜索、关系和非粗略的过滤,是一项艰巨的任务。区块链属性,例如最终性、链重组或未封闭的区块,进一步增加了这一过程的复杂性,使得从区块链数据中检索正确的查询结果不仅耗时,而且在概念上也颇具挑战性。在这种背景下,The Graph通过一种去中心化的协议解决了这一问题,允许对区块链数据进行索引,并实现高性能和高效率的查询。这些索引的”子图”可以通过标准的GraphQL API进行查询。
The Graph网络实现了对Web3的查询层和API层的去中心化,解决了DApp开发者面临的艰难选择:是开发一个高性能的应用,还是开发一个完全去中心化的应用。
Graph 工作原理
Graph使用子图描述(也被称为子图清单)来明确如何对以太坊数据进行索引。子图清单详细定义了要在索引中包括哪些智能合约、合约中的事件,以及如何将合约事件数据映射到Graph数据库中。
一旦编写了子图清单,可以使用Graph CLI(命令行界面)将其定义存储在IPFS中,并通知索引者开始为该子图的数据进行索引。这一过程使得 Graph 能够有条不紊地构建索引,确保数据能够以高效、准确的方式在Graph数据库中得到整理和归纳。
流程遵循这些步骤:
- DApp 通过智能合约上的交易向以太坊添加数据。
- 智能合约在处理交易时发出一个或多个事件。
- Graph 节点不断扫描以太坊的新区块和它们可能包含的子图的数据。
- Graph 节点在这些区块中为子图找到以太坊事件并运行映射处理程序。 映射是一个 WASM 模块,它创建或更新 Graph 节点存储的数据实体,以响应以太坊事件。
- Graph 节点将 GraphQL 查询转化为对其底层数据存储的查询。
Graph 网络
Graph 网络是一个去中心化的索引协议,旨在有效组织区块链数据。通过应用程序使用 GraphQL 查询,该查询被称为子图,开发者能够访问网络上的索引数据。利用Graph,开发者有能力构建无需中央服务器,完全在公共基础设施上运行的应用程序。
Graph 网络的参与者包括索引人、策展人和委托人。索引人负责执行数据索引,策展人负责帮助定义并提供子图,而委托人则在网络上进行委托,支持网络的运行。这种分工协作的结构使得 Graph 网络能够以去中心化的方式提供高效的区块链数据索引服务。
为了维护Graph网络的经济安全性和确保被查询数据的完整性,参与者需持有和使用Graph代币(GRT)。GRT被设计为一种工作实用代币,它是一种基于ERC-20标准的代币,用于在网络中分配资源。通过拥有和使用GRT,参与者可以在Graph网络中执行各种任务,促进网络的正常运作和提供经济激励。这种代币的机制有助于确保网络的稳定性和安全性,同时保障被索引数据的准确性和完整性。
索引人
索引人是Graph 网络中的节点运营商,他们质押 Graph 通证 (GRT) 以提供索引和查询处理服务。 索引人通过他们的服务赚取查询费和索引奖励。 他们还根据 Cobbs-Douglas 回扣函数从回扣池中赚取收益,该回扣池与所有网络贡献者按他们的工作成比例共享。
索引人的最低抵押数量目前设置为 10万个 GRT。
委托人
委托人是Graph网络的参与者,他们将 GRT 代币委托给一个或多个索引人。通过委托程序,委托人能够在无需运行 Graph 节点的情况下为网络提供支持。
当委托人将 GRT 委托给索引人时,他们有机会获得索引人查询费用和奖励的一部分。索引人能够处理的查询数量受到索引人自身(以及委托的)份额和索引人为每个查询收取的价格的影响。因此,分配给索引人的份额越多,他们可以处理的潜在查询就越多。这种机制鼓励委托人选择并支持表现良好的索引人,同时为网络提供了更多的去中心化保障。