EIP-6963: 多钱包冲突的解决方案
最近提出的 EIP-6963 旨在提供一个解决方案,以解决当用户试图在一个单一的网络浏览器中使用多个钱包供应商时出现的冲突问题。在这种情况下,这些冲突的钱包会导致用户体验下降,阻碍用户对其以太坊界面的控制,并使与 dApp 互动的过程变得复杂。原始提案文档可以在这里找到:https://eips.ethereum.org/EIPS/eip-6963
关于多钱包冲突问题的简介
目前,提供浏览器扩展的钱包提供商必须(根据 EIP-1193 标准)将其以太坊提供商注入浏览器的 window.ethereum 对象。这种机制给安装了多个浏览器扩展的用户带来了挑战。浏览器扩展以不可预测和不稳定的顺序加载到网页上,导致了一个竞赛条件,即用户缺乏对控制 window.ethereum 对象下的 Ethereum 接口的钱包提供商的选择的控制权。最后加载的钱包提供者通常是控制接口的那个。最后加载的钱包供应商通常是控制界面的那个。
EIP-6963: 一个拟议的解决方案
为了解决这个问题,EIP-6963 为 EIP-1193 供应商提出了 window.ethereum 的替代发现机制。该建议引入了一套窗口事件,使 Ethereum 库和浏览器扩展提供的注入脚本之间有一个双向的通信协议。这个解决方案优化了多个钱包提供商的互操作性,减少了新钱包提供商的进入壁垒,改善了以太坊网络的用户体验。
该提案概述了一个标准化的提供者信息接口(EIP6963ProviderInfo),这对于填充钱包选择弹出式窗口至关重要。它还强调了已公布的提供者接口(EIP6963ProviderDetail)的重要性,为了向后兼容,它没有触及 EIP-1193 提供者接口。
提供商信息界面中的关键属性是:
- walletId:钱包提供商的全球唯一标识符(例如,io.dopewallet.extension或awesomewallet)。
- uuid:钱包提供商的本地唯一标识符,符合UUID v4.0.
- name:钱包提供商的可读名称(例如,DopeWalletExtension 或 AwesomeWallet)。
- icon:指向图像的 URI,应该是方形的,最小分辨率为 96x96px. 建议使用 PNG 和 WebP 或者像 SVG 这样的矢量图像。建议团队强烈反对像 JPG/JPEG 这样的有损格式。
在事件方面,Ethereum 库和钱包提供商都使用 window.dispatchEvent 函数来发射事件,window.addEventListener 来观察事件。当以太坊库初始化时,它发出”eip6963:requestProvider”事件,而钱包提供商发出”eip6963:announceProvider”事件,以及其提供商接口和信息的细节。
EIP-6963 的影响
根据乐观的估计,EIP-6963 的接受和实施应该需要大约三到六个月的时间。这一发展可能会在年底带来一波新的钱包叙事,可能会扰乱像 Metamask 这样的领先钱包供应商的霸权,并促进供应商之间的竞争环境。像 Coin98、Coinbase Wallet、Trust Wallet、Phantom、Taho、Rabby、Frame、XDEFI、Rainbow、Zerion、Spot、Frontier、MEW、Dawn Wallet、Blockwallet、Bitski、SafePal、BitKeep 和 MathWallet 等钱包都将从这一发展中获益。
优点和缺点:
EIP-6963 提出了几个应该考虑的安全问题。
优点
- 没有单点故障:通过允许多个钱包供应商,我们消除了单点故障的问题。这在安全方面是有益的,因为它意味着如果一个钱包供应商遭受攻击或技术故障,用户可以有替代方案。
- 减少对单一供应商的依赖:目前,以太坊社区严重依赖一个单一的供应商,MetaMask. 这创造了一个潜在的风险,因为如果 MetaMask 一旦被破坏,很大一部分以太坊用户将受到影响。通过支持多个钱包,EIP-6963 分散了风险。
- 加强了用户控制:在多个钱包提供商之间进行选择的能力使用户能够对自己的安全有更大的控制。用户可以选择一个符合他们个人安全偏好和信任程度的钱包供应商。
缺点
- 攻击面增加:随着EIP-6963的实施,攻击面增加了。这是由于有更多的钱包供应商有可能成为恶意行为者的目标。重要的是,每个钱包供应商都要遵守高安全标准,以尽量减少这种风险。
- SVG 图像利用潜力:EIP-6963 建议使用 SVG 图像作为钱包提供商的图标。但是,SVG 图像可能包含 JavaScript 代码,这可能会带来跨站点脚本 (XSS) 风险。尽管 EIP 确实指定应使用 <img> 标签呈现 SVG 图像以防止 JavaScript 执行,但此建议只能在每个实施中由第 3 方或审计员验证。
- 取代 window.ethereum 的影响:虽然 EIP 不会通过取代 window.ethereum 直接破坏现有应用程序,但它建议在用户选择钱包后这样做。此建议只能由第 3 方或审计员在每次实施中验证。
结论
EIP-6963 旨在增强多个钱包提供商的互操作性,降低新提供商的进入门槛,并改善以太坊网络上的用户体验。此外,对安全的影响是复杂的。用户、钱包提供商和以太坊库开发人员必须遵守最佳实践,以确保以太坊生态系统保持安全。通过实施该提案,以太坊生态系统可以为钱包提供商及其用户提供一个更加用户友好和更具竞争力的环境。