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

如何通过Chain ID获取对应区块链的区块浏览器地址?

通过Chain ID获取对应区块浏览器地址的方案

因为Ethers.js本身没有内置所有链的区块浏览器映射,你可以通过以下几种方式解决:

1. 手动维护Chain ID-浏览器URL映射表

这是最直接可控的方案,你可以根据业务需要,把常用链的信息整理成一个对象,然后通过Chain ID匹配对应的浏览器地址:

// 示例映射表,可根据需求扩展
const chainExplorerMap = {
  1: "https://etherscan.io/",
  5: "https://goerli.etherscan.io/",
  56: "https://bscscan.com/",
  137: "https://polygonscan.com/",
  42161: "https://arbiscan.io/",
  // 更多链的信息可自行添加
};

// 获取当前链ID并匹配浏览器地址
async function getBlockExplorerUrl() {
  const provider = new ethers.providers.Web3Provider(window.ethereum);
  const { chainId } = await provider.getNetwork();
  return chainExplorerMap[chainId.toString()] || "未知链的区块浏览器";
}

2. 利用链信息库获取元数据

可以引入专门维护链元数据的库(比如@wagmi/core或@web3modal/ethereum),这些库内置了大量公链的信息,包括区块浏览器URL,你只需传入Chain ID即可查询:

// 以@wagmi/core为例(需先安装依赖)
import { getChain } from '@wagmi/core';

async function getExplorerFromLibrary() {
  const provider = new ethers.providers.Web3Provider(window.ethereum);
  const { chainId } = await provider.getNetwork();
  const chain = getChain(chainId);
  return chain?.blockExplorers?.default?.url || "未找到对应区块浏览器";
}

3. 从MetaMask获取链的元数据

如果用户钱包中已经添加了对应链,你可以通过MetaMask的API请求该链的详细信息,其中包含区块浏览器地址:

async function getExplorerFromMetaMask() {
  const provider = new ethers.providers.Web3Provider(window.ethereum);
  const { chainId } = await provider.getNetwork();
  
  try {
    // 请求MetaMask获取所有已添加的链信息
    const chains = await provider.send("wallet_getChains", []);
    const targetChain = chains.find(chain => chain.chainId === `0x${chainId.toString(16)}`);
    return targetChain?.blockExplorerUrls?.[0] || "未找到对应区块浏览器";
  } catch (error) {
    console.error("获取链信息失败:", error);
    return "获取区块浏览器地址失败";
  }
}

注意事项

  • 手动映射表适合对链有明确需求的场景,可避免依赖第三方库;
  • 第三方库会自动更新链信息,但需要额外安装依赖;
  • 从MetaMask获取的方式仅适用于用户已添加该链的情况,若链未添加,可能需要引导用户添加后再获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:20:43