Hexi

Hexi

Record my life

知识备忘录:第一周(EIP6963、Typescript Version)

一、EIP6963#

问题介绍#

我们在连接某些网站的时候,明明点击的是 Metamask 登录,弹出来的却是 OKX Wallet 或者其他钱包的登录框。这是因为当前网站是基于老的 EIP-1193 获取到的全局 window.ethereum 对象进行链上操作。实际上不同的浏览器钱包插件会存在一个加载顺序的问题,往往是最后一个加载的钱包劫持了 window.ethereum 对象。

解决方案:#

2023 年 5 月的时候推出了 EIP-6963 解决方案,基于 EIP-6963 可以实现获取到每个钱包独立的 EIP1193Provider。避免互相影响。
那么我们如何接入呢?

  • 使用 WAGMI 2.x, 原生支持 EIP-6963。我看了下 xlog 平台的钱包登录也是用的 wagmi,但是登录 metamask 的时候还是会被 okx 拦截,看了下代码,使用的还是 wagmi 1.x,应该是那个版本不支持 EIP6963 。
  • 使用 mipd 库获得对应钱包的 EIP1193Provider。然后使用 ethers 接入

window.ethereum 被劫持了以后,有良心的,比如 OKX Wallet,还会给用户一个选择 Metamask 的入口。更多的是直接取而代之了。对于用户来说,就是,点击了 Metamask 登录,弹出的是其他钱包。这是一个很迷惑的使用体验,也可以说是 bug。建议做升级。

相关资料#

二、Typescript Version#

问题介绍#

打开一个新项目的时候,经常会遇到明明依赖已经安装完毕,但是还是有 ts 报错的情况。这种情况一般有两种可能:一种是 ts 没反应过来,直接 reload project 就可以。还有一种是 ts 版本号不对,默认使用了 vscode 的 版本号。切换一下就可以。能否通过配置避免这种情况呢?

解决方案#

  • vscode 有个很迷惑的配置 "typescript.tsdk",它在第一次打开的时候不会生效。但是后续加载会生效。
  • vscode 还有个配置 "typescript.enablePromptUseWorkspaceTsdk",可将它设置为 true,这样每次打开项目右下角都会有个 Prompt 提示 让你切换到 工作区的 ts 版本。如果没切,每次打开项目都会弹。

其实这样也没有根本性的解决问题,既然 vscode 都有信任工作区的功能了,为什么信任工作区的工程不能自动加载工程文件的 ts 版本呢? 期待有更好的解决方案。

相关资料#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。