#graph-protocol #indexer #p2p #waku #data-integrity #send-message

bin+lib graphcast-cli

CLI 参与Graphcast网络

1个不稳定发布

0.0.2 2023年8月29日

#4 in #graph-protocol

Apache-2.0

58KB
793

Graphcast CLI

Docs crates.io

简介

这是一个为Graphcast P2P网络上的非连续参与定制的Graphcast CLI。可用的消息类型是来自子图所有者的UpgradeIntentMessage,他们可以使用CLI发送有关他们拥有的子图的单一消息。

升级预同步

当开发者在子图上发布新版本(子图部署)时,在他们的API查询现有版本时,可能会出现数据服务不稳定。索引器可能需要一些时间来同步子图到链头,在他们停止同步之前版本之后。为了减少升级摩擦,开发者可以在当前部署哈希的Graphcast频道上发布子图之前发送一条消息,该频道包括子图ID、对应的新部署哈希以及必须验证为子图所有者的表示图账户。

运行子图广播并监听该频道的索引器将相应地接收消息并可能开始离链新的部署。

子图开发者仍然可以自行决定等待索引器同步到链头,在此之后,他们可以发布预览版本而不会中断API使用。这个工具提供了一个便利的功能,允许子图开发者...

🆙 示例用法

UpgradePresync

要向Graphcast主网发送名为 "QmacQnSgia4iDPWHpeY6aWxesRFdb8o5DKZUx96zZqEWrB" 的子图部署的消息,我们需要其子图ID "CnJMdCkW3pr619gsJVtUPAWxspALPdCMw6o7obzYBNp3"、图账户的私钥或图账户的操作员、子图所有者的图账户以及新的部署哈希。您可以将它们作为CLI参数提供

cargo run -- --private-key "abcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefgabcdefg1" \
--graph-account "0xe9a1cabd57700b17945fd81feefba82340d9568f" \
upgrade-presync --new-hash "QmVVfLWowm1xkqc41vcygKNwFUvpsDSMbHdHghxmDVmH9x" \
--subgraph-id "CnJMdCkW3pr619gsJVtUPAWxspALPdCMw6o7obzYBNp3"

或者假设使用环境变量为graph-account和private-key,则可以使用

cargo run upgrade-presync --subgraph-id CnJMdCkW3pr619gsJVtUPAWxspALPdCMw6o7obzYBNp3 --new-hash QmVVfLWowm1xkqc41vcygKNwFUvpsDSMbHdHghxmDVmH9x

从运行二进制文件到发送消息的整个过程应花费约45秒。可以预期终端会输出以下内容

2023-07-31T17:56:44.783866Z  INFO Creating Graphcast Agent, radio_name: "subgraph-radio", registry_subgraph: "https://api.thegraph.com/subgraphs/name/hopeyen/graphcast-registry-goerli", network_subgraph: "https://api.thegraph.com/subgraphs/name/graphprotocol/graph-network-goerli", graphcast_network: "testnet", max_retry: 5

2023-07-31T17:56:59.328490Z  INFO Sent message, msg_id: "0xc6b1131e0f8302abe48057f6fc69722ab46bd4285c2c4a8a8bdca6b221dcda96"

索引状态

在发送 UpgradeIntentMessage 后,开发人员可以定期检查在当前子图版本上积极分配的索引器的公共API中新的子图部署的索引状态。

这里相同的参数可以用作 UpgradeIntentMessage 的参数。然而,gossips不涉及此操作,并且查询是通过确定性查询进行的。

cargo run indexing-status --subgraph-id "0x00000444e5a1a667663b0adfd853e8efa0470698-0" --new-hash QmfDJFYaDX7BdwT6rYa8Bx71vPjTueUVDN99pdwFgysDiZ

🧪 测试

运行无线电的单元测试。我们建议使用 nextest 作为测试运行器。安装完成后,可以使用以下命令运行测试:

cargo nextest run

贡献

我们欢迎并感谢您的贡献!请参阅该仓库的 贡献指南行为准则安全说明

依赖项

~79MB
~1.5M SLoC