EIP-6963: 多錢包衝突的解決方案
Mundus Security Blogs/Lynn,MarsBit/Annie編譯
2023-05-29 14:00

最近提出的 EIP-6963 旨在提供一個解決方案,以解決當用戶試圖在一個單一的網路瀏覽器中使用多個錢包供應商時出現的衝突問題。在這種情況下,這些衝突的錢包會導致用戶體驗下降,阻礙用戶對其以太坊界面的控制,並使與 dApp 互動的過程變得複雜。原始提案文件可以在這裡找到:https://eips.ethereum.org/EIPS/eip-6963

關於多錢包衝突問題的簡介

目前,提供瀏覽器擴展的錢包提供商必須(根據 EIP-1193 標準)將其以太坊提供商注入瀏覽器的 window.ethereum 對象。這種機制為安裝了多個瀏覽器擴展的用戶帶來了挑戰。瀏覽器擴展以不可預測和不穩定的順序加載到網頁上,導致了一個競賽條件,即用戶缺乏對控制 window.ethereum 對象下的 Ethereum 接口的錢包提供商的選擇的控制權。最後加載的錢包提供者,通常是控制接口的那個。最後加載的錢包供應商,通常是控制界面的那個。

EIP-6963: 一個擬議的解決方案

為瞭解決這個問題,EIP-6963 為 EIP-1193 供應商提出了 window.ethereum 的替代發現機制。該建議引入了一套窗口事件,使 Ethereum 庫和瀏覽器擴展提供的注入腳本之間有一個雙向的通訊協議。這個解決方案優化了多個錢包提供商的互操作性,減少了新錢包提供商的進入壁壘,改善了以太坊網路的用戶體驗。

該提案概述了一個標準化的提供者資訊接口(EIP6963ProviderInfo),這對於填充錢包選擇彈出式窗口至關重要。它還強調了已公佈的提供者接口(EIP6963ProviderDetail)的重要性,為了向後兼容,它沒有觸及 EIP-1193 提供者接口。

提供商資訊界面中的關鍵屬性是:

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

在事件方面,Ethereum 庫和錢包提供商都使用 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 提出了幾個應該考慮的安全問題。

優點

  1. 沒有單點故障:通過允許多個錢包供應商,我們消除了單點故障的問題。這在安全方面是有益的,因為它意味著如果一個錢包供應商遭受攻擊或技術故障,用戶可以有替代方案。
  2. 減少對單一供應商的依賴:目前,以太坊社區嚴重依賴一個單一的供應商,MetaMask. 這創造了一個潛在的風險,因為如果 MetaMask 一旦被破壞,很大一部分以太坊用戶將受到影響。通過支持多個錢包,EIP-6963 分散了風險。
  3. 加強了用戶控制:在多個錢包提供商之間進行選擇的能力使用戶能夠對自己的安全有更大的控制。用戶可以選擇一個符合他們個人安全偏好和信任程度的錢包供應商。

缺點

  1. 攻擊面增加:隨著EIP-6963的實施,攻擊面增加了。這是由於有更多的錢包供應商有可能成為惡意行為者的目標。重要的是,每個錢包供應商都要遵守高安全標準,以儘量減少這種風險。
  2. SVG 圖像利用潛力:EIP-6963 建議使用 SVG 圖像作為錢包提供商的圖標。但是,SVG 圖像可能包含 JavaScript 代碼,這可能會帶來跨站點腳本 (XSS) 風險。儘管 EIP 確實指定應使用 <img> 標籤呈現 SVG 圖像以防止 JavaScript 執行,但此建議只能在每個實施中由第 3 方或審計員驗證。
  3. 取代 window.ethereum 的影響:雖然 EIP 不會透過取代 window.ethereum 直接破壞現有應用程式,但它建議在用戶選擇錢包後這樣做。此建議隻能由第 3 方或審計員在每次實施中驗證。

結論

EIP-6963 旨在增強多個錢包提供商的互操作性,降低新提供商的進入門檻,並改善以太坊網路上的用戶體驗。此外,對安全的影響是複雜的。用戶、錢包提供商和以太坊庫開發人員必須遵守最佳實踐,以確保以太坊生態係統保持安全。通過實施該提案,以太坊生態係統可以為錢包提供商及其用戶提供一個更加用戶友好和更具競爭力的環境。

本文為火星財經授權刊登,原文標題為「EIP-6963: 多錢包衝突的解決方案