原文標題:《詳解EIP-4361:什麼是以太坊登錄? 》
原文來源: TokenviewLabs
Part 1:什麼是EIP-4361?
Part 2:以太坊登錄對Web3 的重要性?
Part 3:創建以太坊登錄界面
Part 4:解析ENS 數據Part 5:Tokenview 科普時間
正文開始
當用戶登錄到web2 服務時需要使用用戶名或電子郵件地址和密碼。然而以太坊登錄(Sign-In with Ethereum)將會改變這一方式。
通常在登錄「web2」服務時,我們需要使用用戶名或電子郵件地址和密碼。然後,該服務可以在他們的內部數據庫中查找我們的用戶名或電子郵件地址,看看相應的密碼是否與我們提供的密碼匹配。生成用於進一步身份驗證的隨機密鑰,通常存儲在cookie 中。這種提交給【大登錄】(大登錄指的是在很多個互聯網服務上使用同一個登錄方式(例如:Facebook、Google、Weixin 等))的方式往往依賴於大型互聯網公司和電子郵件提供商,它們正是對用戶身份擁有最終控制權的中心化實體。
以太坊登錄(EIP-4361)的出現改變了這個規則,它為那些希望對自己的數字身份承擔更多控制和責任的用戶提供了一種新的自我託管選項。用戶不再需要向一些大型中間商妥協,現在可以使用控制其區塊鏈賬戶的同一個私鑰直接登錄(不需要經過中間商)。大公司不再能剝奪用戶訪問服務的能力,也不能監視他們的行為。
使用以太坊登錄有望回歸用戶權力。
“500px”>
Part.1
什麼是EIP-4361?
什麼是EIP-4361:使用以太坊登錄?
它是以太坊賬戶建立會話(sessions)的鏈下認證。
以太坊登錄(EIP-4361)描述了以太坊帳戶如何通過簽名由范圍、會話詳細信息和安全機制參數化的標準消息格式來驗證鏈下服務。 EIP-4361 的目標是為中心化身份提供者提供一種自我託管的替代方案,提高基於以太坊身份驗證的鏈下服務的互操作性,並為錢包供應商提供一致的機器可讀消息格式,以實現更好的用戶體驗和同意管理。換句話說,EIP-4361 的目的是希望通過使用web3 服務(如錢包和dapps) 常用的方法來改變我們登錄web2 服務的方式。
已經有許多服務支持使用消息簽名驗證以太坊帳戶的工作流(workflows),例如建立一個基於cookie 的web 會話,該會話可以管理關於驗證地址的特權元數據。這是一個標準化登錄工作流和提高現有服務互操作性的機會,同時也為錢包供應商提供了一種可靠的方法,可以將簽名請求識別為以太坊登錄請求,以改善用戶體驗。
以太坊登錄的工作原理如下:
該錢包為用戶提供了一個結構化的明文消息或等效的接口,用於使用EIP-191 簽名數據格式進行簽名。在簽名之前,消息前綴是EIP-191 中定義的為\x19Ethereum Signed Message:\n。該消息必須包含以太坊地址、請求籤名的域、消息的版本、鏈標識符chain-id、用於範圍的uri、依賴方(relying party)可接受的nonce 和發出的時間戳。
然後將簽名提交給依賴方,由依賴方檢查簽名的有效性和消息內容。
其他字段,包括過期時間、not-before、請求id、語句和資源,可以被合併為登錄過程的一部分。
依賴方可以進一步獲取與以太坊地址相關的數據,例如來自以太坊區塊鏈(例如,ENS,賬戶餘額,EIP-20/EIP-721/EIP-1155 資產所有權),或其他可能或可能不被允許的數據源。
事例消息
以太坊登錄(EIP-4361)為以太坊賬戶定義了一種開放的創意共享(CC)簽名格式,用戶登錄不需要使用用戶名和密碼的組合,只需用自己的私鑰對消息進行簽名,就完成了。並且可以安全地驗證任何基於網絡的服務。 EIP-4361 是在以太坊基金會和ENS 的直接支持下,由社區創建的。
Part.2
以太坊登錄對Web3 的重要性?
對於Web3 的所有建設者來說,以太坊登錄比連接錢包(Connect Wallet)的意義要大得多。連接錢包是當前進入Web3 dapps 的主要方式。通過連接錢包,用戶就可以開始和區塊鏈進行交互,但連接錢包並沒有使應用程序記錄你的任何信息,只是為簡單的交互創建了一個前端顯示。而以太坊登錄允許用戶和應用程序之間建立會話(session),可以進行更為豐富的情景互動,安全地讀寫他們的數據。
我們用Connected Carl(使用連接的Carl)和Session Sam(使用會話的Sam)這兩個例子來進行闡釋。 「Connected Carl」使用dapp。他可以在Uniswap 上進行交易,在Aave 上進行借貸,甚至在OpenSea 上購買NFT,只需要連接他的錢包。一段時間,Carl 的事情進行得相當順利,直到有一天,他遇到了一個問題:他希望這些dapp 能記住他,以便在他第三次、第四次、第五次使用這些dapp 時,能給他更好的體驗。
Carl 在想,如果Uniswap 能自動導入他的流動性偏好,Aave 能記住他最喜歡的借貸市場,甚至OpenSea 能記住他的名字而不是0x2Fe1a3… 的賬戶,他的體驗會好很多。但每次連接他的錢包時這些都要從頭開始。
「Session Sam」就沒有這個問題。在與dapps 進行認證並建立會話後,這些信息被保存下來。即使Sam 斷開連接並再次認證,薩姆也會從他離開的地方繼續,並且在應用程序中仍然記得關於他的一切。他的信息甚至可以保存在他控制的一個遠程數據庫中。
連接錢包的功能非常簡單,僅僅是通知一下dapp,讓它知道你正在使用的是哪個賬戶,dapp 也對你毫無記憶,只是為簡單的交互搭建了一個平台。但以太坊登錄對用戶進行身份驗證,以便與他們建立一個session,你和dapp 之間進行的種種情境交互,會被安全地讀寫記錄。
Part.3
創建以太坊登錄界面
錢包創建以太坊登錄界面如下:
錢包實現者必須在默認情況下和簽名之前向用戶顯示以太坊登錄簽名請求中的以下術語:域、地址、語句和資源。其他現有術語也必須在默認或通過擴展接口簽署之前提供給用戶。錢包實現者向用戶顯示明文消息時,應該要求用戶在簽名前滾動到文本區域的底部。
錢包實現者可以通過將ABNF 術語解析為接口中使用的數據元素來構建自定義的登錄以太坊用戶界面。上面的顯示規則仍然適用於自定義界面。
在用戶體驗上,錢包可以呈現一個友好的風格化的界面,讓用戶體驗更佳。例如通常給用戶提示的簽名信息是LOGIN。相較而言,「使用以太坊登錄」的信息較為雜亂,但我們可以把它用一種公認的通用方式來向用戶提出請求。有了一個商定的簽名信息格式之後,應用程序和錢包就可以說同樣的語言。當應用程序向用戶提出簽名請求時,錢包就可以檢查該請求,檢查它是否適合作為EIP-4361 消息,並讓用戶知道他們正在簽署進入一個網站(由此也可以得到一個更簡潔的界面)。該規範還為錢包引入了額外的安全要求,如防止網絡釣魚攻擊的域名綁定和防止重放攻擊的nonce 設置,用戶在整個體驗過程中得到進一步保護。例如,如果錢包發現一個有效的以太坊登錄信息,但用戶簽署的是example.com,但實際上是在exampie.com,錢包可以警告用戶這種情況。
Part.4
解析ENS 數據EIP-4361 與以太坊名稱服務(ENS) 巧妙集成。
依賴方或錢包還可以對ENS 數據進行解析,因為這可以通過顯示與地址相關的人性化信息來改善用戶體驗。如果一個地址有一個主ENS 名稱,服務可以查找這個主ENS 名稱並基於它解析數據。例如,可以將自己的首選用戶名、頭像、電子郵件地址或其他任意信息存儲在ENS 名稱中。這樣就可以控制自己的數據,並且不需要web2 服務來存儲關於用戶的這些信息。這可能會導致未來使用經過身份驗證、簽名的EIP-191 消息登錄到身份驗證的應用程序成為標準,完全消除電子郵件/密碼組合。可解析的ENS 數據包括:主ENS 名稱。 ENS 頭像。 ENS 文檔中指定的任何其他可解析資源。如果對ENS 數據進行解析,實施人員應採取預防措施,以保護用戶隱私和同意,因為作為解析過程的一部分,他們的地址可能被轉發到第三方服務。
Part.5
什麼是EIP?
以太坊治理中使用的一個重要過程是以太坊改進提案(EIPs:Ethereum Improvement Proposals)的提議。 EIPs 是指定以太坊潛在新功能或流程的標準。以太坊社區內的任何人都可以創建EIP。例如,EIP-721(標準化NFTs 的EIP)的作者都沒有直接參與以太坊的協議開發。假設某個EIP 被批准、測試和實施,它將被安排為網絡升級的一部分。由於網絡升級的協調成本很高,因此EIP 通常會捆綁在一起進行升級。網絡升級激活後,EIP 將在以太坊網絡上線。
此前我們介紹過以太坊上海昇級即將激活的四個EIP 系列,分別包括EIP-3651 (降低訪問COINBASE 地址的gas 開銷) ;EIP-3855 (新增操作碼PUSH0) ;EIP-3860 (給initcode 的大小設限,並引入給這個字段的gas 計量) 以及EIP-4895 (信標鏈推式提款作為系統操作)。點擊回顧。