首页/新闻资讯/正文详情

ethers.js v6 实战:合约事件监听、多签与签名验证踩坑全解析

发布时间:2026/9/24 7:10:13 来源:云帆数科 栏目:资讯中心
ethers.js v6 实战:合约事件监听、多签与签名验证踩坑全解析
ethers.js 是从前端接以太坊/合约的核心库,但很多人在 v6 升级后踩坑:BigNumber没了、事件监听收不到、getEvent拼错哈希、签名验证总是失败。本文用完整可跑代码带你解决事件监听、批量操作、签名 EIP-712 这几个高频场景,全部基于 ethers.js v6。## 适用场景- 前端要实时监听合约事件(Transfer、Deposit),但on()一直收不到回调- 要把地址/事件签名拼成 topic,但哈希对不上导致监听静默失败- 要做 EIP-712 + 离线签名验签(如登录、授权),但 recover 出来地址不对## 核心技术栈-ethers.js v6:ethers.Contract、ContractEvent、Signer、verifyTypedData-EIP-1193 钱包 / JsonRpcProvider:连 MetaMask 或公共 RPC-EIP-712:结构化签名,标准登录/授权场景—## 完整可跑代码示例### 1. 初始化连接与合约封装(v6 写法)javascript// init.js — 运行: node init.jsimport { ethers } from 'ethers';// 连接 RPC(可读链上数据)const provider = new ethers.JsonRpcProvider('https://mainnet.infura.io/v3/YOUR_KEY');// 连接钱包(可签名/发送交易)// const wallet = new ethers.Wallet(PRIVATE_KEY, provider);// ERC20 标准接口const ABI = [ 'function balanceOf(address) view returns (uint256)', 'function transfer(address to, uint256 amount) returns (bool)', 'event Transfer(address indexed from, address indexed to, uint256 value)',];const token = new ethers.Contract('0xUSDC_ADDRESS', ABI, provider);// v6 关键差异:没有了 .BigNumber,直接用原生 bigintconst bal = await token.balanceOf('0x0...');console.log('balance:', bal.toString()); // bigint 要 toStringconsole.log('eth unit:', ethers.formatEther(bal)); // 格式化v6 要点:不再有ethers.BigNumber,数值统一是 JS 原生bigint;ethers.utils拆分到顶层(ethers.formatEther、ethers.getAddress等都在顶层导出)。### 2. 事件监听:正确拼 topic 才能收得到javascript// listen.js — 运行: node listen.jsimport { ethers } from 'ethers';const provider = new ethers.Js

相关推荐

智慧医疗OCT图像视网膜内囊肿液检测数据集VOC+YOLO格式1460张1类别
智慧医疗OCT图像视网膜内囊肿液检测数据集VOC+YOLO格式1460张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数):1460标注数量(xml文件个数):1460标注数量(txt文件个数):1460标注类别… · 2026/9/24 7:09:55

阿里云ACK智算升级:从GPU调度到弹性伸缩的云原生实践
阿里云ACK智算升级:从GPU调度到弹性伸缩的云原生实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 7:09:55

Yii 2 会话与 Cookie 完全指南:对象化封装、自定义存储与安全加固实践
Yii 2 会话与 Cookie 完全指南:对象化封装、自定义存储与安全加固实践

后端Web框架 【免费下载链接】yii2 Yii 2: The Fast, Secure and Professional PHP Framework 项目地址: https://gitcode.com/gh_mirrors/yi/yii2 点击查看 免费下载 本文基于 Yii 2 官方指南(docs/guide-ja/runtime-sessions-cookies.md,与… · 2026/9/24 7:09:36

Simple Live:四大直播平台统一观看的完整指南
Simple Live:四大直播平台统一观看的完整指南

Simple Live:四大直播平台统一观看的完整指南 【免费下载链接】dart_simple_live 简简单单的看直播 项目地址: https://gitcode.com/GitHub_Trending/da/dart_simple_live 你是否还在为看一场直播在多个应用之间来回切换?Simple Live 是一款基于 … · 2026/9/25 5:57:23

VoltAgent 接入 Fireworks AI 提供方实战:模型字符串路由、环境变量与完整模型清单
VoltAgent 接入 Fireworks AI 提供方实战:模型字符串路由、环境变量与完整模型清单

人工智能AI AgentAgent 框架后端多智能体RAG工具调用Agent 记忆 【免费下载链接】voltagent AI Agent Engineering Platform built on an Open Source TypeScript AI Agent Framework 项目地址: https://gitcode.com/gh_mirrors/vo/voltagent 点击查看 免费下载 本… · 2026/9/25 5:57:23

OctoPrint JS 客户端库:Wizard(向导)模块 API 实战指南
OctoPrint JS 客户端库:Wizard(向导)模块 API 实战指南

物联网后端 【免费下载链接】OctoPrint OctoPrint is the snappy web interface for your 3D printer! 项目地址: https://gitcode.com/gh_mirrors/oc/OctoPrint 点击查看 免费下载 导读:本文聚焦 OctoPrint 前端 JavaScript 客户端库(OctoP… · 2026/9/25 5:57:23

Windows蓝屏排查实战:从错误代码到dmp分析,告别盲目重装
Windows蓝屏排查实战:从错误代码到dmp分析,告别盲目重装

蓝屏这事儿,我处理过不下两百台机器。每次看到"你的设备遇到问题,需要重新启动"这行字,绝大多数人的第一反应是恐慌,第二反应是直接重装。但说句实话,在我经手的蓝屏案例里,真正属于硬件损坏、必… · 2026/9/25 5:57:23

嵌入式实时音频通信:libopus集成与性能调优实战
嵌入式实时音频通信:libopus集成与性能调优实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 5:57:23

百度世界大会2025:大模型落地与新旧技术转换实战指南
百度世界大会2025:大模型落地与新旧技术转换实战指南

1. 从一场大会看技术换挡的真实节奏百度世界大会这几年我基本每届都追,但今年这场给我的感觉和往年完全不一样。往年更多是"秀肌肉"——参数又涨了多少、榜单又刷了多高;今年台上台下聊得最多的,是"这东西到底怎么用起来"… · 2026/9/25 5:57:17

数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)
数值优化(Numerical Optimization)学习系列-03-共轭梯度方法(Conjugate Gradient)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31

MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码