The Graph 通常被称为“区块链谷歌”,可以轻松收集有关给定区块链的重要信息。 今天我们将仔细看看它是如何工作的。
The Graph 网络中有不同的角色:我们将从索引器开始,他们是当今分布式数据库的图书馆员。
本文作为教育交易所活动的一部分提供给你,并由 The Graph 提供支持。
The Graph,区块链的谷歌
Graph 是一种去中心化协议,允许你从区块链索引和查询数据,从以太坊开始。 各类开发者——去中心化应用程序、数据聚合器——确实需要提取他们感兴趣的信息,这不是一件容易的事。
图上的数据流
许多智能合约将其数据存储在以太坊上。 尽管我们对它们具有读取权限,但并不总是可以对我们感兴趣的数据进行分组、排序或组合。
Graph 正是对这种需求的回应。 因此,该协议使得以高性能方式索引大量区块链数据并轻松请求它们成为可能。 智能合约的数据在子图中被索引,然后可以通过 GraphQL API 找到它们——因此得名。 事实上,GraphQL 是一种众所周知的查询语言和运行时环境。
K线走势图 – 数据馈送
具体来说,对于给定的智能合约,图可以定义要观察和存储在子图中的事件。 映射(要索引的数据的映射)也在子图的描述中定义,称为宣言。
网络架构 The Graph
Graph 网络由不同的参与者组成,每个参与者都有自己的角色,如上一篇文章所述。 担任这些角色之一需要或多或少的技术背景。 每个参与者都有经济激励,通过 The Graph 的实用代币 GRT 尽可能地履行其职责。
The Graph 网络中的 6 种参与者
- 消费者(通常是开发人员)提交请求以检索所需的数据;
- 索引器负责收集区块链数据,对其进行排序并响应请求;
- 策展人负责向索引者指明要索引的子图;
- 委托人是参与索引过程的 GRT 持有者,将他的代币委托给索引者;
- 渔夫试图通过检测故障和不正确的请求来加强网络的安全性;
- 最后,当请求受到质疑时,仲裁员负责确定冲突的结果。
要了解协议的工作原理,你必须详细探索这些不同的角色。 首先,我们的文章将重点介绍索引器。
The Graph 的索引器、运算符节点
因此,索引器是网络的操作节点:我们可以将它们视为图书馆员,负责索引对开发人员有用的数据。 与现实世界中的图书馆员不同,他们不仅仅获得固定的薪水。
质押和奖励
要在 The Graph(Graph Node)上操作索引节点,必须将 GRT 代币置于托管中:这是质押机制。 最低要求是 100,000 GRT(这使我们每小时写作近 75,000 美元)。 有两种类型的质押奖励:
- 协议定义的年通货膨胀率为 3%;
- 请求的成本。
索引证明 (POI)
为了证明索引器提供的服务,有一种称为索引证明 (POI) 的机制。 这个证明允许网络验证索引器确实在索引分配给它的子图。 这样,如果 POI 符合仲裁章程的标准,索引器将获得其奖励。 奖励显然与索引器的股份成正比。
POI 必须从每个分配的相应时期的第一个区块开始提交到网络。 周期为 24 小时,每次分配的最大周期数为 28。然后,索引者可以在周期结束时手动接收奖励,或等待最大数量。
因此,POI 是由索引器签名的消息,在子图的索引过程中生成,从它的起源开始,然后在子图的每次状态变化时更新。 因此,POI 因索引器而异。 后者处于竞争状态,因此串通伪造虚假 POI 以期在没有工作的情况下获得奖励完全不符合他们的利益。
The Graph 查询费用
用户需要付费才能使用索引器的服务。 与由中心化服务操作的传统 API 不同,The Graph 提供了一个请求市场。 因此,索引器竞相以最优惠的价格提供服务。 因此,该价格由响应给定请求所需的带宽和计算量决定。 如果一个索引器下跌,网络的其余部分就会吸收需求。
当分配结束时,网关会收取费用,然后将费用放在每个子图的特定保险箱中。 奖励模型鼓励索引者锁定与他们将通过特定函数(Cobbs-Douglas 生产函数)收取的费用成比例的股份。
因此,请求费用的回报与矿池中索引器的贡献以及分配给子图的 TSO 数量(他们的股份)成正比。 有条件的支付渠道用于管理费用的收取和奖励的支付。
索引器可以在分配结束后获得回报; 然而,有一段争论期,在此期间有可能质疑他们的工作质量。
纠纷
必须能够验证索引器是否正确处理了其子图的数据。 事实上,恶意索引器可能会尝试在没有正常工作的情况下收集奖励(索引不正确的子图或根本不索引它)。
然后可以质询索引器的请求和分配。 我们称发起争议程序的“渔夫”。 它的作用是加强网络的安全性; 他在经济上受到鼓励,因为如果他发现错误,他会收回受罚索引器的部分资金。
但请注意,这是有代价的:你必须首先将 10,000 GRT 用于超越。 然后会出现三种结果:
- 如果渔夫错了,他的 10,000 GRT 股份被烧毁,索引器不会受到惩罚;
- 在平局的情况下,渔民收回他的质押,索引员不受处罚;
- 如果索引器错了,他将受到惩罚(削减):他失去了部分股份。 一半给了渔夫,另一半被烧了。
仲裁机制
它是一个链上仲裁系统,通过 The Graph 的治理协议来确定冲突的结果。 有两种类型的争议:
- 首先,单一认证纠纷:在这种情况下,渔夫提供了一个请求和来自索引器的认证(POI)。 如果索引器错误地执行了请求,他将受到惩罚,因此通过削减损失部分股份。 必须注意确保渔民收到的资金少于“削减”资金的数量:实际上,索引者可以“削减”自己……
- 第二,冲突证明的争议:在这里,渔夫为网络提供了来自两个不同索引器的同一请求的两个证明。 如果两个证明不匹配,我们可以确定一个或两个索引器已经或已经犯了错误。
仲裁章程允许仲裁员考虑由于软件错误或其他可能导致不公平削减的因素而导致的请求错误。
请求或分配只能在特定时间窗口内进行竞争:请求 7 次,分配 56 次。
索引证据是验证索引器工作完整性的主要机制。 但是还有第二种机制,称为子图可用性 Oracle,它确保每个索引器确实为其子图创建了清单。
事实上,在没有宣言的情况下,仲裁员无法解决与该子图有关的争议,索引者也无法再争夺后者。 因此,Oracle 观察 IPFS 端点以验证清单确实可用。
索引器的基础设施和技术规范
索引器必须具有能够确保其服务正常运行的基础架构。 节点的硬件配置有4个级别的要求:小型、标准、中型和大型。
硬件要求
当然,必须注意保护运营商节点的钱包。 同样,必须使用防火墙,以免暴露管理员端口和对数据库的访问。
组件
运营商节点连接到以太坊的 EVM 节点、IPFS 节点(用于数据收集)和 Postgres 数据库,还连接到其他促进其与网络交互的组件:
- PostgreSQL 数据库:这是索引器存储子图数据以及索引规则的地方。
- 以太坊端点:无论是单个以太坊客户端还是多个实例,都是关于暴露 JSON-RPC API。
- IPFS 节点:子图元数据存储在 IPFS 上。 索引器不需要维护自己的 IPFS 节点。
- 索引服务:用于接收网络外部的通信,共享成本模型,索引状态,将请求从网关传输到 The Graph 节点,以及使用网关管理支付渠道。
- 索引代理:它促进链上索引器的交互(网络注册、子图部署、分配管理)。
为了获得更好的可扩展性,必须注意将专用于请求的节点与专用于索引的节点分开。
部署
文档中提供了每个组件使用的端口列表。 应该非常小心地锁定管理端口(包括 Graph 节点的 JSON-RPC 端点和索引器管理端点)。
该文档还介绍了使用 Terraform 在 Google Cloud 上部署服务器基础架构的分步过程。
至于 The Graph 节点,它是一个 Rust 实现。 你需要 Rust、PostgreSQL 和 IPFS。 对于 Ubuntu 下的索引器,需要安装一些额外的包。 此处提供索引器命令行界面。
无需技术背景即可参与保护 The Graph
简单的 GRT 代币持有者对参与保护网络非常感兴趣 事实上,通过将他们的代币委托给索引器,他们也将获得部分奖励。 这使得他们的 GRT 代币不会被稀释并有所作为。
在接下来的文章中,我们将详细介绍委托流程。 然后,我们可以更详细地探索 The Graph 网络的策展人和开发人员的角色。 敬请关注
资源
- 官方网站
- 图基金会的概念空间
- 文档
- GitHub
- 推特
- Discord
- 电报
- 红迪网
文章理解图 (GRT) – 第 1 部分 – 谁是索引器? 首次出现在 Journal du Coin 上。