【web3】

复制代码
检测钱包是否安装

方法一

javascript 复制代码
// npm install @metamask/detect-provider
import detectEthereumProvider from '@metamask/detect-provider'

// 检测钱包是否安装
const isProvider = await detectEthereumProvider()
if(!isProvider) {
    proxy.$modal.msgError("请安装钱包");
    return
}

方法二

javascript 复制代码
async function detectWallet() {
  try {
    // 检查浏览器是否支持以太坊钱包,如果没有检测到window.ethereum,意味着没有钱包扩展被安装
    if(typeof window.ethereum == "undefined") {
      proxy.$modal.msgError("请安装钱包");
      return
    }
    const isProvider = window.ethereum
    // 检测安装的钱包
    if(isProvider.isMetaMask) {
      console.log("MetaMask 钱包");
    }
    if (isProvider.isTokenPocket) {
      console.log("TokenPocket 钱包");
    } else {
      console.log("其他以太坊兼容钱包");
    }
  } catch (e) {
    console.log(e)
  }
}

window.ethereum 是浏览器中的以太坊提供者对象,它提供了与区块链交互的功能(例如发送交易,查询余额等)。

注意事项

安装 TP 钱包时,isProvider.isMetaMask 返回也是true,因为 window.ethereum 对象的 isMetaMask 属性并非专门区分不同钱包提供者的标识。很多以太坊兼容钱包会模仿 MetaMask 的行为,在 window.ethereum对象上设置类似的表示,以便兼容现有的 Web3 代码库,因此 isMetaMask 属性不能准确反映当前的钱包类型。

如果想解决这个问题,可以尝试检查其它钱包特定标识符(如 isTokenPocket),或者使用更复杂的逻辑来区分不同的以太坊兼容钱包。

或者通过 ethereum.chainId 区分钱包:window.ethereum.chainId 来查看当前连接的链 ID,然后根据链 ID 推测可能的提供者。

相关推荐
VI8664956I265 小时前
海外社交App的Web3革命:去中心化社交与Token经济实战指南
web3·去中心化·区块链
拾忆-eleven6 小时前
元宇宙2.0:当区块链成为数字世界的宪法
web3·区块链
CertiK6 小时前
CertiK创始人顾荣辉出席Unchained Summit,探讨Web3.0安全与合规路径
安全·web3
Xiaoxiaoxiao02092 天前
GAEA情感坐标背后的技术原理
人工智能·web3·区块链
giszz2 天前
【WEB3】web3.0是什么
web3
蚂小蚁3 天前
AI+云编程搞定Web3游戏开发:下一代游戏的新基建
web3·aigc·ai编程
帅云毅4 天前
Web3.0的认知补充(去中心化)
笔记·学习·web3·去中心化·区块链
ProgramHan5 天前
Web3革命——区块链技术重构数字世界的技术逻辑与产业未来
重构·web3·区块链
dapp04025 天前
Web3中心化交易所钱包-批量地址生成业务
web3
电报号dapp1195 天前
Web3实战:从零开发你的ERC20代币合约
web3·去中心化·区块链·智能合约