Docs
搜索⌘ K
  • 主页
  • 关于 The Graph
  • 支持的网络
  • 协议合约
  • 子图
    • 子流
      • 代币 API
        • AI Suite
          • 索引
            • 资源
              子图 > 开发 > 创建

              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,否则您的子图将会运行失败。
              ⁠在GitHub上编辑⁠

              开始你的子图子图清单
              在此页面上
              • 概述
              • 开始
              • 安装 Graph CLI
              • 创建子图
              • 基于现有合约
              • 基于子图示例
              • 将新数据源添加到现有子图
              • 获取 ABI
              The GraphStatusTestnetBrand AssetsForum安全Privacy PolicyTerms of Service