介绍
@ethersproject/networks 是一个用于处理以太坊网络的 JavaScript 库,它提供了一系列 API 来获取网络信息、网络 ID、以太坊主链上的所有链(如 Ropsten、Kovan 等)以及链的节点列表。
本文将介绍如何使用 @ethersproject/networks 包,如何获取以太坊网络信息并使用其提供的功能。
安装
首先,我们需要使用 npm 安装 @ethersproject/networks:
npm install @ethersproject/networks
使用
导入 @ethersproject/networks:
const { getNetwork, getNetworks } = require('@ethersproject/networks');
@ethersproject/networks 提供了两个主要的 API:
- getNetworks():获取以太坊主链和所有现有网络的数组。
- getNetwork(network):传入一个以太坊网络 ID,返回一个包含网络信息的对象。
获取网络列表
我们可以使用 getNetworks() 方法获取所有的以太坊网络列表:
const networks = getNetworks(); console.log(networks);
这将返回以下内容:
[ { name: 'homestead', chainId: 1, ensAddress: ''}, { name: 'ropsten', chainId: 3, ensAddress: '0x112234455c3a32fd11230c42e7bccd4a84e02010' }, { name: 'rinkeby', chainId: 4, ensAddress: '0xe7410170f87102DF0055eB195163A03B7F2Bff4A' }, { name: 'kovan', chainId: 42, ensAddress: '0x6090A6e47849629b7245Dfa1Ca21D94cd15878Ef' }, { name: 'goerli', chainId: 5, ensAddress: '' }, { name: 'bsctestnet', chainId: 97, ensAddress: '' }, { name: 'bsc', chainId: 56, ensAddress: '' }]
获取特定网络
我们可以使用 getNetwork() 方法获取特定网络的信息,该方法需要传入一个网络 ID,例如:
const ethNetwork = getNetwork(1); console.log(ethNetwork);
这将返回:
-- -------------------- ---- ------- - -------- -- ----------- --- ----- ------------ ----------------- - ------------ ----- ------ ----- -------- ---- ----------- --- -------- --- ---- ----- ----- ----- ------------- ----- --------- ------ ---------------- -- ----------- ------ ------------ ------ -------- --------- --------- --- --------------- ----------- -------------- ---- - -
更多功能
此外,@ethersproject/networks 还提供了其它一些功能,例如:
getAddress(address)
传入一个以太坊地址,如果地址是 ENS 域,则返回解析后的地址,否则返回传入的地址。
getJsonRpcUrl(network, url?)
传入一个以太坊网络 ID 和可选的 JSON-RPC URL,返回一个具有网络信息的 JSON-RPC URL。
const ethJsonRpcUrl = getJsonRpcUrl(1); console.log(ethJsonRpcUrl);
这将返回:
https://mainnet.infura.io/v3/your-project-key
示例代码
使用 @ethersproject/networks 获取 Rinkeby 网络信息:
const { getNetwork } = require('@ethersproject/networks'); const rinkebyNetwork = getNetwork(4); console.log(`name: ${rinkebyNetwork.name}`); console.log(`chainId: ${rinkebyNetwork.chainId}`); console.log(`ensAddress: ${rinkebyNetwork.ensAddress}`); console.log(`jsonRpcUrl: ${rinkebyNetwork.getJsonRpcUrl()}`);
输出:
name: rinkeby chainId: 4 ensAddress: 0xe7410170f87102DF0055eB195163A03B7F2Bff4A jsonRpcUrl: https://rinkeby.infura.io/v3/your-project-key
总结
通过本文的介绍,我们了解了如何使用 @ethersproject/networks,获取以太坊网络信息及其它功能。它为我们提供便捷的方式获取网络信息,可以在以太坊区块链开发中起到关键的作用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedc1c7b5cbfe1ea0611f05