You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过ethers.js获取当前区块链的正式名称(如以太坊、Polygon)?

如何用ethers.js获取区块链的正式名称?

你提到的getNetwork()方法返回的name字段是ethers内部的网络标识(比如以太坊主网返回homestead,Polygon主网返回matic),确实无法直接获取“以太坊”“Polygon”这类用户常用的正式名称。以下是可行的解决方法:

核心思路

ethers本身没有内置链ID与用户友好名称的对应关系,最可靠的方式是自行维护链ID到正式名称的映射表——因为公链的链ID是固定且公开的。

修正后的示例代码

先纠正你原代码中的小错误:调用getNetwork()的是provider实例,而非ethers.providers命名空间,完整实现代码如下:

const ethers = require("ethers");

async function getChainOfficialName(rpcUrl) {
  // 初始化RPC Provider
  const provider = new ethers.providers.JsonRpcProvider(rpcUrl);
  // 获取网络链ID及ethers内置名称
  const { chainId, name: ethersInternalName } = await provider.getNetwork();

  // 维护链ID与正式名称的映射表(可按需扩展)
  const chainOfficialNames = {
    1: "以太坊",
    5: "以太坊Goerli测试网",
    137: "Polygon",
    80001: "Polygon Mumbai测试网",
    56: "币安智能链(BSC)",
    97: "BSC测试网",
    42161: "Arbitrum One",
    43114: "Avalanche C链"
  };

  // 优先返回正式名称,无匹配则返回ethers内置名称或链ID
  return chainOfficialNames[chainId] || ethersInternalName || `未知区块链(链ID: ${chainId})`;
}

// 调用示例
getChainOfficialName("https://mainnet.infura.io/v3/你的Infura密钥")
  .then(officialName => console.log("当前区块链:", officialName))
  .catch(error => console.error("查询失败:", error));

补充说明

  • 映射表可根据你需要支持的公链随时扩展,所有公链的链ID都是固定的,可通过行业公开资料获取。
  • 若不想手动维护映射表,也可以引入第三方链信息包,但手动维护是最轻量、无依赖的方案,能避免不必要的包体积或外部依赖风险。

内容的提问来源于stack exchange,提问作者Mueed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 13:01:12