錢包作為進入加密世界的入口以及通行證在整個加密行業中有著不可替代的地位,使用錢包也是每一個想進入加密世界的人不可避免的一環,錢包的功能也從最初的純記帳功能演化至如今的多鏈多場景使用功能。但目前錢包的使用門檻對於新用戶來說學習成本過高,這道門檻將許多想進入加密世界的人拒之門外,而錢包門檻的降低才可以為整個加密世界帶來更多的新鮮血液以及生態的爆發,隨著 EIP-4337 賬戶抽象提案的到來,賬戶抽象錢包帶來的降低門檻是否會讓錢包進入下一個時代引爆加密世界的用戶爆發潮?
作者:菠菜菠菜
特別鳴謝十四君以及方軍老師的支持以及指導
注:文章僅代表作者個人觀點,不構成任何投資建議
目錄
01/ 現階段小白用戶使用錢包的痛點是什麼?
02/ 以太坊現有的錢包類型有哪些?
03/ 賬戶抽象是什麼?EIP-4337 賬戶抽象有哪些優點?
04/ 為什麼以太坊選擇了 EIP-4337 賬戶抽象提案?
05/ EIP-4337 賬戶抽象錢包如何運作?與其他錢包賬戶類型有什麼不同?
06/ EIP-4337 賬戶抽象存在著哪些不足和風險?
TL;DR
- 加密世界的知識門檻較高,人們普遍缺乏對區塊鏈以及錢包知識的認知,錢包現階段使用體驗複雜,存在著許多因素阻礙著新用戶的加入
- 現階段小白用戶使用錢包時會遇到一些痛點:使用錢包必須先有 Gas 費、需要尋找加密資產購買渠道、眼花繚亂的主網選擇以及錢包安全問題
- 以太坊上的錢包存在兩種不同類型的賬戶即EOA 外部擁有賬戶(Externally Owned Accounts)和CA 合約賬戶(Contract Account),EOA 外部擁有賬戶類型的錢包指由私鑰以及公鑰的密鑰對控制的錢包,不具備可編程功能。CA 合約賬戶類型的錢包指以智能合約形式存在的錢包,合約賬戶類型的錢包本身不是由私鑰控制也不存在私鑰,而是通過編寫代碼實現各種功能,但不能主動發起交易
- 兩種錢包賬戶類型各有利弊以及局限性,EOA 外部擁有賬戶只能按照以太坊規定的生成密鑰對的方法來生成,不具備可編程性,需要擁有 Gas 費才可以操作,私鑰丟失就無法找回,但相比 CA 合約賬戶類型而言,雖然 CA 合約賬戶類型可以自定義邏輯來實現更多功能的可能性,但是 CA 合約賬戶類型無法主動發起交易需要由 EOA 外部擁有賬戶來進行調用,並且生成 CA 合約賬戶類型的錢包需要額外的成本,這兩種錢包賬戶類型目前都無法解決錢包使用體驗複雜的問題
- 賬戶抽象(Account Abstraction)是以太坊上一種待實現的錢包技術方案,其最終願景是讓 AA 賬戶抽象錢包結合 EOA 外部擁有賬戶和 CA 合約賬戶兩種賬戶類型的特徵,使其合二為一替代 EOA 來作為主賬戶存在,除了擁有 CA 的可編程性外還可以擺脫 EOA 的依賴主動發起交易。
- EIP-4337 提案將原本以太坊錢包交易流程中寫死在共識層中的【驗證交易機制】抽離出來交給 EIP-4337 的新機制處理,新機制的出現使得賬戶抽象錢包實現了簽名方式的可自定義,並且帶來了更多應用場景
- 實現了賬戶抽象的錢包應用可以讓用戶無需擁有 EOA 也可以使用特定的簽名方式發起交易來作為主賬戶使用,使得賬戶抽象錢包的所有權以及簽名權解耦,賬戶抽象錢包的 EOA 所有者賬戶也僅僅是作為所有者存在,不影響實際賬戶抽象錢包的使用
- EIP-4337 之所以能被以太坊選擇為最終方案,首先是因為EIP-4337 不需要進行共識協議層的修改就可以實現賬戶抽象,這就避免了不亞於類似從 POW 工作量證明機制轉換至 POS 權益證明機制這種龐大的共識層修改
- 在 EIP-4337 中賬戶抽象錢包將【簽名驗證機制】交給了入口點合約來進行,這就使得賬戶抽象錢包可以使用任意簽名形式的簽名機制,錢包開發者可以選擇相應場景的簽名形式去開發錢包產品
- 目前的賬戶抽象錢包更像是一種智能合約錢包的新標準,還無法擺脫對於需要 EOA 作為錢包擁有者的依賴。並且目前賬戶抽象提案仍存在一些不足以及風險:智能合約風險、更高的 GAS、技術實現問題
(一)現階段小白用戶使用錢包的痛點是什麼?#
由於加密世界的知識門檻較高,人們普遍缺乏對區塊鏈以及錢包知識的認知,錢包現階段使用體驗複雜,並存在著許多因素阻礙著新用戶的加入。
痛點一:使用錢包必須先有 Gas 費
當一個小白用戶滿懷期待想體驗加密世界並下載了錢包準備大幹一番的時候,小白驚奇的發現錢包居然不能使用,因為錢包裡面沒有公鏈原生通證(如以太坊的 ETH)作為 Gas 費,錢包無法進行任何操作,因為錢包的每一次鏈上操作都需要礦工來打包操作並支付 Gas 費給礦工作為辛苦費,這時小白就要開始尋找購買加密資產的渠道,而許多錢包產品並沒有提供出入金渠道,大多數小白的選擇可能就會是中心化交易所。
痛點二:加密資產購買渠道以及眼花繚亂的主網選擇
當小白用戶想購入加密資產時,他們可能會選擇有出入金渠道的錢包產品、中心化交易所、場外交易等渠道購入加密資產,但對於選擇中心化交易所和場外交易渠道的小白用戶來說,在中心化交易所購入資產後想要轉入錢包中的話小白用戶又會被選擇轉帳的各種各樣的主網給搞暈了,學會選擇主網就需要一定的學習成本,稍不小心轉錯網絡處理起來極其繁瑣,如果是場外交易的話則十分具有風險,小白用戶極容易成為騙子的詐騙對象。
痛點三:錢包安全問題
對於小白用戶來說,即便好不容易搞定了 Gas 費可以使用錢包進行交互了,但整個加密世界對於小白來說就是一片黑暗森林。小白用戶需要學習關於錢包的密碼學知識如私鑰公鑰等,還需要理解私鑰是什麼並思考怎麼確保私鑰的安全以及防範加密黑暗森林中的騙局,這些對於小白用戶來說學習成本大且很容易上當受騙,最重要的是私鑰一旦丟失或忘記就無法找回,不能像 Web2 應用找回密碼那樣重新找回,對於 Web2 用戶來說這是他們很難習慣的。
(二)以太坊現有的錢包類型有哪些?#
目前以太坊上的錢包存在兩種不同類型的賬戶即EOA 外部擁有賬戶(Externally Owned Accounts)和 CA 合約賬戶(Contract Account)。
EOA 外部擁有賬戶(Externally Owned Accounts):
EOA 外部擁有賬戶類型的錢包指由私鑰以及公鑰的密鑰對控制的錢包,外部擁有錢包的作用基本只有接收、持有、發送 Token 和與智能合約進行交互的功能,不具備可編程功能,並且執行每一筆交易都需要支付 Gas 費。創建一個外部擁有賬戶類型的錢包是無需成本的,但只能通過生成私鑰的方式創建。
CA 合約賬戶(Contract Account):
CA 合約賬戶類型的錢包指以智能合約形式存在的錢包,合約賬戶類型的錢包本身不是由私鑰控制也不存在私鑰,而是通過編寫代碼實現各種功能,如 DeFi 協議、多簽錢包、保險櫃、水龍頭等等功能,常見的用處有多簽錢包,即需要多個外部擁有賬戶錢包授權才可以進行交易的錢包,通常用於企業錢包管理。創建一個合約賬戶錢包是需要消耗 Gas 費創建的,合約賬戶錢包本身不能主動發起交易,而是需要外部擁有賬戶錢包調用並支付 Gas 費而被動發起交易。
這兩種錢包賬戶類型各有利弊以及局限性,EOA 外部擁有賬戶只能按照以太坊規定的生成密鑰對的方法來生成,不具備可編程性,需要擁有 Gas 費才可以操作,私鑰丟失就無法找回,但相比 CA 合約賬戶類型而言,雖然 CA 合約賬戶類型可以自定義邏輯來實現更多功能的可能性,但是 CA 合約賬戶類型無法主動發起交易需要由 EOA 外部擁有賬戶來進行調用,並且生成 CA 合約賬戶類型的錢包需要額外的成本,這兩種錢包賬戶類型目前都無法解決錢包使用體驗複雜的問題。
賬戶抽象(Account Abstraction)是以太坊上一種待實現的錢包技術方案,其最終願景是讓 AA 賬戶抽象錢包結合 EOA 外部擁有賬戶和 CA 合約賬戶兩種賬戶類型的特徵,使其合二為一替代 EOA 來作為主賬戶存在,除了擁有 CA 的可編程性外還可以擺脫 EOA 的依賴主動發起交易。
本處討論的賬戶抽象(Account Abstraction)指由 Vitalik 提出的以太坊 EIP-4337 提案,該提案將原本以太坊錢包交易流程中寫死在共識層中的【驗證交易機制】抽離出來交給 EIP-4337 的新機制處理,新機制的出現使得賬戶抽象錢包實現了簽名方式的可自定義,並且帶來了更多應用場景如:代付 Gas、聚合簽名、隱私保護等。
EIP-4337 提案實現後的賬戶抽象錢包可以不局限於 EOA 外部擁有賬戶類型錢包使用的以太坊橢圓曲線數字簽名算法(ECDSA)密鑰對的簽名方式,錢包應用的開發者們可以將任意類型的簽名方案應用在賬戶抽象錢包應用上使得用戶可以使用其他簽名方式發起交易,從而可以降低用戶的使用門檻。
實現了賬戶抽象的錢包應用可以讓用戶無需擁有 EOA 也可以使用特定的簽名方式發起交易來作為主賬戶使用,使得賬戶抽象錢包的所有權以及簽名權解耦,賬戶抽象錢包的 EOA 所有者賬戶也僅僅是作為所有者存在,不影響實際賬戶抽象錢包的使用。而所有權和簽名權的解耦使得錢包產品可以為用戶提供社交恢復等手段,人們即便丟失了私鑰也不用擔心無法找回了。
由於賬戶抽象錢包新機制帶來的可擴展性,先有 Gas 才能使用錢包的痛點也可以得到解決,賬戶抽象錢包不僅可以允許第三方代付 Gas,還可以實現除原生代幣以外的資產支付 Gas 費,這將極大的降低小白用戶對於 Gas 費的使用門檻,在不久的將來似乎可以預見,賬戶抽象帶來的更低門檻以及更多的自定義功能可能會引領錢包的一個新時代。
(四)為什麼以太坊選擇了 EIP-4337 賬戶抽象提案?#
賬戶抽象的討論自以太坊上線之時討論就沒有停止過,從最早的 EIP-101 到 EIP-3074 再到現在最新的 EIP-4337,賬戶抽象的方案已經迭代過好幾個版本,但由於大部分方案不成熟以及涉及到共識協議層的修改太複雜最終被搁置了。
從 2015 年至今經過了漫長的討論和迭代後,最終以太坊在 EIP-3074 和 EIP-4337 這兩個方案之間進行抉擇,如果說 EIP-4337 是讓 CA 智能合約賬戶錢包可以像 EOA 那樣使用,那麼 EIP-3074 就是讓 EOA 外部擁有賬戶錢包可以擁有智能合約賬戶的可編程功能,最終隨著以太坊創始人 Vitalik 公布的以太坊最新路線圖中,EIP-4337 被正式納入在 The Splurge(狂歡)階段中實施,這也讓 EIP-4337 成為了賬戶抽象的最終方案。
EIP-4337 之所以能被以太坊選擇為最終方案,首先是因為EIP-4337 不需要進行共識協議層的修改就可以實現賬戶抽象,這就避免了不亞於類似從 POW 工作量證明機制轉換至 POS 權益證明機制這種龐大的共識層修改,而 EIP-3074 涉及到共識層的改動,一旦出問題就需要使用硬分叉(hard fork)來解決問題,其次由於EIP-3074 是讓 EOA 外部擁有賬戶擁有智能合約賬戶的特性,在簽名機制上依舊使用固定的 ECDSA 簽名,無法像 EIP-4337 那樣可以使用任意簽名方式,所以相比於 EIP-3074 來說,EIP-4337 似乎在錢包門檻的降低上更有優勢。
(圖片來源:ethereum.cn 翻譯)
(五)EIP-4337 賬戶抽象錢包如何運作?與其他錢包賬戶類型有什麼不同?#
賬戶抽象相比於之前的賬戶類型引入了一些新角色以及機制:
錢包合約 (Wallet Contract):賬戶抽象後的錢包智能合約,可以實現自定義的錢包邏輯。
入口點合約 (Entry Point Contract):與錢包合約進行溝通協調並負責處理驗證和執行用戶操作的合約。
用戶操作(UserOperations,uo):用戶發起的新鏈下交易形式,區別於以前的【交易事務 Transaction, tx】
捆綁者(Bundler):負責將用戶操作打包並傳遞給入口點合約的鏈下計算節點。
用戶操作內存池(UserOperation Mempool):一個專門用於堆積待執行用戶操作的內存池,獨立於交易事務內存池。
代付人(Paymaster):可選擇的第三方支付 Gas 的代付人合約賬戶。
如果你不明白這些新名詞是什麼,接下來我會用簡化版的流程圖來進行展示,首先我們先了解 EOA 外部擁有賬戶類型的錢包的交易機制,EOA 外部擁有錢包需要簽署一個 ECDSA 簽名才可以發起交易。
從圖中可以看到 EOA 賬戶類型的錢包發起一個交易的步驟為:
- 用戶使用私鑰對交易信息進行 ECDSA 簽名產生一個帶有簽名的交易事務(Transaction, tx)
- 帶有簽名的交易事務會被發送到處理待執行事務的內存池中等待處理
- 礦工會在交易事務內存池中處理事務並驗證有效性
- 當驗證有效性為有效時,交易事務會被納入區塊中,反正則廢棄交易事務
由於 CA 合約賬戶類型沒有統一的交易流程標準,下圖為某種依賴 Relayer 的智能合約錢包的交易流程,我們可以看到CA 合約類型賬戶的需要依靠一個 EOA 外部擁有賬戶類型的錢包簽署 ECDSA 簽名來執行交易,並且 Relayer 這個角色可能會伴隨著中心化的風險。
從圖中可以看到某種 CA 合約賬戶類型的錢包發起一個交易的步驟為:
- 用戶使用私鑰對交易信息進行任意形式的簽名產生一個帶有簽名的交易信息(signed message)
- 帶有簽名的交易信息會被發送給負責傳達消息的節點 Relayer
- Relayer 使用私鑰對帶有用戶簽名的交易信息進行 ECDSA 簽名形成一個交易事務
- Relayer 將包含用戶交易信息的交易事務通過 Relayer 的 EOA 外部擁有賬戶錢包發送給用戶的錢包智能合約進行執行
- 用戶的智能合約錢包執行操作並通過礦工驗證後上鏈納入區塊
接下來我們再來看 EIP-4337 賬戶抽象後的錢包交易機制
從圖中可以看到账戶抽象後發起一個交易的步驟為:
- 用戶發起一個錢包用戶操作,使用任意形式的私鑰對用戶操作進行簽名產生一個帶有簽名的用戶操作(UserOperations,uo)
- 帶有簽名的用戶操作會被發送到待執行用戶操作內存池等待處理
- Bundler 將用戶操作內存池中的用戶操作進行打包處理成一個事務並提交給入口點合約
- 入口點合約處理所有用戶操作:驗證錢包是否存在 - 要求錢包驗證用戶操作 - 將用戶操作發送至智能合約錢包進行執行
- 智能合約錢包將用戶操作執行並納入區塊
通過對比下來我們可以發現,EOA 外部擁有賬戶發起交易需要依靠以太坊固定的 ECDSA 簽名算法來進行簽名,而 CA 合約賬戶最終也需要依靠 EOA 外部擁有賬戶的 ECDSA 簽名算法來簽署交易,而在 EIP-4337 中賬戶抽象錢包將【簽名驗證機制】交給了入口點合約來進行,這就使得賬戶抽象錢包可以使用任意簽名形式的簽名機制,錢包開發者可以選擇相應場景的簽名形式去開發錢包產品,用戶可以直接通過錢包應用特定的簽名方式操控賬戶抽象錢包進行操作,而這種簽名方式可以是 Web2 用戶也能輕鬆使用的方式或是專用場景下的定制方式。
並且由於任何礦工都可以充當 Bundler 這個角色,這就避免了 Bundler 這個角色的中心化風險,同時 Bundler 通過捆綁交易還可以預防 Flashbot 監聽內存池進行 MEV 套利,並且這些新機制的出現還帶來了更多的應用場景想像空間,例如第三方代付 Gas 費的 Paymaster。
從圖中可以看到,交易事務(tx)與用戶操作(uo)是兩個獨立的內存池,由於賬戶抽象的入口點合約的存在,代付人(Paymaster)合約便可以像樂高積木一樣與入口點合約組合在一起,當入口點合約對用戶操作(uo)進行驗證之前先對代付人進行驗證確認:是否同意代付?是否有足夠支付 Gas 費的 ETH 進行質押?
除了代付人完全補貼之外,如果用戶的賬戶合約中只有類似於 USDT、USDC 等非 Gas 費代幣,用戶也可以通過將 Gas 等值的其他代幣轉給代付人合約以達到無 ETH 支付 Gas 費的作用。
除了代付 Gas 之外,入口點合約還可以結合聚合簽名驗證合約實現聚合簽名功能,通過多人簽名的方式來控制錢包。
以上案例我們可以看到 EIP-4337 方案中的入口點合約模塊化的可組合性帶來的更多應用場景想像空間,似乎賬戶抽象錢包可以給整個加密世界帶來非常多的好處,但現實真的會如此美好嗎?
(六)EIP-4337 賬戶抽象存在著哪些不足和風險?#
雖然賬戶抽象的願景十分美好,但現實卻往往卻很骨感,目前的賬戶抽象錢包更像是一種智能合約錢包的新標準,還無法擺脫對於需要 EOA 作為錢包擁有者的依賴。** 並且我們都明白一個道理:越是複雜的事物越容易出問題,目前的賬戶抽象提案仍存在一些不足以及風險:
智能合約安全問題
智能合約安全問題一直是困擾加密世界的一個難題,我們甚至可以看到許多通過了 “智能合約審計” 的合約往往也會出現安全漏洞,而每次出現合約安全問題往往都會伴隨著巨大的財產損失,而對於 EIP-4337 賬戶抽象方案來說,賬戶抽象錢包的功能模塊化堆積以及新機制的加入就會使得其代碼執行邏輯更加複雜,而往往更複雜的代碼執行邏輯可能就會伴隨著潛在的安全風險。由於賬戶抽象錢包和入口點合約本身都是智能合約,一旦入口點合約或者錢包合約出現問題則有可能會釀成一場損失慘重的黑客事件,人們對使用賬戶抽象錢包的信任也會大打折扣。
更高的 Gas 費
除了潛在的合約安全風險之外,賬戶抽象錢包使得用戶需要支付的 Gas 費更高了,因為賬戶抽象錢包相比於 EOA 外部擁有賬戶和 CA 合約賬戶來說處理交易的操作步驟變多了以及處理邏輯更複雜了,需要處理的操作變多也就意味著需要的 Gas 費更多,雖然 Vitalik 也提出可以通過 Layer2 來處理賬戶抽象的數據來降低 Gas 消耗的解決方案,但這也需要一段漫長的時間。
技術實現問題
目前距離 EIP-4337 的落地還有很長的一段時間要走,許多理論上可以實現的技術往往在實踐中會困難重重遇到許多問題如:兼容問題,複雜的節點驗證過程,如何防止 Bundler 作惡、技術邏輯無法實現等等,要解決這些技術問題需要進行長時間的嘗試和討論,這也是為什麼 EIP-4337 被放在了以太坊升級的第六個階段 Splurge(狂歡)中的原因。
道阻且長,加密世界需要更低門檻且安全的錢包來吸引更多新用戶以突破用戶量的瓶頸,相信隨著賬戶抽象的實現會給加密世界帶來一個全新的想像空間,甚至可能在不久的將來會有一個意想不到更好的替代方案來取代賬戶抽象,加密行業迭代更新的速度遠超我們想像,這也是這個行業的魅力所在。