EIP-6963 简介

  • BlockApex
  • 更新于 2024-06-26 14:49
  • 阅读 967

EIP-6963 旨在简化用户同时使用多个钱包时的用户 UI 体验问题。

Image 3

背景

Metamask 是浏览器钱包的先驱,它由 Consensys 于 2016 年开发。此后,在上一个牛市周期中开发了一系列钱包扩展。值得一提的有 Trust、WalletConnect、Zerion、Rainbow、Phantom、Talisman、Brave、Coinbase 等。每个钱包针对不同的区块链社区和用例。其中一些还支持多链操作。

为什么需要 EIP-6963?

如果你是加密货币爱好者和区块链支持者,你可能会发现自己需要在浏览器中使用两个或更多钱包。也许是为了获得空投或其他原因。这就是 EIP-6963 的用武之地。EIP-6963 旨在简化以太坊钱包提供者(Provider),并增强用户的 UI 体验。

EIP-1193

要了解 EIP-6963 的影响和重要性,我们必须看看它的前身 EIP-1193。它概述了 DApp 和钱包如何连接的方法。钱包将注入一个名为 window.ethereum 的函数以加载到 DApp 中。这就引发了一个竞争条件问题,通常后加载的那个会胜出。

竞争的问题是什么?

这种竞争条件阻碍了用户体验。如果你在浏览器中有两个或更多钱包,你可能会遇到无法加载你想要的钱包的问题。而是随机选择一个钱包或胜出的那个钱包。你可能经常会从 Chrome 扩展管理器中禁用一个扩展,然后你喜欢的钱包就会加载并连接到 DApp。

EIP-6963

提出了一个新的 EIP 来解决这个问题。它旨在优化多个钱包Provider的互操作性。这个解决方案旨在通过减少新钱包Provicer的进入壁垒来促进更公平的竞争,同时增强以太坊网络上的用户体验。基本上,使用特定钱包的决定现在掌握在用户手中。DApps 将列出浏览器中存在的钱包,用户可以根据自己的选择进行交互。

EIP-6963 工作原理

每个钱包提供商(Provicer)将通过以下接口 EIP6963ProviderInfo 发布信息:

/**  
 * 表示显示钱包所需的资源  
 */  
interface EIP6963ProviderInfo {  
 uuid: string;  
 name: string;  
 icon: string;  
 rdns: string;}

Image 4

DApps 和钱包预计会发出一个事件并实例化一个 eventListener 以发现各种钱包。

DApp 必须通过 window.addEventListener() 方法监听钱包传递的 EIP6963AnnounceProviderEvent。EIP-6963 向后兼容,如果钱包仍在考虑升级或不想升级,也不会受到影响。

EIP-6963 实现

钱包端:

Image 5

DApp 端:

Image 6

安全考虑

  1. 钱包Provicer对象的原型污染
    原型污染是一种 JavaScript 漏洞,攻击者可以向全局对象原型添加任意属性,这些属性可能会被用户定义的对象继承。浏览器扩展(钱包扩展)能够按设计修改页面和Provicer对象的内容。钱包被认为是可信来源,因此钱包实现者需要在安全性和网页兼容性之间做出权衡。
  2. 钱包模仿和操纵
    由于钱包可以在 EIP6963ProviderInfo 中指定 UUID 和 Svg,因此存在很大的钱包模仿和冒充的可能性。DApps 应该要注意到这种行为,并确保在 UUID 重复的情况下采取适当的清理步骤,以避免与冒充的 DApps 交互。
  3. 防止 SVG JavaScript 执行
    由于钱包可以在 EIP6963ProviderInfo 中传递 SVG,因此存在通过 SVG 图像进行跨站脚本攻击的可能性。JavaScript 在页面的上下文中执行,因此可以修改页面或页面的内容。需要 DApps 应用清理技术来防止通过 SVG 图像进行此类执行。
  4. 钱包指纹识别
    钱包Provicer现在可以考虑是否希望向所有页面宣布自己,或尝试其他方法以减少用户通过注入 window.ethereum 对象被指纹识别的能力。一个需要考虑的替代流程示例是等待注入Provicer对象,直到 DApp 宣布 eip6963:requestProvider。此时,钱包可以启动一个 UI 同意流程,询问用户是否愿意分享他们的钱包地址。这允许钱包启用“私人连接”功能的选项。

最后的想法

总体而言,EIP-6963 将在用户与 DApps 交互的体验中带来革命性变化,并将允许新玩家进入钱包领域,与其他钱包公平竞争。在追求新实现的过程中,应牢记安全考虑,通常安全性被忽视,以实现新的事物。

参考资料

我是 AI 翻译官,为大家转译优秀英文文章,如有翻译不通的地方,在这里修改,还请包涵~

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
BlockApex
BlockApex
The security-first blockchain consultation company