5 分钟
安装 Graph CLI
为了在The Graph的去中心化网络上使用您的Subgraph,您需要在Subgraph studio中创建一个API密钥 。建议您在子图中添加至少3000 GRT的信号,以吸引2-3个索引人。要了解更多关于信号的信息,请查看策展。
概述
Graph CLI是一个命令行界面,便于开发人员对The Graph执行命令。它处理Subgraph manifest,并编译mappings ,以创建将Subgraph部署到Subgraph Studio所需的文件以及网络。
开始
安装 Graph CLI
Graph CLI是用TypeScript编写的,您必须安装node
和npm
或 yarn
才能使用它。检查最新CLI版本。
在本地计算机上,运行以下命令之一:
Using npm
1npm install -g @graphprotocol/graph-cli@latest
Using yarn
1yarn global add @graphprotocol/graph-cli
graph-int
命令可用于从现有合约或示例Subgraph中设置新的Subgraph项目。如果您已经将智能合约部署到首选网络,则可以从该合约引导一个新的子图开始。
创建子图
基于现有合约
以下命令创建一个子图,对现有合约的所有事件进行索引:
1graph init \2 --product subgraph-studio3 --from-contract <CONTRACT_ADDRESS> \4 [--network <ETHEREUM_NETWORK>] \5 [--abi <FILE>] \6 <SUBGRAPH_SLUG> [<DIRECTORY>]
-
该命令试图从Etherscan检索合约ABI。
- Graph CLI依赖于公共RPC端点。虽然偶尔会出现故障,但重试通常可以解决此问题。如果故障持续存在,请考虑使用本地ABI。
-
如果缺少任何可选参数,它将引导您完成交互式表单。
-
<SUBGRAPH_SLUG>
是您在Subgraph Studio 中的子图 ID,可以在您的子图详细信息页面上找到。
基于子图示例
以下命令从示例子图初始化新项目:
1graph init <SUBGRAPH_SLUG> --from-example=example-subgraph
-
这个示例子图基于 Dani Grant 的 Gravity 合约,该合约管理用户的头像,并在头像创建或更新时发出
NewGravatar
或UpdateGravatar
事件。 -
子图通过将
Gravatar
实体写入Graph Node存储并确保这些实体根据事件进行更新来处理这些事件。
将新数据源
添加到现有子图
数据源
是子图的关键组成部分。它们定义了子图索引和处理的数据来源。dataSource
指定要监听哪个智能合约、处理哪些事件以及如何处理它们。
最近版本的Graph CLI支持通过graph add
命令向现有子图添加新的数据源
:
1graph add <address> [<subgraph-manifest default: "./subgraph.yaml">]23Options:45 --abi <path> Path to the contract ABI (default: download from Etherscan)6 --contract-name Name of the contract (default: Contract)7 --merge-entities Whether to merge entities with the same name (default: false)8 --network-file <path> Networks config file path (default: "./networks.json")
详情
graph add
命令将从Etherscan获取ABI(除非使用--abi
选项指定了ABI路径),并创建一个新的dataSource
,类似于graph-init
指令如何从合约
创建data. Source
,从而相应地更新模式和映射。这允许您从代理合约中索引实现合约。
-
--merge-entities
选项标识开发人员希望如何处理实体
和事件
名称冲突:-
如果为
真
:新的数据源
应该使用现有的事件处理程序
和实体
。 -
如果为
假
:应使用${dataSourceName}{EventName}
创建新的实体
和事件
处理程序。
-
-
合约
地址
将写入相关网络的networks.json
。
注意:使用交互式CLI时,在成功运行graph init
后,将提示您添加新的dataSource
。
获取 ABI
ABI 文件必须与您的合约相匹配。 获取 ABI 文件的方法有以下几种:
- 如果您正在构建自己的项目,您可以获取最新的 ABI。
- 如果您正在为公共项目构建子图,则可以将该项目下载到您的计算机,并通过使用
npx hardhat compile
,或使用solc
进行编译来获取 ABI。 - 您还可以在Etherscan上找到 ABI,但这并不总是可靠的,因为在那里上传的 ABI 可能已过期。 请确保您拥有正确的 ABI,否则您的子图将会运行失败。