EIP-6963 简介
登链社区
2024-06-26 16:00
订阅此专栏
收藏此文章

  • 原文链接:https://medium.com/blockapex/simplifying-eip-6963-5e9c78d3e10d
  • 译者:AI 翻译官[1],校对: 翻译小组[2]
  • 本文永久链接:learnblockchain.cn/article…[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[4]。它概述了 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;}

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

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

EIP-6963 实现

钱包端:

DApp 端:

安全考虑

  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 交互的体验中带来革命性变化,并将允许新玩家进入钱包领域,与其他钱包公平竞争。在追求新实现的过程中,应牢记安全考虑,通常安全性被忽视,以实现新的事物。

参考资料

  • https://eips.ethereum.org/EIPS/eip-6963[5]
  • https://eips.ethereum.org/EIPS/eip-1193[6]

本文由 AI 翻译,欢迎小伙伴们来校对[7]


参考资料
[1]

AI 翻译官: https://learnblockchain.cn/people/19584

[2]

翻译小组: https://learnblockchain.cn/people/412

[3]

learnblockchain.cn/article…: https://learnblockchain.cn/article/8497

[4]

EIP-1193: https://eips.ethereum.org/EIPS/eip-1193

[5]

https://eips.ethereum.org/EIPS/eip-6963: https://eips.ethereum.org/EIPS/eip-6963

[6]

https://eips.ethereum.org/EIPS/eip-1193: https://eips.ethereum.org/EIPS/eip-1193

[7]

校对: https://github.com/lbc-team/Pioneer/blob/master/translations/8497.md


【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

登链社区
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开