多个应用程序设置一个网络/链配置,该配置可以简化为一个对象,其中每个键都是支持的链(如chainId )的唯一ID,如下所示:
// typescript:
enum ChainIds {
Ethereum = 1,
BSC = 56,
AVAX = 43114,
};
const NetworkConfig = {
[ChainIds.Ethereum]: {
blockTime: 15_000, // 15s/block
gasLimit: 15_000_000 // 15m/block
},
[ChainIds.BSC]: {
blockTime: 3_000, // 3s/block
gasLimit: 100_000_000 // 100m/block
},
[ChainIds.AVAX]: {
blockTime: 3_000, // 3s/block
gasLimit: 8_000_000 // 8m/block
},
};
const chainId = 1; // how to get the chainId in subgraph environment
const gasPerS = NetworkConfig[chainId].gasLimit/NetworkConfig[chainId].blockTime;这是以网络不可知论的方式开发子图的一种方法,但是我找不到从图表文档中的子图中获取chainId的任何方法。是否有可能这样做,如果没有,如何/应该如何开发一个子图的方式与链无关。
发布于 2022-10-20 09:23:45
网络名称可以通过dataSource访问,如下所示:
import { dataSource } from "@graphprotocol/graph-ts";
const chainName = dataSource.network(); // returns network name
const chainId = ChainIds[chainName];在图形托管服务上支持的网络列表可以找到这里。
还可以使用subgraph.yaml配置配置为多个网络配置D3中列出的数据源地址,如图的文档中所示。
https://ethereum.stackexchange.com/questions/137807
复制相似问题