在 MetaMask 中为自定义代币添加 Logo(图标),可以通过以下步骤完成。需要注意的是,MetaMask 本身并不直接允许用户自行上传代币 Logo,而是依赖 Token Lists(代币列表)或区块链浏览器(如 Etherscan)的数据自动显示。但如果你的代币已在主流网络(如 Ethereum、BSC、Polygon 等)上发行,可以通过以下方法确保 Logo 正确显示:
方法 1:通过 Token Lists 提交代币信息

MetaMask 默认从官方代币列表(如 CoinGecko 或 Token Lists)获取代币 Logo。如果你的代币未显示 Logo,可以尝试以下步骤:
将代币提交到 CoinGecko 或 CoinMarketCap
登录 CoinGecko 或 CoinMarketCap 的开发者页面,提交代币信息(需满足其收录条件)。
审核通过后,MetaMask 会自动同步 Logo。
创建或提交至 Token List
编写符合标准的代币列表 JSON 文件(参考 Token Lists 文档)。
提交到公开的 Token Lists 仓库或注册到 tokenlists.org。
方法 2:通过 Etherscan(或其他区块链浏览器)提交
如果代币部署在以太坊或其他支持的网络(如 BSC、Polygon),可以通过区块链浏览器提交 Logo:
访问 Etherscan
打开代币的 Etherscan 页面(例如:
https://etherscan.io/token/<合约地址>
)。提交 Logo
点击页面右上角的 "Update Token Info"(需登录并验证身份)。
上传代币 Logo(需满足格式要求:透明背景的 PNG,尺寸建议 256x256 像素)。
提交后等待审核(通常需数天)。
方法 3:开发者自动推送方法
代币发行者或DApp 开发者可在网站或前端整合MetaMask 的wallet_watchAsset
RPC,触发「添加资产」弹窗并显示自订Logo。
1. 接口介绍
方法名称:
wallet_watchAsset
标准: Ethereum Improvement Proposal 747(EIP‑747)
功能:在用户当前网络下,弹出MetaMask 对话框,提示加入该合约地址的代币及Logo。
2. 范例程式码
const tokenAddress = “0xYourTokenContractAddress”; const tokenSymbol = “SYM”; // 最多5 字元 const tokenDecimals= 18; // 小数位 const tokenImage = “https://yourdomain/logo.png”; // 必须为HTTPS try { const wasAdded = await window.ethereum.request({ method: “wallet_watchAsset”, params: { type: “ERC20”, // 或其他支援类型 options: { address: tokenAddress, symbol: tokenSymbol, decimals: tokenDecimals, image: tokenImage, }, }, }); if (wasAdded) { console.log(“代币已成功添加至MetaMask!”); } else { console.log(“用户拒绝添加代币。”); } } catch (error) { console.error(“添加代币失败:”, error); }
此范例亦适用于实验性NFT 支援及其他EVM 网络代币。
注意事项
安全性:切勿通过非官方渠道上传代币 Logo,避免恶意篡改。
自动同步:一旦代币信息被 CoinGecko/Etherscan 收录,MetaMask 通常会在 24-48 小时内更新 Logo。
网络支持:不同网络(如 BSC、Polygon)需分别提交对应区块链浏览器的 Logo 申请。