MetaMask以太坊钱包

MetaMask以太坊钱包MetaMask 文档 https docs metamask io guide ethereum provider htmlMetaMask 下载 https metamask io download html 连接 MetaMaskimpo react exportdefaul constconnect gt 判断用户是否安装 MetaMask 钱包插件

MetaMask文档 https://docs.metamask.io/guide/ethereum-provider.html

MetaMask下载 https://metamask.io/download.html

连接MetaMask

import React from 'react' export default function Demo() { 
    const connectWall = () => { 
    //判断用户是否安装MetaMask钱包插件 if (typeof window.ethereum === "undefined") { 
    //没安装MetaMask钱包进行弹框提示 alert("请安装MetaMask") } else { 
    //如果用户安装了MetaMask,你可以要求他们授权应用登录并获取其账号 window.ethereum.enable() .then(function (accounts) { 
    // 判断是否连接以太 if (window.ethereum.networkVersion !== "1") { 
    console.log('当前网络不在以太坊') } //如果用户同意了登录请求,你就可以拿到用户的账号 console.log('用户钱包地址', accounts[0]) }) .catch(function (reason) { 
    // 如果用户拒绝了登录请求 if (reason === "User rejected provider access") { 
    console.log('用户拒绝了登录请求') } else { 
    console.log("其他情况"); } }); } } return ( <div> <button onClick={ 
   connectWall}>连接钱包</button> </div> ) } 

MetaMask以太坊钱包

使用ethereum连接与web3连接的使用场景

方式1

var web3 = new Web3(new Web3.providers.HttpProvider('http://localhost:8545')); 

这样可以指定连接的地址,且可以同时连接N个区块链(声明且new多次)

方式2

window.ethereum 

方式3

var web3 = new Web3(window.ethereum); 

这样通过web3连接当前链地址,多个new也可以同时连多个不同的链

ethereum常用API

更全面的文档请看官方文档:https://docs.metamask.io/guide/ethereum-provider.html

Web3 浏览器检测

if (typeof window.ethereum !== 'undefined') { 
    console.log('MetaMask is installed!'); } 

连接到 MetaMask,并且获取到账户

const accounts = await ethereum.request({ 
    method: 'eth_requestAccounts' }); const account = accounts[0];//账户被锁定是获取不到的 

链 ID

十六进制 十进制 网络
0x1 1 以太坊主网(Mainnet)
0x3 3 Ropsten 测试网络
0x4 4 Rinkeby 测试网络
0x5 5 歌尔力测试网
0x2a 42 科文测试网

ethereum.isConnected

true如果提供者连接到当前链,则返回,false否则返回

var isConnected = ethereum.isConnected() 

ethereum.request

监听连接

ethereum.on('connect', (connectInfo) => { 
    if(ethereum.isConnected()){ 
    // 确定提供程序何时/是否连接。 } }); 

监听断开

ethereum.on('disconnect', (error) => { 
    }); 

监听帐户更改

ethereum.on('accountsChanged', (accounts) => { 
    }); 

监听链改变

ethereum.on('chainChanged', (chainId) => { 
    }); 

监听信息

ethereum.on('message', (message) => { 
    }); 

当 MetaMask 提供者收到一些应该通知消费者的消息时,它会发出此事件。消息的种类由type字符串标识。

RPC 订阅更新是message事件的常见用例。例如,如果您使用的是创建一个订阅eth_subscribe,每个订阅更新将被发射作为message一个事件type的eth_subscription。

错误

ethereum.request(args)方法抛出的错误

{ 
    message: string; code: number; data?: unknown; } 
code 描述
4001 请求被用户拒绝
-32602 参数无效
-32603 内部错误

有关完整的错误列表,请参阅EIP-1193 和 EIP-1474

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/214100.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午4:59
下一篇 2026年3月18日 下午4:59


相关推荐

  • R语言怎么画火山图

    R语言怎么画火山图R 语言如何绘制火山图 1 什么是火山图 火山图是散点图的一种 它将统计测试中的统计显著性量度 如 pvalue 和变化幅度 FC 相结合 从而能够帮助快速直观地识别那些变化幅度较大且具有统计学意义的数据点 基因等 常应用于转录组 基因组 蛋白质组 代谢组等统计数据 常见问题 1 什么是 foldchange 翻译成中文是差异倍数 简单来说就是基因在一组样品中的表达值的均值除以其在另一组样品中的表达值的均值 所以火山图只适合展示两组样品之间的比较 2 为什么要做 Log2 转换 两个数相除获得的

    2026年3月26日
    2
  • 学php和java哪个好_java和php哪个更好学[通俗易懂]

    学php和java哪个好_java和php哪个更好学[通俗易懂]php相对于Java来说更好学一点,因为它入门比较简单,而且很多网站都是使用php语言来开发的,它还具备非常成熟的开源代码和模板,并且php是公认比较容易学的语言。从入门的角度来看,PHP比JAVA简单非常多,但是从熟练到精通的角度来看,JAVA比PHP要容易一点,或者至少难度不会比PHP高。Java是一门计算机编程语言,和C++、Python等编程语言一样,Java应用广泛。从我们日常用的安卓手…

    2022年7月7日
    25
  • 计算机操作系统学习笔记 第一章、操作系统概论

    计算机操作系统学习笔记 第一章、操作系统概论详细介绍了计算机系统概论,带大家入门计算机操作系统

    2022年6月28日
    31
  • 程序设计基础知识点思维导图_程序设计基础思维导图

    程序设计基础知识点思维导图_程序设计基础思维导图 

    2022年8月20日
    9
  • 安装Aras Innovator

    安装Aras Innovator学习任何软件 首先要会安装它 ArasInnovato 运行在 windows 环境下 安装不复杂 首先 要知道运行 ArasInnovato 需要以下几个组件 1 WEB 服务 IIS 2 数据库服务 MS SQL 3 ArasInnovato 服务步骤 1 申请 license 在要安装 ArasInnovato 的电脑上运行 CMD 在命令行里输入 IPCONFIG ALL 找到电脑的 MAC 地址 登录 http www aras com support LicenseKeySe

    2026年3月16日
    2
  • python 关键字「建议收藏」

    python 关键字「建议收藏」1.and,orand,or为逻辑关系用语,Python具有短路逻辑,Falseand返回False 不执行后面的语句,Trueor直接返回True,不执行后面的语句

    2022年7月6日
    27

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号