✍️
HyperGraph-Decentralized Data Engine
  • 欢迎了解 HyperGraph
  • 💰Farm - 挖矿帮助
    • 了解挖矿
      • DeFi挖矿的本质
      • 挖矿需要的准备工作
      • DeFi挖矿与其他挖矿的异同
      • 挖矿产出、轮次
      • 矿池介绍
    • 钱包基本操作
      • 火币钱包注册Heco地址
      • TokenPocket(Heco)
      • MetaMask 的网页版
      • MetaMask 连接 Heco 主网
      • BitKeep 钱包
    • 挖矿资产准备
      • 如何转入HT或者其他主流资产
      • 兑换所需币种
      • 添加流动性
    • 质押挖矿
    • 常用术语
    • 合约操作
      • 合约操作介绍
      • 合约操作环境准备
      • 合约数据读取
      • 合约写操作执行
  • 🛠️Product - 产品帮助
    • 产品使用篇
      • HyperGraph 的产品业务
      • 控制台注册与登录
      • 添加子图
      • 查看子图
    • 程序开发
      • 业务交互流程
      • 快速入门
      • 远程部署
      • 开发部署 FAQ
      • 子图开发
      • GraphQL API
      • AssemblyScript API(一)
      • AssemblyScript API(二)
    • 项目范例
      • Uniswap subgraph 范例
      • Uniswap-info 范例
    • 常用子图
    • 服务用户
  • 🪜HyperBridge
    • HyperBridge
    • Token 跨链
    • 主流跨链
    • 主流流动性提供
    • 主流购买Gas
  • 🧩 Network - 节点网络
    • 总体介绍
    • 网络建设
    • 节点角色
    • 节点设备
    • 节点查看与管理
    • 节点托管类型
    • 定价方案第二版
    • 节点网络 FAQ
    • Heco 网络公开归档节点
  • 📖 INTRODUCTION - 项目介绍
    • HyperGraph 简介
    • HyperGraph 优势
    • 跨链支持
    • 常用合约地址
    • 通证分配
    • HyperGraph 审计报告
  • 🔬DApp开发教程
    • DApp开发基础认识
    • 开发前的准备
    • 基础开发环境
    • Web3与Solidity基础
    • ERC720 开发实例
    • ERC721 DApp 开发实例
  • 🔗 Links - 其他链接
    • HyperGraph 官网
    • HyperGraph White Paper
    • HyperGraph 挖矿页
    • Heco 区块浏览器
    • BSC 区块浏览器
    • English Document
Powered by GitBook
On this page
  • 1、子图创建命名对格式是有要求的吗?
  • 2、现在支持在哪些网络创建子图?
  • 3、在不同的网络是否支持同样的子图名称?
  • 4、是否可以更改部署类型,比如开始是Github 类型,调整成为API方式部署?
  • 5、是否支持子图部署改名或者删除?
  • 6、子图索引的数据源来自于哪里?
  • 7、要进行数据查询,对于合约编写有何建议?
  • 8、graph init 能支持多个合约创建子图吗?
  • 9、我想获得数据索引的状态,有办法吗?
  • 10、我能否使用其他项目的子图代码进行索引?
  • 11、我能否在子图开发中使用 ethers.js 等开发程序库?
  • 12、子图中对于合约事件的处理顺序是什么样的?
  • 13、在代码中可以取得数据源的网络和合约地址等信息吗?
  • 14、有什么提高子图索引性能的做法?
  • 15、有没有对子图查询合并查询的计划?
  • 16、查询时最多可以取回多少条数据?

Was this helpful?

  1. Product - 产品帮助
  2. 程序开发

开发部署 FAQ

Previous远程部署Next子图开发

Last updated 3 years ago

Was this helpful?

1、子图创建命名对格式是有要求的吗?

是的,强烈建议遵照HyperGraph 控制台页面上要求的格式命名您的子图。在添加子图时,只能填写小写字母,- 和数字 组成的名字,比如 subgraphdemo,dodoex-v2 等,而部署在HyperGraph 网络上的实际子图将为:“子图名称/公链名称”,也就是在控制台子图详情中显示的名字。如果所解析的合约在Heco网络上,子图名称为:“subgraphdemo/heco”, 如果是所解析的命约在BSC 网络上,而子图名称为:“subgraphdemo/bsc”。

2、现在支持在哪些网络创建子图?

目前HyperGraph 支持在 Heco 和BSC 等高性能区块链网络上的合约创建子图,后续将支持更多的网络,包括 Heco、BSC 的测试网、其他基于 EVM 的高性能区块链网络,甚至以太坊网络。

3、在不同的网络是否支持同样的子图名称?

暂时HyperGraph 网络中的子图名称是全局唯一的。即使在不同的网络中,也不能有相同的名字。系统也会给出检测,请按提示操作。

4、是否可以更改部署类型,比如开始是Github 类型,调整成为API方式部署?

不支持自行调整部署方式,如有特殊需求,请跟技术支持联系调整

5、是否支持子图部署改名或者删除?

暂时不提供子图部署改名或者删除。

6、子图索引的数据源来自于哪里?

子图索引的数据一般来源于合约,在合约中定义了事件,索引程序会根据合约检索区块,分析事件进行分析存储,形成查询数据源。正像在web3.js 中调用合约需要ABI等信息一样,在子图开发中同样是如此。

7、要进行数据查询,对于合约编写有何建议?

对于需要查询的数据,建议在合约中,使用事件(events)来进行关联。这是索引子图数据最为快捷的方式。也是强烈推荐的方式。

如果合约不包含事件,子图可以使用合约调用以及区块处理器来触发索引,但是这样的话,速度会慢很多。

​另外,由于GraphQL会基于合约的事件生成查询实体,所以,在事件的参数中,参数名不要用id这样的定义,不然会跟实体自动生成的id字段名相冲突。

8、graph init 能支持多个合约创建子图吗?

graph init 命令用于创建一个初始项目的脚手架,所以功能并不是很复杂,所以不支持多个合约创建子图。如果想添加多个合约,可以后续在配置文件中加入更多的数据源。

9、我想获得数据索引的状态,有办法吗?

HyperGraph 在控制台提供了各个网络的健康状态查询功能。

BSC 网络是:https://ph.hg.network/graphql/playground

查询的典型 GraphQL 是:

{

indexingStatusesForSubgraphName(subgraphName:"pancakeswap/blocks") {

subgraph

health

synced

fatalError {

handler

message

deterministic

}

nonFatalErrors {

handler

}

chains {

chainHeadBlock {

number

__typename

}

latestBlock {

number

__typename

}

}

}

}

你可以将上述代码中的“pancakeswap/blocks”换成你想要的子图进行查询。

如果有多个版本,也可以将上述查询中的 indexingStatusesForSubgraphName 替换成为: "indexingStatusForCurrentVersion" 或 "indexingStatusForPendingVersion" 进行有针对性的查询。

10、我能否使用其他项目的子图代码进行索引?

子图代码公开的情况下,可以基于其他项目的子图代码来进行数据查询与索引。

11、我能否在子图开发中使用 ethers.js 等开发程序库?

由于子图开发用 AssemblyScript 编写,所以并不能使用这类程序库,建议如果有其他的库需要调用数据,可以在数据存储之后,在查询端,使用你想要的库对数据进行调用。

12、子图中对于合约事件的处理顺序是什么样的?

在子图中,事件处理的顺序跟他们在区块中的顺序是一致的。跟所监听的合约个数、顺序等无关。

13、在代码中可以取得数据源的网络和合约地址等信息吗?

可以,通过引入 “graph-ts”,使用如下示例代码即可:

import { dataSource } from '@graphprotocol/graph-ts'

dataSource.network()

dataSource.address()

14、有什么提高子图索引性能的做法?

HyperGraph 的部署网络,已经进行了一定程度的部署优化,让用户可以快速添加子图和索引数据。对于用户自行添加的子图查询程序,强烈建议在 subgraph.yaml 中使用 startBlock ,以指定从某个区块开始进行索引。一般起始区块指定为合约创建所在的区块。

15、有没有对子图查询合并查询的计划?

确实在某些业务中,一个应用或者页面,需要大量地用到查询请求,已经在规划与开发查询子图查询合并的网关,以实现子图查询的缓存、连接复用等,以提高查询的效率。

16、查询时最多可以取回多少条数据?

默认每个查询集合返回100条数据,如果想要查询更多数据,可以用分页式的查询代码,比如

someCollection(first: 1000, skip: <number>) { ... }

来最多一次查询1000条数据

Heco 网络是:

🛠️
https://h.hg.network/graphql/playground