
以太坊子图继续迁移到Graph的去中心化网络。随着web3应用的增加,对规模和性能的需求也在增加。开发人员面临着一个重大的决定:是继续依赖中心化的技术,还是转向分散式的基础设施。
就寿命和可靠性而言,没有什么比去中心化更好的了。通过避开集中式的故障点,你将为你的用户提供一个他们可以持续访问的web3应用程序。许多项目已经在生产中验证了该网络,现在是你的项目迁移的最佳时机。为了帮助你迁移,这里有一个分步骤的指南。
假设
- 你已经在托管服务上部署了一个子图
- 该子图正在为以太网主网建立索引
- 子图没有IPFS或全文搜索的依赖性(这些目前在去中心化网络上不支持)。
资源
还建议熟悉Graph网络及其资源:
1. 回顾网络中每个参与者的角色。
- 索引器——Graph网络中的节点运营商,其质押Graph代币(GRT),以便子图编制索引并向消费者提供查询服务。
- 策划者——策划者利用他们对web3生态系统的了解,对应该由图谱网络中的索引者索引的子图进行评估并发出信号。
- 委托人——网络参与者将GRT委托给(即 “权益”)一个或多个索引器,从而增加他们可以服务的查询量。
- 注意——索引器根据子图的策展信号选择要索引的子图,因为这对他们的激励是最好的。因此,建议自我策展至少10k GRT,以便有足够数量的索引器来索引子图。作为dapp开发人员在你的子图上进行管理,建议你将这个数量的信号至少保留1-2年以上,以保证子图在网络上的长期存在。你也可以考虑在子图部署的时候进行策划,以避免被抢先的风险。
2. 子图工作室——这是一个启动平台,可以让你创建子图、添加元数据、部署和测试它们,然后再将他们发布到去中心化网络。在此处了解有关子图工作室的更多信息。
3. Graph浏览器——这是对去中心化网络子图和网络参与者数据世界的有组织的视图。它还允许你与协议进行交互。通过Graph浏览器,你可以探索网络、其子图、子图上的信号、查看子图的策展人·、查看每个子图的索引器、委托给索引器等等。在这里了解更多关于Graph浏览器的更多信息。
如何将你的子图从托管服务迁移到去中心化网络上
打开终端(CLI)并导航到你要部署的子图的源代码所在的文件夹,然后按照以下步骤操作:
- 运行yarn install来安装所有子图的依赖项
- 确保你安装了最新版本的graph-cli和graph-ts。在写这篇文章的时候,它是@graphprotocol/graph-ts@0.26.0 和@graphprotocol/graph-cli@0.28.1
- 确保subgraph.yaml中的apiVersion大于或等于0.0.5。最新的版本是0.0.6
- 使用新版本可能需要进行的更改运行graph codegen
- 运行graph build,检查你的子图是否还能构建。如果有构建错误,请参考AssemblyScript迁移指南
- 然后,使用你的钱包(如MetaMask)或Gnosis Safe Multisig登录Subgraph Studio,然后使用multisig的EOA(外部拥有的地址)之一
- 创建一个子图。选择“以太坊主网”作为索引网络并为其命名。一个名字的例子是“Yearn Vaults”——最好使用简单的描述性的词语

- 创建子图后填写详细信息,包括子图的描述、显示名称和项目的图像。信息丰富的描述将为策展人提供更多的背景信息,并可能在你的子图上吸引更多信号。

- 如上图所示,在子图工作室的右栏中,有关于如何创建新子图的说明。由于我们正在迁移现有的子图,因此我们只对两个命令感兴趣:Auth和deploy。你可以通过单击符号
来复制/粘贴这些命令。 - 返回你的终端,粘贴这些命令:

- 输入初始子图的版本标签。例如:v0.0.1
此时,你的子图现在已经部署在Subgraph Studio上,但还没有发布到去中心化网络上。你现在可以使用上面右栏顶部的临时查询URL来测试子图,以确保它按预期工作。顾名思义,这是一个临时的URL,不应该在生产中使用。

一旦你准备好让策展人和索引者在Graph浏览器中发现你的子图,你可以使用发布按钮执行此操作。
你还可以选择签署和发布你的子图到网络上,建议你这样做以吸引索引者并成为你的子图上的第一个策展人。
对于需要协助迁移其子图的开发者,这里正在有限的时间内接受迁移补助的申请。注意:子图的初始策展信号会产生1%的策展税。注意:如果你在你的子图上发出10,000 GRT信号,你的子图将有9,900 GRT信号,100GRT被烧毁。
一旦子图被发布到去中心化的网络上并且有足够的策展信号,索引者将开始对你的子图进行索引。根据你的子图的复杂性和效率,这可能需要一段时间。在此期间,你可以创建你的API密钥。
创建一个API密钥
你可以在Subgraph Studio这里生成一个API密钥。

在每周结束时,将根据在此期间发生的查询费用生成一张发票。这张发票将用你余额中的GRT自动支付。扣除查询费用后,你的余额将更新。查询费是通过Polygon网络以GRT支付的,鼓励你在Polygon上有GRT存入账单余额,或者通过以下步骤从以太网钱包桥接GRT:
- 在您选择的交易所购买GRT
- 将GRT发送至您的钱包
- 使用Subgraph Studio将GRT桥接到Polygon
- 在这个过程中,您还会收到少量的MATIC
- 将GRT添加到您的帐单余额中
注意:如果您使用的是多重签名,则这个过程会略有不同,因为您无法使用多重签名将GRT桥接到Polygon。您需要将GRT发送到EOA(外部拥有的地址)并从那里桥接到Polygon。一旦进入Polygon,您就可以加载多重签名地址。我们已经创建了一个特殊的工具来帮助你完成这些步骤:https://multisig-billing.thegraph.com/
我们建议通过以下两种方式限制API的使用来锁定它:
1. 授权子图
2. 授权域

在分散的网络上查询你的子图
现在你可以在Graph Explorer中检查网络上的索引器的索引状态。顶部的绿线表示在发布的时候,有8个索引器成功地索引该子图。同样在“索引器”选项卡中,你可以看到哪些索引器拾取了你的子图。

一旦第一个索引器完全索引了你的子图,你就可以开始在去中心化的网络上查询该子图。为了检索你的子图的查询URL,你可以通过点击单击URL旁边的符号
来复制/粘贴它。你会看到类似这样的东西:
- https://gateway.thegraph.com/api/[api-key]/subgraphs/id/S9ihna8D733WTEShJ1KctSTCvY1VJ7gdVwhUujq4Ejo
重要提示:请确保将[api-key]替换为上节中生成的实际API密钥。
现在你可以在你的dapp中使用该查询URL来发送你的GraphQL请求。
祝贺你!你现在是去中心化的先驱!
注意:由于网络的分布式特性,不同的索引器可能会索引到不同的区块。为了只接收新鲜的数据,你可以指定索引器必须索引的最小区块,以便用该区块为你的查询提供服务:{ number_gte: $minBlock }字段参数,如下面的例子所示:
{ stakers(block: { number_gte: 14486109 }) { id } }
在去中心化网络上更新您的子图
像往常一样更新代码,然后使用上面讨论的相同命令将新的子图部署到工作室。
graph deploy --studio<subgraph-slug>。
它将要求为这个新版本提供一个版本标签,与之前的版本相衔接。例如:v0.0.2
一旦更新的子图被部署到工作室,你就可以使用上面讨论的临时查询URL来测试它。

在开发子图并使用临时查询URL进行测试时,你可能希望将一个新的版本部署到工作室,而不发布到网络上。一旦你的新版本准备好投入生产,你可以只发布该版本网络。
请注意,在发布新版本时,共收取策展金额的0.5%作为更新税。这笔税在子图开发者和策展人之间平均分配。因此,你在发布新版本时提供总策展额的0.25%。
计算的例子:
一个子图有10,000个GRT信号,并发布了一个新的版本。
- 你需要在你的钱包里有25GRT将在该交易期间作为策展费被烧掉。
- 其他的25GRT将从信号中扣除。更新后子图将只有9,975 GRT的策展信号。
大多数索引器会索引子图的最新版本和之前的版本以提供稳定性。大多数策展人已经将信号设置为自动迁移到最新版本。
感谢你将你的子图迁移到去中心化的网络!
原文链接:https://thegraph.com/blog/how-to-migrate-ethereum-subgraph
---煤油灯科技victorlamp.com翻译整理---