最近提出的 EIP-6963 旨在提供一個(gè)解決方案,以解決當(dāng)用戶試圖在一個(gè)單一的網(wǎng)絡(luò)瀏覽器中使用多個(gè)錢包供應(yīng)商時(shí)出現(xiàn)的沖突問題。在這種情況下,這些沖突的錢包會(huì)導(dǎo)致用戶體驗(yàn)下降,阻礙用戶對其以太坊界面的控制,并使與 dApp 互動(dòng)的過程變得復(fù)雜。
原始提案文檔地址:https://eips.ethereum.org/EIPS/eip-6963
問題簡介
目前,提供瀏覽器擴(kuò)展的錢包提供程序必須將們的以太坊提供程序(根據(jù) EIP-1193 標(biāo)準(zhǔn))注入到瀏覽器的 window.ethereum 對象中。這種機(jī)制對安裝了多個(gè)瀏覽器擴(kuò)展的用戶來說造成了一種問題。瀏覽器擴(kuò)展以不可預(yù)測和不穩(wěn)定的順序加載到網(wǎng)頁中,導(dǎo)致用戶無法自主選擇 window.ethereum 對象中的以太坊的錢包。通常,最后加載的錢包是彈出控制頁面那個(gè)。
EIP-6963: 一個(gè)擬議的解決方案
為了解決這個(gè)問題,EIP-6963 為 EIP-1193 供應(yīng)商提出window.ethereum 的替代發(fā)現(xiàn)機(jī)制。該建議引入了一套窗口事件,使 Ethereum 庫和瀏覽器擴(kuò)展提供的注入腳本之間有一個(gè)雙向的通信協(xié)議。這個(gè)解決方案優(yōu)化了多個(gè)錢包提供商的互操作性,減少了新錢包提供商的進(jìn)入壁壘,改善了以太坊網(wǎng)絡(luò)的用戶體驗(yàn)。
該提案概述了一個(gè)標(biāo)準(zhǔn)化的提供者信息接口(EIP6963ProviderInfo),這對于填充錢包選擇彈出式窗口至關(guān)重要。它還強(qiáng)調(diào)了已公布的提供者接口(EIP6963ProviderDetail)的重要性,為了向后兼容,它沒有觸及 EIP-1193 提供者接口。
提供商信息界面中的關(guān)鍵屬性是:
- walletId:錢包提供商的全球唯一標(biāo)識(shí)符(例如,io.dopewallet.extension或awesomewallet)。
- uuid:錢包提供商的本地唯一標(biāo)識(shí)符,符合UUID v4.0.
- name:錢包提供商的可讀名稱(例如,Metamask 或 OKX Wallet)。
- icon:錢包logo的 Base64 碼
在事件方面,Ethereum 庫和錢包提供商都使用 window.dispatchEvent 函數(shù)來發(fā)射事件,window.addEventListener 來觀察事件。當(dāng)以太坊庫初始化時(shí),它發(fā)出”eip6963:requestProvider”事件,而錢包提供商發(fā)出”eip6963:announceProvider”事件,以及其提供商接口和信息的細(xì)節(jié)。文章來源:http://www.zghlxwxcb.cn/news/detail-838273.html
優(yōu)點(diǎn)和缺點(diǎn):
優(yōu)點(diǎn)
- **沒有單點(diǎn)故障:**通過允許多個(gè)錢包供應(yīng)商,我們消除了單點(diǎn)故障的問題。這在安全方面是有益的,因?yàn)樗馕吨绻粋€(gè)錢包供應(yīng)商遭受攻擊或技術(shù)故障,用戶可以有替代方案。
- **減少對單一供應(yīng)商的依賴:**目前,以太坊社區(qū)嚴(yán)重依賴一個(gè)單一的供應(yīng)商,MetaMask. 這創(chuàng)造了一個(gè)潛在的風(fēng)險(xiǎn),因?yàn)槿绻?MetaMask 一旦被破壞,很大一部分以太坊用戶將受到影響。通過支持多個(gè)錢包,EIP-6963 分散了風(fēng)險(xiǎn)。
- **加強(qiáng)了用戶控制:**在多個(gè)錢包提供商之間進(jìn)行選擇的能力使用戶能夠?qū)ψ约旱陌踩懈蟮目刂?。用戶可以選擇一個(gè)符合他們個(gè)人安全偏好和信任程度的錢包供應(yīng)商。
缺點(diǎn)
- **攻擊面增加:**隨著EIP-6963的實(shí)施,攻擊面增加了。這是由于有更多的錢包供應(yīng)商有可能成為惡意行為者的目標(biāo)。重要的是,每個(gè)錢包供應(yīng)商都要遵守高安全標(biāo)準(zhǔn),以盡量減少這種風(fēng)險(xiǎn)。
- SVG 圖像利用的潛在風(fēng)險(xiǎn): EIP-6963 提議使用 SVG 圖像作為錢包提供商的圖標(biāo)。然而,SVG 圖像可能包含 JavaScript 代碼,可能會(huì)帶來跨站腳本(XSS)風(fēng)險(xiǎn)。雖然 EIP 確實(shí)指定 SVG 圖像應(yīng)使用標(biāo)簽呈現(xiàn)以防止 JavaScript 執(zhí)行,但這個(gè)建議只能由第三方或每個(gè)實(shí)現(xiàn)的審計(jì)員進(jìn)行驗(yàn)證。
- 取代 window.ethereum 的影響: 雖然 EIP 沒有直接通過取代 window.ethereum 來破壞現(xiàn)有應(yīng)用,但它建議在用戶選擇錢包后這樣做。此建議只能由第 3 方或?qū)徲?jì)員在每次實(shí)施中驗(yàn)證。
前端代碼中具體實(shí)現(xiàn)
function onAnnouncement(event) {
console.log(event)
//event 就是對應(yīng)的已經(jīng)安裝的瀏覽器錢包插件實(shí)例。
//具體包括uuid、name、icon、walletId 以及 對應(yīng)的插件實(shí)例
}
window.addEventListener("eip6963:announceProvider", onAnnouncement)
window.dispatchEvent(new Event("eip6963:requestProvider"))
結(jié)論
EIP-6963 旨在增強(qiáng)多個(gè)錢包提供商之間的互操作性,降低新提供商的準(zhǔn)入門檻,并改善以太坊網(wǎng)絡(luò)上的用戶體驗(yàn)。同時(shí),對于安全性的影響是復(fù)雜的。用戶、錢包提供商和以太坊庫開發(fā)人員必須遵守最佳實(shí)踐,以確保以太坊生態(tài)系統(tǒng)保持安全。通過實(shí)施這個(gè)提案,以太坊生態(tài)系統(tǒng)可以朝著更加用戶友好和競爭環(huán)境的方向發(fā)展,既有利于錢包提供商,也有利于他們的用戶。文章來源地址http://www.zghlxwxcb.cn/news/detail-838273.html
到了這里,關(guān)于EIP-6963: 多錢包沖突的解決方案的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!