# 开发部署 FAQ

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

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

![](/files/-MZ6AzsnHjFTAwb-8V7R)

### **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 在控制台提供了各个网络的健康状态查询功能。

Heco 网络是： <https://h.hg.network/graphql/playground>

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

查询的典型 GraphQL 是：

`{`

&#x20;`indexingStatusesForSubgraphName(subgraphName:"pancakeswap/blocks") {`

&#x20;`subgraph`

&#x20;`health`

&#x20;`synced`

&#x20;`fatalError {`

&#x20;`handler`

&#x20;`message`

&#x20;`deterministic`

&#x20;`}`

&#x20;`nonFatalErrors {`

&#x20;`handler`

&#x20;`}`

&#x20;`chains {`

&#x20;`chainHeadBlock {`

&#x20;`number`

&#x20;`__typename`

&#x20;`}`

&#x20;`latestBlock {`

&#x20;`number`

&#x20;`__typename`

&#x20;`}`

&#x20;`}`

&#x20;`}`

`}`

你可以将上述代码中的“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条数据


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.hg.network/product-chan-pin-bang-zhu/cheng-xu-kai-fa/zi-tu-kai-fa-faq.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
