EIP-6963: 多钱包冲突的解决方案

这篇具有很好参考价值的文章主要介绍了EIP-6963: 多钱包冲突的解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近提出的 EIP-6963 旨在提供一个解决方案,以解决当用户试图在一个单一的网络浏览器中使用多个钱包供应商时出现的冲突问题。在这种情况下,这些冲突的钱包会导致用户体验下降,阻碍用户对其以太坊界面的控制,并使与 dApp 互动的过程变得复杂。

原始提案文档地址:https://eips.ethereum.org/EIPS/eip-6963

问题简介

目前,提供浏览器扩展的钱包提供程序必须将们的以太坊提供程序(根据 EIP-1193 标准)注入到浏览器的 window.ethereum 对象中。这种机制对安装了多个浏览器扩展的用户来说造成了一种问题。浏览器扩展以不可预测和不稳定的顺序加载到网页中,导致用户无法自主选择 window.ethereum 对象中的以太坊的钱包。通常,最后加载的钱包是弹出控制页面那个。

EIP-6963: 一个拟议的解决方案

为了解决这个问题,EIP-6963 为 EIP-1193 供应商提出window.ethereum 的替代发现机制。该建议引入了一套窗口事件,使 Ethereum 库和浏览器扩展提供的注入脚本之间有一个双向的通信协议。这个解决方案优化了多个钱包提供商的互操作性,减少了新钱包提供商的进入壁垒,改善了以太坊网络的用户体验。

该提案概述了一个标准化的提供者信息接口(EIP6963ProviderInfo),这对于填充钱包选择弹出式窗口至关重要。它还强调了已公布的提供者接口(EIP6963ProviderDetail)的重要性,为了向后兼容,它没有触及 EIP-1193 提供者接口。

提供商信息界面中的关键属性是:

  • walletId:钱包提供商的全球唯一标识符(例如,io.dopewallet.extension或awesomewallet)。
  • uuid:钱包提供商的本地唯一标识符,符合UUID v4.0.
  • name:钱包提供商的可读名称(例如,Metamask 或 OKX Wallet)。
  • icon:钱包logo的 Base64 码

在事件方面,Ethereum 库和钱包提供商都使用 window.dispatchEvent 函数来发射事件,window.addEventListener 来观察事件。当以太坊库初始化时,它发出”eip6963:requestProvider”事件,而钱包提供商发出”eip6963:announceProvider”事件,以及其提供商接口和信息的细节。

优点和缺点:

优点

  1. **没有单点故障:**通过允许多个钱包供应商,我们消除了单点故障的问题。这在安全方面是有益的,因为它意味着如果一个钱包供应商遭受攻击或技术故障,用户可以有替代方案。
  2. **减少对单一供应商的依赖:**目前,以太坊社区严重依赖一个单一的供应商,MetaMask. 这创造了一个潜在的风险,因为如果 MetaMask 一旦被破坏,很大一部分以太坊用户将受到影响。通过支持多个钱包,EIP-6963 分散了风险。
  3. **加强了用户控制:**在多个钱包提供商之间进行选择的能力使用户能够对自己的安全有更大的控制。用户可以选择一个符合他们个人安全偏好和信任程度的钱包供应商。

缺点

  1. **攻击面增加:**随着EIP-6963的实施,攻击面增加了。这是由于有更多的钱包供应商有可能成为恶意行为者的目标。重要的是,每个钱包供应商都要遵守高安全标准,以尽量减少这种风险。
  2. SVG 图像利用的潜在风险: EIP-6963 提议使用 SVG 图像作为钱包提供商的图标。然而,SVG 图像可能包含 JavaScript 代码,可能会带来跨站脚本(XSS)风险。虽然 EIP 确实指定 SVG 图像应使用标签呈现以防止 JavaScript 执行,但这个建议只能由第三方或每个实现的审计员进行验证。
  3. 取代 window.ethereum 的影响: 虽然 EIP 没有直接通过取代 window.ethereum 来破坏现有应用,但它建议在用户选择钱包后这样做。此建议只能由第 3 方或审计员在每次实施中验证。

前端代码中具体实现

function onAnnouncement(event) {
      console.log(event)
      //event 就是对应的已经安装的浏览器钱包插件实例。
      //具体包括uuid、name、icon、walletId  以及 对应的插件实例
}
window.addEventListener("eip6963:announceProvider", onAnnouncement)
window.dispatchEvent(new Event("eip6963:requestProvider"))

结论

EIP-6963 旨在增强多个钱包提供商之间的互操作性,降低新提供商的准入门槛,并改善以太坊网络上的用户体验。同时,对于安全性的影响是复杂的。用户、钱包提供商和以太坊库开发人员必须遵守最佳实践,以确保以太坊生态系统保持安全。通过实施这个提案,以太坊生态系统可以朝着更加用户友好和竞争环境的方向发展,既有利于钱包提供商,也有利于他们的用户。文章来源地址https://www.toymoban.com/news/detail-838273.html

到了这里,关于EIP-6963: 多钱包冲突的解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch并发写入版本冲突解决方案

    搜索公众号, AmCoder 干货及时送达👇  众所周知,es经常被用于存储日志数据,其中在某些场景下,日志产生的时机不同,并且需要将多类具备关联关系的日志写入同一个document,就会带来同一个文档可能会被其它文档覆盖,或者missing等问题。 大家都知道es是不支持事务的,

    2023年04月19日
    浏览(54)
  • Git_常用命令+代码冲突解决方案

    –local: 配置对当前仓库有效 –global: 配置对当前用户(指的是当前用于登录系统的用户)的所有仓库有效 设置用户名及邮箱 注意:由于此处设置的用户名中间有空格所以要使用双引号,正常设置时无需使用双引号 设置仓库的认证方式 credentail.helper后的参数可选: cache: 在第

    2024年04月14日
    浏览(56)
  • Web3探索加密世界:什么是Web3钱包?

    随着加密货币和区块链技术的发展,人们越来越多地开始探索Web3世界,这个世界以去中心化、安全和开放性为特征。在这个新兴的数字化领域中,Web3钱包成为了一个关键的概念和工具。但是,什么是Web3钱包?它有什么特点?又为何对于Web3世界如此重要? 什么是Web3钱包?

    2024年03月15日
    浏览(54)
  • git请求合并时出现冲突的解决方案

    请求合并时出现冲突,一般是有多人修改了同一个地方导致的,我们一般在本地解决好冲突后再上传到远端仓库,然后再次发起合并。 本流程适合无主分支权限的情况 在出现冲突的开发分支上解决流程: 1、先拉取主干分支 main到本地开发分支dev git pull origin main 2、借助工具

    2024年02月11日
    浏览(54)
  • web3钱包系统开发

    web3 技术概念介绍 近期,演员周星驰在ins开通首个社交账号,并发布人才招募令,在漆黑中找寻鲜明出众的Web3人才,将“Web3”带入大众视野,但有不少人对其感到陌生,到底何为Web3? 早在2018年,就有人开始谈论web3了,它其实是一个相对概念,通俗意义上可以理解为新一代

    2024年02月12日
    浏览(88)
  • Web3.0入口-MPC钱包和智能合约钱包

    Web3.0大规模普及,需要解决一些关键问题,包括钱包私钥带来的一个用户体验问题与两个安全问题。 1. 一个用户体验问题 : 助记词与私钥难记、难保存,导致用户使用门槛过高 2. 两个安全问题 : 助记词和私钥的泄露,导致资产被盗。 助记词和私钥的丢失,导致资产丢失。

    2024年02月02日
    浏览(45)
  • mysql‘逻辑删除‘和‘唯一索引‘冲突的解决方案

    在user表中将name字段设置唯一索引,添加逻辑删除字段del_flag(1为删除,0为未删除)之后,将name=张四的字段删除,再添加一个name=张四的记录则会出现冲突 删除的时候将del_flag设置为null,未删除时候为0,冲突解决 在配置文件中这样配置:

    2024年02月10日
    浏览(40)
  • Three.js深度冲突(模型闪烁)与解决方案

    下面代码创建两个重合的矩形平面Mesh,通过浏览器预览,当你旋转三维场景的时候,你会发现模型渲染的时候产生闪烁。 这种现象,主要是两个Mesh重合,电脑GPU分不清谁在前谁在后,这种现象,可以称为深度冲突 Z-fighting 。 look 适当偏移,解决深度冲突,偏移尺寸相对模型

    2024年02月17日
    浏览(48)
  • 解决Hash(哈希表)冲突的四种方案

    参考鸣谢 解决哈希冲突必须知道的几种方法 小僵鱼 你还应该知道的哈希冲突解决策略 vivo互联网技术 解决哈希冲突的三种方法 kaleidoscopic 每日一题(哈希表及哈希冲突解决办法) 和笙 哈希是一种通过对数据进行压缩, 从而提高效率的一种解决方法 ,但由于哈希函数有限,数据

    2024年02月14日
    浏览(45)
  • 【Web3】认识以太坊钱包

    目录 区块链钱包概念 密码 私钥 Private Key 公钥Public Key  Keystore 助记词 Mnemonic 如何解锁账户 区块链钱包概念 钱包用来存钱的,在区块链中,我们的数字资产都会对应到一个账户地址上, 只有拥 有账户的钥匙(私钥)才可以对资产进行消费(用私钥对消费交易签名)。 数字

    2024年02月12日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包