当前位置: 首页 > news >正文

【web3】

检测钱包是否安装

方法一

// npm install @metamask/detect-provider
import detectEthereumProvider from '@metamask/detect-provider'

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

方法二

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 推测可能的提供者。

相关文章:

  • const应用
  • 系统与网络安全------网络应用基础(2)
  • MySQL面试专题
  • 【设计模式】组合模式
  • AI究竟是人类助手还是替代者
  • 【时时三省】(C语言基础)选择结构和条件判断
  • 分布式爬虫框架Scrapy-Redis实战指南
  • 单链表的查找和插入,删除操作
  • python:AI+ music21 构建 LSTM 模型生成爵士风格音乐
  • flutter 自定义控件RenderObjectWidget使用
  • DeepSeek 协程API 调用与 vllm推理,llamafactory本地vllm部署
  • 神经网络解决非线性二分类
  • 穿越之程序员周树人的狂人日记Part2__重构人间Beta版
  • ngx_http_add_location
  • python速通小笔记-------3.Numpy库
  • 深入理解 Spring 框架中的 AOP 技术
  • Python----计算机视觉处理(Opencv:图像轮廓特征查找:外接轮廓)
  • 华为HCIE方向那么多应该如何选择?
  • Linux的SPI子系统的原理和结构详解【SPI控制器(spi_master)、SPI总线(device-driver-match匹配机制)、SPI设备、SPI万能驱动`spidev.c`】
  • 前端性能优化方案总结
  • 新片|《我仍在此》定档5月,《新·驯龙高手》同步北美上映
  • 陕西省副省长窦敬丽已任宁夏回族自治区党委常委、统战部部长
  • 年轻人的事业!6家上海人工智能企业畅想“模范生”新征程
  • 科学家为AI模型设置“防火墙”,以防止被不法分子滥用
  • 中信银行一季度净利195.09亿增1.66%,不良率持平
  • 专访|首夺天元头衔创生涯历史,王星昊打算一步一步慢慢来