网站请求钱包切换网络:switchEthereumChain的边界与核对方法 图 1
网站请求钱包切换网络:switchEthereumChain的边界与核对方法 · 图 1

网页上一句“请切换到某某链”,钱包随即弹窗让你确认。很多人以为这是网站在替你操作,也有人以为拒绝就等于不能用这个网站。实际上交换网络这个动作有一条清晰的权责边界:网页只能发起请求,切换与否由钱包和用户决定,而每次弹窗里最值得核对的是链的身份,不是页面的措辞。

请求方法本身

wallet_switchEthereumChain 来自 EIP-3326,参数只有一个十六进制格式的 chainId。规范设定:链号必须是钱包已经认识的链,钱包可以任意接受或拒绝请求;成功返回空值,否则报错。常见钱包实现里,如果目标链从未被添加过,会返回 4902 之类的错误,让网站改走“添加网络”流程。需要说明的是,这份提案的文本状态停留在 Stagnant,但主流钱包早已把它当作事实接口实现,行为以各家文档为准。

弹窗里真正要看的一个字段

切换后,你的余额、交易历史、Gas 全部换成另一条链的读数。所以弹窗确认前唯一值得较真的问题:这次要切到哪条链?核对方法不是看弹窗写的链名,而是把弹窗给出的链号数字抄下来,与链的官方文档或公开链号目录比对。同名不同号、同号不同名的配置错误和恶意网络都出现过,链号是全局唯一的硬字段,显示名称则是谁都能填的软字段。

与添加网络的区别

切换只对钱包里已存在的链生效;添加网络则会把 RPC 地址、浏览器地址等一整套参数写进钱包。如果网站先请求添加、紧接着请求切换,或者干脆用自定义 RPC 引导你上一条“专为本次活动部署”的链,风险等级立刻升高:恶意 RPC 可以让你的钱包显示错误的余额与状态,诱导你签错东西。遇到这种情况,回到官网文档手动核对全部网络参数,或直接放弃该页面。

一次切换后的自查

切完之后,用钱包的网络指示器或区块浏览器确认当前链号,再发起一笔可验证的小额操作,确认状态读数与浏览器一致。如果钱包显示有币而浏览器查无对应余额,优先怀疑 RPC 或页面本身。频繁被不同网站请求切换是正常现象,但每一次都应当被当作“我要换到另一本账本上去看资产”来对待。

常见误判

一是把切换当成授权:切换只是改变查询与发送的目标链,不会给任何合约花费你资产的权限,弹窗点确认也不等于你批准了任何转账。二是把拒绝切换当成故障:切错链导致的“余额消失”只是看错了账本,切回去即可,与被盗无关;反之,若你从未主动操作而界面自己变了链号,检查钱包的已连接站点设置与扩展权限。三是同一地址的多链错觉:以太坊系地址在不同链上字面相同,余额却各自独立,切链后看到相同地址不等于看到同一份资产。

实操顺序建议

进一个新应用时先看它默认要求哪条链,与官方文档给出的链号比对后再连接;操作全程保持钱包的网络指示器可见,签名弹窗出现时再核对一次目标链名与链号,两处不一致立即停手。签名完成后如果应用提示成功而你本地看不到变化,先确认自己当前停留的链,再去该链的浏览器查交易哈希,不要在没有对链的情况下反复重发。本文为机制说明,不构成投资建议。

延伸阅读:添加陌生网络前要核对的五类字段见 MetaMask添加网络前查什么?;第一次上新链的演练流程见 第一次上一条新链?浏览器核对、网络参数与小额演练