撰寫:Mundus Security

編譯:深潮TechFlow

淺析多錢包衝突解決方案EIP-6963

最近提出的EIP-6963 旨在解決用戶在單個Web 瀏覽器中嘗試使用多個錢包提供程序時出現的衝突問題。在這種情況下,這些衝突問題可能會導致用戶體驗下降,阻礙用戶對其以太坊界面的控制,並使與dApp 交互的過程複雜化。

問題簡介

目前,提供瀏覽器擴展的錢包提供程序必須將們的以太坊提供程序(根據EIP-1193 標準)注入到瀏覽器的window.ethereum 對像中。這種機制對安裝了多個瀏覽器擴展的用戶來說造成了一種問題。瀏覽器擴展以不可預測和不穩定的順序加載到網頁中,導致用戶無法自主選擇window.ethereum 對像中的以太坊的錢包。通常,最後加載的錢包是彈出控制頁面那個。

EIP-6963:提出的解決方案

為了解決這個問題,EIP-6963 提出了一種替代window.ethereum 的EIP-1193 提供程序的現機制。該提案引入了一組窗口事件,使以太坊庫和瀏覽器擴展提供的注入腳本之間能夠進行雙向通信協議。這個解決方案優化了多個錢包提供程序之間的互操作性,降低了新錢包提供程序的准入門檻,並改善了以太坊網絡上的用戶體驗。

該提案概述了一個標準化的提供程序信息接口(EIP6963ProviderInfo),這對於填充錢包選擇彈出窗口至關重要。它還強調了宣布提供程序接口(EIP6963ProviderDetail)的重要性,這使得EIP-1193 提供程序接口保持不變,以保證向後兼容性。

提供程序信息接口中的關鍵屬性包括:

  • walletId:錢包提供程序的全局唯一標識符(例如,io.dopewallet.extension 或awesomewallet)。
  • uuid:符合UUID v4.0 的錢包提供程序的本地唯一標識符。
  • name:錢包提供程序的人類可讀名稱(例如,DopeWalletExtension 或Awesome)。
  • icon:指向圖像的URI,應為96x96px 的最小分辨率的正方形。建議使用PNG 和WebP 或矢量圖像格式如SVG。該提案團隊強烈反對使用像JPG / JPEG 這樣的有損格式。

在觸發事件方面,以太坊庫和錢包提供程序都使用window.dispatchEvent 函數來發出事件,並使用window.addEventListener 來觀察事件。當以太坊庫初始化時,它會發出“eip6963:requestProvider”事件,而錢包提供程序則會發出“eip6963:announceProvider”事件,同時提供其提供程序接口和信息的詳細信息。

EIP-6963 的影響

根據樂觀估計,EIP-6963 的接受和實施可能需要大約三到六個月的時間。這一發展可能會在年底帶來新的錢包故事,潛在地打破像Metamask 這的領先錢包提供商的霸權,並在提供商之間營造更具競爭力的環境。

Coin98、Coinbase Wallet、Trust Wallet、Phantom、Taho、Rabby、Frame、XDEFI、Rainbow、Zerion、Spot、Frontier、MEW、Dawn Wallet、Blockwallet、Bitski、SafePal、BitKeep 和MathWallet 等錢包有望從這一發展中獲益。

優點和缺點:

EIP-6963 提出了一些需要考慮的安全問題。

優點:

  • 沒有單點故障:通過允許多個錢包提供商,我們消除了單點故障的問題。這在安全方面是有益的,因為這意味著如果一個錢包提供商遭受攻擊或技術故障,用戶有可用的替代選擇。
  • 減少對單個提供商的依賴:目前,以太坊社區嚴重依賴於一個提供商,MetaMask。這會帶來潛在的風險,因為如果MetaMask 被攻擊,大部分以太坊用戶將受到影響。通過支持多個錢包,EIP-6963 分散了風險。
  • 增強用戶控制:選擇多個錢包提供商的能力使用戶對自己的安全擁有更大的控制權。用戶可以選擇與其個人安全偏好和信任水平相符的錢包提供商。

缺點:

  • 增加攻擊面:實施EIP-6963 會增加攻擊面。這是由於可以被惡意行為者攻擊的錢包提供商數量增加。每個錢包提供商都應遵守高安全標準,以最小化這種風險。
  • SVG 圖像利用的潛在風險: EIP-6963 提議使用SVG 圖像作為錢包提供商的圖標。然而,SVG 圖像可能包含JavaScript 代碼,可能會帶來跨站腳本(XSS)風險。雖然EIP 確實指定SVG 圖像應使用標籤呈現以防止JavaScript 執行,但這個建議只能由第三方或每個實現的審計員進行驗證。
  • 取代window.ethereum 的影響:雖然EIP 沒有直接通過取代window.ethereum 來破壞現有應用,但它建議在用戶選擇錢包後這樣做。此建議只能由第3 方或審計員在每次實施中驗證。

結論

EIP-6963 旨在增強多個錢包提供商之間的互操作性,降低新提供商的准入門檻,並改善以太坊網絡上的用戶體驗。同時,對於安全性的影響是複雜的。

用戶、錢包提供商和以太坊庫開發人員必須遵守最佳實踐,以確保以太坊生態系統保持安全。

通過實施這個提案,以太坊生態系統可以朝著更加用戶友好和競爭環境的方向發展,既有利於錢包提供商,也有利於他們的用戶。