快速开始
This guide will quickly take you through how to initialize, create, and deploy your subgraph to the Subgraph Studio or the hosted service.
确保您的子图将从一个受支持的网络 中索引数据。
本指南是在假设您具备以下条件的情况下编写的:
- 您选择的网络上的智能合约地址
- GRT来策划你的子图
- 一个加密钱包
Go to the Subgraph Studio and connect your wallet.
连接后,您可以单击“创建子图”开始。选择您选择的网络,然后单击“继续”。
Graph CLI 是用 JavaScript 编写的,需要安装npm 或yarn 来使用。
在本地计算机上,运行以下命令之一:
Using npm:
npm install -g @graphprotocol/graph-cli
Using yarn:
yarn global add @graphprotocol/graph-cli
您可以在Subgraph Studio的子图页面找到针对您特定子图的命令。
初始化子图时,CLI工具会要求您提供以下信息:
- 协议:选择子图索引数据的协议
- 子图段塞:为您的子图创建一个名称。您的子图段塞是子图的标识符。
- 创建子图的目录:选择您的本地目录
- 以太坊网络(可选):您可能需要指定子图将从哪个EVM兼容网络索引数据
- 合约地址:找到要查询数据的智能合约地址
- ABI:如果ABI不是自动填充的,则需要将其手动输入为JSON文件
- 起始区块:建议您在子图索引区块链数据时输入起始区块以节省时间。您可以通过查找部署合约区块来定位起始区块。
- 合约名称:输入您的合约名称
- 将合约事件作为实体进行索引:建议您将其设置为true,因为它将自动为每个发出的事件向子图添加映射
- 添加其他合约(可选):您可以添加其他合约
通过运行以下命令从现有合约初始化子图:
graph init --studio <SUBGRAPH_SLUG>
请参阅下面的屏幕截图,以获取初始化子图时所需的示例:
前面的命令创建了一个原始子图,可以将其用作构建子图的起点。当对子图进行更改时,将主要使用三个文件:
- 清单(subgraph.yaml)--清单定义子图将索引哪些数据源。
- 模式(schema.graphql)--GraphQL 模式定义从子图中检索到的数据。
- AssemblyScript 映射(mapping.ts)--将数据源中的数据转换为模式中定义的实体的代码。
想了解更多如何编写子图的信息,请参阅创建子图。
一旦您的子图被编写好,请运行以下命令:
$ graph codegen$ graph build
- 认证并部署子图。部署密钥可以在子图工作室的子图页面上找到。
$ graph auth --studio <DEPLOY_KEY>$ graph deploy --studio <SUBGRAPH_SLUG>
您将被要求输入一个版本标签。强烈建议使用(语义化版本)semver 进行版本控制,如0.0.1
。尽管如此,您可以自由选择任何字符串作为版本,比如:v1
,version1
,asdf
。
您可以通过在playground部分进行示例查询来测试子图。
日志会告诉你你的子图是否有任何错误。操作子图的日志如下所示:
如果子图失败了,可以通过使用 GraphiQL Playground查询子图的健康状况。注意,你可以利用下面的查询,输入你的子图的部署 ID。在这种情况下,Qm... 是部署 ID(可以在子图页面的详细信息下找到)。下面的查询会提示,当一个子图失败时,则可进行相应调试。
{indexingStatuses(subgraphs: ["Qm..."]) {nodesyncedhealthfatalError {messageblock {numberhash}handler}nonFatalErrors {messageblock {numberhash}handler}chains {networkchainHeadBlock {number}earliestBlock {number}latestBlock {number}lastHealthyBlock {number}}entityCount}}
一旦你的子图被部署到子图工作室,你已经测试了它,并准备把它投入生产,你就可以把它发布到去中心化的网络。
在子图工作室中,单击您的子图。在子图的页面上,您可以单击右上角的发布按钮。
选择您希望发布子图的网络。建议将子图发布到 Arbitrum One,以利用更快的交易速度和更低的Gas费用。
在你可以查询你的子图之前,索引人需要开始在上面提供查询。为了简化这个过程,你可以使用GRT来策展你自己的子图。
在撰写本文时,建议您用10000 GRT策展自己的子图,以确保它被索引并可尽快查询。
为了节省gas成本,您可以在将子图发布到Graph的去中心化网络时选择此按钮,在发布子图的同一交易中策展子图:
现在,您可以通过将GraphQL查询发送到子图的查询URL来查询子图,您可以单击查询按钮找到该查询URL。
如果你没有你的API密钥,你可以通过免费的、速率有限的临时查询URL从你的去中心化应用查询,该URL可用于开发和暂存。
For more information about querying data from your subgraph, read more here.