Hexi

Hexi

Record my life

知識備忘錄:第一週(EIP6963、Typescript 版本)

一、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 版本#

問題介紹#

打開一個新項目的時候,經常會遇到明明依賴已經安裝完畢,但是還是有 ts 報錯的情況。這種情況一般有兩種可能:一種是 ts 沒反應過來,直接 reload project 就可以。還有一種是 ts 版本號不對,默認使用了 vscode 的版本號。切換一下就可以。能否通過配置避免這種情況呢?

解決方案#

  • vscode 有個很迷惑的配置 "typescript.tsdk",它在第一次打開的時候不會生效。但是後續加載會生效。
  • vscode 還有個配置 "typescript.enablePromptUseWorkspaceTsdk",可將它設置為 true,這樣每次打開項目右下角都會有個 Prompt 提示 讓你切換到 工作區的 ts 版本。如果沒切,每次打開項目都會彈。

其實這樣也沒有根本性的解決問題,既然 vscode 都有信任工作區的功能了,為什麼信任工作區的工程不能自動加載工程文件的 ts 版本呢? 期待有更好的解決方案。

相關資料#

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。