作者:Todd
原文: 《A&T View:我們離普及智能合約錢包還有多遠?一文看懂ERC-4337》
01目錄
-引子
-釋義:智能合約錢包、賬戶抽象和ERC-4337
-框架層面對比:EOA錢包、當前主流智能合約錢包和ERC-4337錢包
-我們離普及智能合約錢包還有多遠?
- EVM環境下/非EVM環境下
-產品形態& 價值捕獲
-尾聲
02正文
引子
當前主流以太坊錢包(指EOA錢包)的用戶體驗很有限,以下便捷性功能都只能通過智能合約錢包來完成(一些鏈外輔助方案可以提供便利,但會引入不必要的外部風險,故不在本文討論範圍內)
-無私鑰&助記詞體驗,社交找回(eg Argent,Unipass)
-批量交易(eg Gnosis Safe)
-純鏈上游戲中,無需多次簽名(Session Key)
幸運的是,我們已經很接近通行的智能合約標準,而這意味著用戶很快就能擁有100 倍的以太坊錢包體驗!
釋義:智能合約錢包、賬戶抽象和ERC-4337
智能合約錢包(Smart Contract Wallet)是當前以太坊支持的兩種錢包形態之一,而另一種是大眾所常用的EOA錢包(eg Metamask)。
顧名思義,前述的一切美好價值都得益於智能合約:
-智能合約賬戶由其代碼控制:通過對代碼的編寫,可以實現任意邏輯。
-相比之下,EOA 錢包是由私鑰控制的區塊鏈上的地址,即通過私鑰,用戶可以從所述地址簽發交易。
-但“私鑰即賬戶”的特性面對的限制也很明顯:用戶不能授權另一個密鑰來為給定地址簽名,也不能在其上編寫自定義邏輯。
-重要補充:智能合約錢包可以被編譯成與EOA 完全一樣的體驗(只有一個簽名密鑰,不可升級等),但反之則不行。
賬戶抽象(Account Abstraction)是通過省略以太坊賬戶體系中不必要細節,來減少複雜性並提高有效性有效地(消除了對EOA 的需求和對智能合約錢包的特殊處理),最終為前述的有價值功能提供基礎! (可參照Abstraction在Computer Science裡的解釋【1】)
ERC-4337是實現賬戶抽象效用的設計之一:
-在不修改區塊鏈底層核心協議的情況下實現。 (ERC-4337,近期將有望跑通)
-對區塊鏈底層核心協議進行修改來實現。 (EIP-3074,EVM 內將是中長期計劃/ Starkware/ zksync 上已近乎完成)
框架層面對比:EOA錢包、當前主流智能合約錢包和ERC-4337 錢包
(如果對技術細節沒有興趣,可直接跳至“ERC-4337 的優勢,相較於目前主流智能合約錢包”)
輔助閱讀tips:
上圖中,分割線將每個框架分成了三個部分:用戶簽名階段,中繼階段(在交易被出塊打包前),最終執行階段(在交易被出塊打包後)。希望這樣的分割能讓你更好的理解。
EOA
-一筆交易,由用戶用其私鑰進行標準的ECDSA簽名,隨後將其發送到以太坊Mempool,礦工將其打包至下一個區塊內。
目前智能合約錢包
-與EOA最大的區別:出於網絡安全以及更好UX的考慮,目前的主流智能合約錢包需要建立&運營一個replayer來將用戶的信息發送至最終的智能合約錢包。
-考慮到以太坊目前主流智能合約錢包(eg Safe, Argent, Loopring)之中並不存在一個通行的開發標準,每個項目都必須開發&維護自己的relayer和相關的費用模塊,並獨立審計其採用的智能合約功能。
ERC-4337
-與目前主流智能合約錢包最大的區別在於:
-建立通用模塊Useroperation Mempool & Bundler 來替代每個項目獨立開發的relayer模塊;
-引入Entry Point智能合約來優化用戶創建新錢包體驗以及智能合約錢包驗證user-operation可行性等流程
-具體流程是這樣的,不同於transaction,用戶發出的User Operation會匯集到User Operation Mempool,並由Bundler對數筆User Operation進行打包(並附上gas fee)後發給以太坊的transaction mempool,隨後由出塊節點包含至下一個區塊。
-上述打包的User Operation將由Entry Point智能合約處理,包括初次部署智能合約賬戶以及驗證用戶User Operation對象。
-最終,用戶User Operation由用戶選擇的智能合約錢包處理。
ERC-4337 的優勢,相較於目前主流智能合約錢包
-每個智能合約錢包無需單獨運營一個relayer;
-便捷性極強的智能合約功能模塊是通用的,大量節約重新造輪子的成本;
-通過Bundler打包後,交易的固定成本得以被攤銷,最終降低用戶的交易成本。
我們離普及智能合約錢包還有多遠?
100% EVM 鏈(感謝https://hackmd.io/@erc4337 【2】)的巨大幫助)
答案是很快了。核心合約基本準備就緒,數個優秀團隊即將發布生產級的ERC-4337原生客戶端錢包!
要部署ERC-4337——整個EVM 生態系統的通用標準,需要開發幾個主要模塊(如上圖紅點所示):
① 生產級ERC-4337 源生客戶端錢包
雖然ERC-4337 沒有指定簽名方案,但依賴MetaMask 為UserOperation 使用ERC-191 或ERC-712 簽名的dapp 並不是最佳的用戶體驗。 Market 需要客戶端錢包通過專用的標準簽名方案原生支持代理錢包地址及其UserOperation 交易。
開發進展:
② UserOperation Block Builder Bundler
ERC-4337 網絡的主要操作模式至少需要一定部分的網絡塊構建結構(eg 礦工、驗證器、排序器等)才能在其公共P2P 內存池中原生支持UserOps,並使用這些UserOps 創建捆綁包並包含Entry Point交易在block中。
開發進展:
③ Entry Point智能合約
ERC-4337的核心部分。
開發進展:
④ 生產級ERC-4337 ECDSA 代理錢包智能合約
ERC-4337 的主要操作模式假設每個用戶都將獲得由代理錢包代表的身份。這意味著為此類錢包提供安全實施至關重要。這也意味著我們必須保證用戶的代理錢包地址在整個網絡中是確定性和一致的,就像EOA 一樣。
開發進展:
⑤ ERC-4337 客戶端SDK
這部分旨在使ERC-4337 集成到各種錢包和dapp 中盡可能簡單,例如繼續使用MetaMask,同時能體驗到ERC-4337的功能。
開發情況:
⑥⑦⑧⑨...社交找回、Paymaster 以及你想要的便捷性功能
雖然這些功能不是ERC-4337 錢包的必備部分,但ERC-4337 錢包的價值必將建立在其之上。
開發進度:
非100% EVM L2 (egStarknet)
答案是比EVM 環境更早。目前,開發人員已經可以在測試網中使用它進行編碼,並且許多強大的功能已經進入生產級。
作為非EVM 等價區塊鏈,Starkware 可以通過在協議級別上進行一些修改來更輕鬆地實現帳戶抽象(與以太坊和100% EVM 環境相比)。
StarkNet 上Account Abstraction 的基本流程
目前,帳戶抽象的進展幾乎已達到可大規模推廣的生產級別,且Starkware 已發布了涵蓋帳戶抽象改進的StarkNet Alpha 0.10.0(受ERC-4337啟發)
[DevConnect StarkNet 黑客馬拉松] 期間已經出現了一些很有趣的東西:
- Session Key:通過創建存儲在瀏覽器中的一次性簽名密鑰,用戶只需在遊戲一段時間內簽一次名。這消除了玩家簽署重複交易的需要。 (Briq & Realms【3】)
- Dead Man's Switch:在一定的長時間內,若賬戶未使用,該設計允許受信任的帳戶訪問你錢包中的資產,並將賬戶所有權轉交給既定人選,以此解決如果原持有人消失後的賬戶資產轉交問題。 (deadman【4】)
- 遊戲工會多簽系統:允許token持有者在保有所有權的情況下,在工會內開放其NFT的使用權限。 (Guildly【5】)
產品形態和價值捕獲
產品形態:最終可能會與當前見過的都不太一樣
回想一下前述的內容,賬戶抽象的主要合約甚至錢包客戶端SDK都會是開源的,這意味著在基於賬戶抽象框架來推出一個基礎錢包(不含各種花樣功能)是非常容易的。隨後,開源社區已經有很多很棒的便捷性功能,並且可以期待還會有更多。最重要的是,這些基礎錢包和便捷性功能都在同一個標準下!
- 那麼,產品形式大概會是這樣:任何人都可以構建一個標準化的前端,並加載一個便捷性功能的插件市場,讓用戶可以他們想要使用的插件,並展示當前正在使用的插件(我不是PM 或美工,如果下圖很難看,還請諒解:)
價值捕獲:我們需要再次直面公共物品的收入模式
參考前述理論,如果基礎界面會沉澱為底層基礎設施,而大部分的便捷性功能也都將開源,那如何做價值捕獲?
-當然,錢包可以繼續通過swap功能來實現流量變現。
-但對這些極具價值的便捷性功能而言,目前的市場缺乏針對這類公共物品的適當的激勵機制,那誰來負責豐富更多的便捷性功能呢?畢竟這是智能合約錢包最重要的價值所在。
- 大眾用戶能習慣對公共物品的按次付費嗎?
尾聲
正如Vitalik多次公開對賬戶抽象的闡述那樣:賬戶抽像是區塊鍊網絡進行主流人群的必經之路!希望這篇文章能讓你對它有更好的理解。
儘管仍然存在許多實際限制(eg 許多不支持EIP-1271 的dapp >>> 智能合約錢包無法與這些dapp 進行交互),並且它不適合多鏈場景。但就像L2 是以太坊的未來一樣,我相信賬戶抽像是以太坊錢包的未來!
當然,我也鼓勵大家在多鏈用例中嘗試MPC 錢包,它應該是近期最好的錢包解決方案了。如果你對多鏈體系下的賬戶抽象錢包有任何想法,請聯繫我!
感謝@沙漏時間@cejay@kristofgazso的幫助!
參考內容:
https://hackmd.io/@s0lness/BJUb16Yo9
https://medium.com/nethermind-eth/ethereum-wallets-today-and-tomorrow-eip-3074-vs-erc-4337-a7732b81efc8
【1】https://en.wikipedia.org/wiki/Abstraction_(computer_science)
【2】https://hackmd.io/@erc4337
【3】https://twitter.com/lordOfAFew/status/1519057227834818561
【4】https://deadman.me/
【5】https ://www.notion.so/33c8008e033d4040b9438edf5225c580
【6】https://www.stackup.sh
【7】https://www.candidewallet.com
【8】https://twitter.com/soulwallet_eth
【9】https://nethermind.io/
【10】https://github.com/NethermindEth/nethermind/tree/master/src/Nethermind/Nethermind.AccountAbstraction
【11】https://github.com/NethermindEth/mev-aa-geth
【12】https://twitter.com/infinitism8
【13】https://github.com/eth-infinitism/account-abstraction
【14】https://github.com/stackupfinance/stackup/blob/main/apps/contracts/contracts/entrypoint/EntryPoint.sol
【15】https://www.biconomy.io/
【16】https://github.com/eth-infinitism/account-abstraction