钱包报错别只截图:4001、4100、4900 各指一件事 图 1
钱包报错别只截图:4001、4100、4900 各指一件事 · 图 1

在网页上连钱包,失败时常常只弹一行 Request rejected 或者一串数字。多数人会习惯性再点一次连接按钮,但 EIP-1193 这套钱包接口规范把失败分成了几类明确的标准错误码,每一类指向完全不同的原因。看懂数字,比截图有用得多。

错误码从哪来

EIP-1193 定义了网页与钱包之间的统一接口:网页发起一个请求(要账户、切网络、发交易、签消息),成功就返回结果,失败必须以带数字 code 的错误对象拒绝。规范为最常见失败预留了五个码:4001 User Rejected Request、4100 Unauthorized、4200 Unsupported Method、4900 Disconnected、4901 Chain Disconnected。也就是说,看到这些数字时,故障范围已经可以缩小,不需要从头排查整条链路。

逐个拆开

4001 表示请求被用户拒绝了——要么是你在钱包弹窗里点了拒绝,要么是弹窗还开着但你没处理,超时或关掉也算拒绝。它说明钱包和网站都活着,链路完好,只是这一次批准没有发生。处理动作是确认自己确实想批准什么:回到网站重新触发请求,然后在钱包弹窗里逐项核对目标地址、金额、合约名再决定。

4100 表示未授权:网页要访问的账户或方法没有被用户批准过。典型场景是网站从没连接过你的账户,却直接要签名或发交易。这时网页拿不到你的账户列表,需要你主动点击连接钱包并选择一个或多个账户。若某网站反复报 4100,检查钱包里该站点的已连接账户设置,而不是反复刷新页面。

4200 表示方法不支持:网页请求的接口当前钱包不提供。常见于钱包版本较旧、或请求依赖较新的功能。确认钱包是否更新到官方版本,以及该网站要求的能力你的钱包是否真的支持。

4900 表示断连:钱包当前连不上任何链,可能是网络故障、RPC 节点不可达,或扩展刚被重载。先看钱包里所连网络的状态指示,再换网络或检查网络本身;如果你自建了 RPC,检查节点是否同步完成。

4901 是最容易被误判的一个:钱包连着别的链,唯独不连着请求里指定的那条链。多网络钱包用户切了主网、页面却要求某条 Layer2 时就会遇到。它不是网络坏了,而是目标链没被添加或没被选中。处理动作是在钱包里添加并切换到对应链,或者允许页面发起的添加网络请求——但添加前务必从链官方文档核对链名、链 ID、RPC 地址和浏览器地址,不要从来路不明的弹窗抄参数。

为什么不建议无脑重试

区分这五类还有一个现实意义:重试的风险不同。4001 之后重复请求,会反复弹签名窗,连续快速点击容易在疲劳中误批;4900 与 4901 属于环境问题,重试不会改变条件;4100 需要先完成授权动作;4200 要先补功能或版本。把 4001 当成网络问题处理,最常见的后果是在第三个弹窗上随手点确认——那才是真正危险的时刻。

一个可落地的排查顺序

第一步看数字:有标准码的,按上面五条对号入座;第二步看弹窗:钱包端有没有挂着未处理的请求;第三步看网络标识:钱包显示的链和页面要求的链是否同一条;第四步看授权记录:钱包的站点连接管理里该域名的状态;最后才升级处理——重装或更新前先确认助记词备份可用。任何要求你为了修复报错输入助记词的页面都是钓鱼,正规钱包修复故障永远不需要助记词。

错误码之外还有一种失败

值得单独说明:并非所有失败都带标准码。链上执行层面的问题——比如交易被节点以费用过低、余额不足、Nonce 过旧为由拒绝——通常由底层 JSON-RPC 错误原样透出,钱包弹窗只是转述节点的话。这类报错的排查方向在链上而非接口:先看地址、金额、代币合约对不对,再按提示去区块浏览器查账户状态。把它和 4001 一类接口错误混在一起,会把简单的参数问题引向重装钱包这类无效操作。

风险提示:本文只涉及连接与报错排查,不构成投资建议;任何涉及签名与授权的操作,批准确认前请逐项核对弹窗内容。