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

小狐狸JSON-RPC:钱包连接,断开连接,监听地址改变

detect-metamask
创建连接,并监听钱包切换

一、连接钱包,切换地址(监听地址切换),断开连接

  1. 使用npm安装 @metamask/detect-provider在您的项目目录中:
npm i @metamask/detect-provider
import detectEthereumProvider from "@metamask/detect-provider";
async onLoad() {if (typeof window.ethereum !== "undefined") {console.log("MetaMask 已安装!");}this.provider = await detectEthereumProvider();this.provider.request({method: "eth_accounts"}).then(this.handleAccountsChanged).catch((err) => {console.error(err);});this.provider.on("accountsChanged", this.handleAccountsChanged);
},
methods: {// 这个方法,只在钱包APP内可以监听到地址切换,浏览器不行。handleAccountsChanged(accounts) {console.log('监听', accounts);if (accounts.length === 0) {console.log("请连接到MetaMask");} else if (accounts[0] !== this.address) {console.log('地址发生更换', this.address);this.address = accounts[0];}},// 连接钱包async getAccount() {// 1.向用户请求连接钱包,弹出钱包选择账户let res = await window.ethereum.request({"method": "wallet_requestPermissions","params": [{"eth_accounts": {}}]}).catch((err) => {// User rejected the request. (用户拒绝了请求。)console.log(err.message);});if(res){// 2.选择地址并确认let accounts = await this.provider.request({method: "eth_requestAccounts"}).catch((err) => {if (err.code === 4001) {console.log("请连接到MetaMask.");} else {console.error(err);}});this.address = accounts[0]; // 当前钱包地址}},// 关闭连接,仅适用于浏览器扩展。async closeAccount() {var res = await window.ethereum.request({"method": "wallet_revokePermissions","params": [{"eth_accounts": {}}]});this.address = ''console.log('连接已断开', res);},
}

实现的效果图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.lryc.cn/news/327755.html

相关文章:

  • union在c语言中什么用途
  • 2024年华为OD机试真题- 寻找最优的路测线路-Java-OD统一考试(C卷)
  • WPF 多路绑定、值转换器ValueConvert、数据校验
  • 【Linux多线程】线程的同步与互斥
  • Linux网卡bond的七种模式详解
  • 【学习笔记】java项目—苍穹外卖day01
  • C++之STL整理(2)之vector超详用法整理
  • 机器学习作业二之KNN算法
  • 笔记81:在服务器中运行 Carla 报错 “Disabling core dumps.”
  • ensp中pc机访问不同网络的服务器
  • CSGO赛事管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)
  • win10微软拼音输入法 - bug - 在PATH变量为空的情况下,无法输入中文
  • Java安全篇-Fastjson漏洞
  • Flink系列之:Flink SQL Gateway
  • Linux基础篇:解析Linux命令执行的基本原理
  • LeetCode-热题100:153. 寻找旋转排序数组中的最小值
  • 游戏客户客户端面经
  • 网站业务对接DDoS高防
  • Python-VBA编程500例-024(入门级)
  • 蓝桥杯 - 小明的背包1(01背包)
  • 学习java第二十六天
  • Go第三方框架--gin框架(二)
  • 五分钟搞懂UDS刷写34/36/37服务(内含S19文件解读)
  • 知识图谱智能问答系统技术实现
  • 【unity】如何汉化unity编译器
  • 为什么Python不适合写游戏?
  • 查询优化-提升子查询-UNION类型
  • 【数据结构 | 图论】如何用链式前向星存图(保姆级教程,详细图解+完整代码)
  • 气象预测新篇章:Python人工智能的变革力量
  • 基于微信小程序的民宿短租系统设计与实现(论文+源码)_kaic