原文作者:Mundus Security
原文编译:深潮 TechFlow
最近提出的 EIP-6963 旨在解决用户在单个 Web 浏览器中尝试使用多个钱包提供程序时出现的冲突问题。在这种情况下,这些冲突问题可能会导致用户体验下降,阻碍用户对其以太坊界面的控制,并使与 dApp 交互的过程复杂化。
为了解决这个问题,EIP-6963 提出了一种替代 window.ethereum 的 EIP-1193 提供程序的现机制。该提案引入了一组窗口事件,使以太坊库和浏览器扩展提供的注入脚本之间能够进行双向通信协议。这个解决方案优化了多个钱包提供程序之间的互操作性,降低了新钱包提供程序的准入门槛,并改善了以太坊网络上的用户体验。
该提案概述了一个标准化的提供程序信息接口(EIP 6963 ProviderInfo),这对于填充钱包选择弹出窗口至关重要。它还强调了宣布提供程序接口(EIP 6963 ProviderDetail)的重要性,这使得 EIP-1193 提供程序接口保持不变,以保证向后兼容性。
提供程序信息接口中的关键属性包括:
walletId:钱包提供程序的全局唯一标识符(例如,io.dopewallet.extension 或 awesomewallet)。
uuid:符合 UUID v 4.0 的钱包提供程序的本地唯一标识符。
name:钱包提供程序的人类可读名称(例如,DopeWalletExtension 或 Awesome)。
icon:指向图像的 URI,应为 96 x 96 px 的最小分辨率的正方形。建议使用 PNG 和 WebP 或矢量图像格式如 SVG。该提案团队强烈反对使用像 JPG / JPEG 这样的有损格式。
在触发事件方面,以太坊库和钱包提供程序都使用 window.dispatchEvent 函数来发出事件,并使用 window.addEventListener 来观察事件。当以太坊库初始化时,它会发出“eip 6963 :requestProvider”事件,而钱包提供程序则会发出“eip 6963 :announceProvider”事件,同时提供其提供程序接口和信息的详细信息。
根据乐观估计,EIP-6963 的接受和实施可能需要大约三到六个月的时间。这一发展可能会在年底带来新的钱包故事,潜在地打破像 Metamask 这的领先钱包提供商的霸权,并在提供商之间营造更具竞争力的环境。
Coin 98、Coinbase Wallet、Trust Wallet、Phantom、Taho、Rabby、Frame、XDEFI、Rainbow、Zerion、Spot、Frontier、MEW、Dawn Wallet、Blockwallet、Bitski、SafePal、BitKeep 和 MathWallet 等钱包有望从这一发展中获益。
没有单点故障:通过允许多个钱包提供商,我们消除了单点故障的问题。这在安全方面是有益的,因为这意味着如果一个钱包提供商遭受攻击或技术故障,用户有可用的替代选择。
减少对单个提供商的依赖:目前,以太坊社区严重依赖于一个提供商,MetaMask。这会带来潜在的风险,因为如果 MetaMask 被攻击,大部分以太坊用户将受到影响。通过支持多个钱包,EIP-6963 分散了风险。
增强用户控制:选择多个钱包提供商的能力使用户对自己的安全拥有更大的控制权。用户可以选择与其个人安全偏好和信任水平相符的钱包提供商。
增加攻击面:实施 EIP-6963 会增加攻击面。这是由于可以被恶意行为者攻击的钱包提供商数量增加。每个钱包提供商都应遵守高安全标准,以最小化这种风险。
SVG 图像利用的潜在风险:EIP-6963 提议使用 SVG 图像作为钱包提供商的图标。然而,SVG 图像可能包含 JavaScript 代码,可能会带来跨站脚本(XSS)风险。虽然 EIP 确实指定 SVG 图像应使用标签呈现以防止 JavaScript 执行,但这个建议只能由第三方或每个实现的审计员进行验证。
取代 window.ethereum 的影响:虽然 EIP 没有直接通过取代 window.ethereum 来破坏现有应用,但它建议在用户选择钱包后这样做。此建议只能由第 3 方或审计员在每次实施中验证。
EIP-6963 旨在增强多个钱包提供商之间的互操作性,降低新提供商的准入门槛,并改善以太坊网络上的用户体验。同时,对于安全性的影响是复杂的。
用户、钱包提供商和以太坊库开发人员必须遵守最佳实践,以确保以太坊生态系统保持安全。
通过实施这个提案,以太坊生态系统可以朝着更加用户友好和竞争环境的方向发展,既有利于钱包提供商,也有利于他们的用户。