SevenX Ventures: 一文讀懂账戶抽象,ERC4337如何帶來以太坊账戶的進化?
原文作者: Rui
正如許多人所說,账戶抽象 (AA) 技術,尤其是 ERC-4337 ,有望徹底改變自我托管錢包的用戶體驗,並使其能夠擴展以供大規模採用。然而, 2023 年 5 月越來越近了,我們必須認識到該標准還處於早期階段,機遇與風險並存。
*請注意,隨着升級的快速發展,本文內容可能很快就會過時,並且本文僅基於我個人觀點。
TL;DR
ERC 4337 :
AA 標准仍處於早期階段,不過許多創新構建者正努力對其進行進一步开發。在生態系統的支持和 MetaMask 等大型產品的普及這一大背景下,我們可以預見 AA 將加快發展進程,並產生令人興奮的成果。
L2:
對 AA 的採用在 L2 解決方案中有所不同。較大的 L2(例如
Optimism
和
Arbitrum
)本身並不支持 AA,而 ZKSync 和
Starknet
則支持。
Bundler 服務:
-
如果我們看好 AA,並且所有與以太坊一致的 EVM 等效L2不支持原生 AA,那么 Bundler 服務就是網絡中支持 AA 的必要條件。
-
开源特性使得 Bundler 服務具有非排他性,這就令變現之路困難重重。為了保證網絡安全穩定,就要用到不同的 Bundler 服務。
-
私人 Bundler 可通過為特定需求定制隱私、安全和其他功能來實現盈利。
Paymaster 服務:
-
Paymaster 服務相對集中(與 Bundler 服務相比),合約开源,但後端封閉。
-
Paymaster 服務具有盈利模式,可與法幣存款、兌換、橋接、自動支付、會話、贊助費等功能相結合來增強支付場景,從而提高 dApp 可用性。
AA 錢包和 SDK:
-
AA 錢包可以從產品角度進行評估,包括密鑰管理系統、社交恢復、gas 費贊助、多鏈账戶同步以及支持的區塊鏈等。
-
AA 的優勢不光是提供流暢的登錄體驗(Web3 Auth 可通過托管方式實現)。在復雜且定制的鏈上交互中,AA 還可以為 dApp 提供諸多好處。
-
BD 是這場战局的關鍵。大多數錢包都瞄准 Defi、GameFi,並致力於獲得生態系統支持、說服大型 dApp、找到突破點。
-
變現模式有待深入探索。To Business(To B)模式可能賺不了多少錢,也不會積累自己的用戶,而 To Customer(To C)模式則需要找到高價值的場景,基於體量來盈利。集成交換和橋接功能可以盈利,但關鍵在於找到可持續的模式。
了解加密錢包
分類
以太坊網絡中存在兩種類型的帳戶:外部账戶 (Externally Owned Account, EOA) 錢包,如 MetaMask,以及合約账戶 (Contract Account, CA) ,比如 Safe 。
EOA 錢包和合約錢包之間的主要區別在於其控制方式。EOA 錢包由個人用戶通過私鑰控制,而合約錢包則由智能合約控制。雖然 EOA 錢包更簡單,並用於管理個人加密貨幣持有量,但合約錢包可以有更復雜的規則,並可用於特定目的。
From Bitcoin Insider
痛點
EOA 錢包用戶需要注意保護私鑰。在私鑰上所犯下的任何錯誤或疏忽都可能招致資金損失,因此 EOA 錢包的使用成本比較高,風險也高。即便是經驗豐富的加密貨幣用戶也可能會因為一次錯誤或粗心的舉動而失去對其账戶的控制。操作復雜、無法略過 gas 費或無法進行 gas 費代付以及錢包功能有限,這些都是困擾用戶的問題。
智能合約錢包為部分問題提供了解決方案,但以太坊目前要求將所有操作打包在來自受 ECDSA 保護的 EOA 的交易中。這會產生額外的交易費,還要多消耗 21000 gas 費,隨之而來的還有潛在的中心化風險和復雜的操作:用戶需要管理兩個账戶並在單獨的 EOA 中存入 ETH 來支付 gas 費,或者依靠中心化中繼系統支付。
這些痛點催生了 AA 新標准——ERC-4337 。
ERC 4337 提案:
CA 的問題
如今,這些事情都可以用合約錢包解決,但以太坊本身要求將所有內容打包在源自 ECDSA 保護的 EOA 的交易中,這將導致:
-
額外交易費用: 每個用戶操作都必須由 EOA 發起,就需要額外消耗 21000 gas 費。
-
復雜性和中心化: 用戶需要在單獨的 EOA 中存入 ETH 來支付 gas 費,並管理兩個账戶中的余額,或者依靠中繼系統支付,這些中繼系統通常是中心化的。
多年來,人們多次嘗試在基於以太坊的區塊鏈上實現账戶抽象,例如 EIP-86 和 EIP-2938 。然而,這些方法都行不通,因為它們都需要修改共識層,而這是很難實現的。
4337 機制
ERC-4337 通過引入名為 UserOperation 的更高層僞交易對象來實現账戶抽象,這在捆綁概念方面類似於 rollups。幸運的是,這個標准讓我們可在不改變共識層的情況下構建账戶抽象。
EIP 4337 的模塊化設計將智能合約錢包的账戶抽象功能劃分為多個端口:
Bundler:
-
Bundler 就是一個 EOA。由於所有交易都必須由 EOA 發起,有了 Bundler 之後,用戶無需創建和記住 EOA 私鑰也可觸發智能合約錢包交易。
-
Bundler 的作用:驗證 UserOperation、將一組 UserOperation 對象打包成單個“捆綁事務”。將已驗證的 UserOperation 內容廣播到公共或私人內存池。
-
Bundler 還可以通過以下方式獲得經濟利益:執行 UserOperation 後,將最高優先費用與實際 gas 費之間的差額收入囊中。與普通交易的中繼器類似,Bundler 可通過對捆綁事務中的 UserOperation 進行排序來獲取 MEV。
入口點:
-
入口點是一個全局合約,所有 Bundler 都需要調用它來執行 UserOperation。入口點充當 Bundler 和智能合約錢包之間的中介。
-
用 handleOp 驗證和執行: handleOp 函數用 UserOperation 作為輸入參數,首先在鏈上驗證 UserOperation,檢查是否由指定的智能合約錢包地址籤名,並且錢包有足夠的 gas 費來補償 Bundler。如果驗證成功,則根據函數籤名執行輸入參數。
需要存入智能合約錢包的代幣向 Bundler 支付 gas 費:當 Bundler 使用 EOA 觸發 handleOp 時,會產生 gas 費。智能合約錢包可以用自己的余額支付 gas 費,或者請求 Pymaster 支付。可能失敗:gas 費不足,驗證步驟失敗;即使有足夠的 gas 費, UserOperation 執行步驟也可能會失敗,例如運行時錯誤。無論執行是否成功,入口點合約都會向 Bundler 支付 gas 費來觸發該 handleOp 功能。入口點合約為智能合約錢包提供添加或提取代幣作為抵押品的功能。
智能錢包:
智能合約錢包主合約將 UserOperation 的驗證和執行步驟分开。通過將其分離,Bundler 可以在鏈下驗證 UserOperation ,從而過濾掉惡意交易,而無需支付 gas 費。
validateOp 函數中定義了驗證步驟:第一次調用 validateOp ,Bundler 模擬鏈下驗證,驗證 UserOperation 中的籤名,並確保智能合約錢包有足夠的 gas 余額;第二次調用 validateOp 的是入口點合約,在執行 UserOperation 之前執行鏈上驗證。
Paymaster:
-
Paymaster 定義了智能合約錢包的 gas 抽象邏輯,包括使用 ERC 20 同質化代幣支付以太坊 gas 費以及無需 gas 費的交易。
-
Paymaster 是由 dApp 部署的智能合約,可以觸發 Paymaster 的 validatePaymasterOp.
Wallet Factory:
-
Wallet Factory 是創建智能合約錢包的公共合約。當 initCode 中植入了錢包工廠地址和新智能合約錢包的參數後,Bundler 將觸發相應的 Wallet Factory 創建具有指定參數的智能合約。熱門的 Wallet Factory 代碼經全面審核,因此,用 Wallet Factory 創建錢包更安全。
-
Wallet Factory 需要在入口點上質押 ETH,並持續為 UserOperations 提供良好服務,才能從 Bundler 獲取更多流量。
-
用戶可提交填充了 initCode 的 UserOperation ,請求 Bundler 創建 CA 錢包。
-
用戶可選擇帶特定定制參數的 Wallet Factory 來定制他們的 CA 錢包。
籤名聚合器:
-
籤名聚合器用於將多個交易的籤名聚合為字節,以便更快地進行驗證和執行交易。不同的智能合約錢包使用不同的籤名算法,需要先使用相同的籤名算法聚合 UserOperations 。
-
節省 gas 費:由於鏈上加密計算需要消耗大量 gas 費,聚合籤名方案(如 BLS)可以在鏈上驗證時節省 gas 費。
-
Bundler 使用多個籤名聚合器合約來生成多個聚合籤名,而不是一次驗證一個 UserOperations 。
-
Bundler 將 UserOperation 數組、聚合籤名和聚合器地址傳遞給入口點,每個 UserOperation 組會議調用其對應的籤名聚合器的 validateSignature 函數。
-
驗證通過後,Bundler 會在智能合約錢包上執行這一套 UserOperation 。
-
聚合商還需要在入口點合約上質押以太坊,並保持良好的 UserOperation 服務記錄。
AA 的優點
-
Gas 抽象:
Gas 抽象包含無 gas 費交易,並使用任意 ERC 20 代幣支付 gas 費。該邏輯可在 Paymaster 合同中或通過中繼器執行。對 AA 而言,許多智能合約錢包本身可以實現 EIP 4337 兼容的 Paymaster 合約,並在入口點合約上質押代幣,幫助用戶支付 gas 費。
-
社交恢復:
在私鑰丟失或泄露的情況下,用戶可以將新密鑰授權為合法的錢包所有者。社交登錄和社交恢復的邏輯一般在錢包的主合約中定義。可採用多種方式,如電子郵件、多重籤名、MPC 或 SWIE(用以太坊登錄)等。
-
交易批處理:
交易批處理是智能合約錢包獨有的功能,允許錢包用戶在單個鏈上交易中執行多個交易。
-
跨鏈橋接和連接橋整合:
目前,許多錢包都與第三方供應商合作,將法幣充提通道和跨鏈橋接集成到錢包中。這些充提通道和跨鏈橋接可以進一步與 gas 抽象中的支付合約(Paymaster)進行整合。
-
模塊化設計:
AA 最大的優勢之一可能是其模塊化服務,Bundler、Paymaster 和其他部分可以靈活地組合在一起。
AA 的缺陷
來自 stackup
-
手續費(也許)相對較高:
使用 ERC-4337 進行簡單轉账的成本要比使用傳統錢包(通常稱為 EOA)高得多,因為前者需要調用合約。
然而,在 Rollup 網絡上,使用 ERC-4337 進行簡單轉账可能比 EOA 更便宜 ,因為它可以將籤名聚合在一起,以減少主網上的數據量。
-
目前尚未最終確定的標准:
擴展的交易可擴展性導致攻擊向量增加、遷移到新標准時可能出現未知錯誤或安全風險、需要強大而安全的全局入口點合約來確保所有交易經適當籤署及驗證,諸如此類的挑战。
Layer 2
✅ 和 ❌ 表示是否支持原生 AA。
Optimism: ❌
Optimism 版本 1 有三個 OVM 操作碼,以實現智能合約錢包的账戶抽象。然而,出於一致性和安全考慮,版本 2 移除了這些操作碼,並且沒有關於支持账戶抽象的官方聲明。
Arbitrum: ❌
雖然目前有一些智能合約錢包在 Arbitrum 上構建,但沒有關於支持账戶抽象的官方聲明。
Starknet: ✅
Starknet 只有具有驗證和執行功能的智能合約账戶,所有账戶必須實現這些功能以驗證籤名並確保 gas 費。Starknet 禁止驗證功能調用外部合約狀態,以防止出現未執行的交易。然而,Starknet 與以太坊還是有些不同,比如缺少 UserOperations、類似 Paymaster 的交易費抽象協議,以及需要具有代幣余額的账戶來創建新合約。另外,如果已驗證的交易失敗,Starknet 的排序器就無法收取 gas 費,而以太坊卻可以。
zkSync: ✅
zkSync 不區分 EOA 和合約账戶。它的账戶模型類似於 EIP 4337 ,並包括獨立的 validateTransactiom 和 executeTransaction 函數。Paymaster 接口還包括 validateAndPayForPaymasterTransaction 和 postOp 函數。然而,二者還是有不同之處,比如在驗證過程中調用已部署的外部合約和外部存儲的能力。Paymaster 在交易驗證期間也可以調用外部存儲。
AA 基礎設施:
目前,一些優秀的項目如 Stackup、Etherspot、Candide、Infinistism、 Pimlico 都在嘗試構建基礎設施。
Bundler 服務:
構建者:
-
Stackup 的 Golang 實現
-
Candide 的 Python 實現
-
Infinitism 的 TypeScript 實現
-
Etherspot 的 Skandha — TypeScript 實現
一些共識:
-
公益服務
絕大多數 Bundler 的开源性質使其具有非排他性和非競爭性。任何 RPC 端點都可以通過復制开源代碼來運行 Bundler。
-
難以變現
即使運行 Bundler 的 RPC 端點通過 API 密鑰收取服務使用費,Bundler 服務也比其他基礎設施(如支付合約 Paymaster)更難變現,因為 Paymaster 可以通過與第三方充提供應商或 DeFi 協議聚合器提供商合作,輕松賺取費用差額。
-
重要的基礎設施
驗證和執行 UserOperation 需要盡可能多的 Bundler,以便更好地實現去中心化。因為目前第三方 Bundler 服務提供商只有 Stackup 和 eth-infinitism,我們確實需要更多這樣的 Bundler 服務提供商。
-
機制
Bundler 自己傳遞消息並傳播用戶動作,類似於共享內存池,無需就具體事項達成一致。Bundler 有過濾垃圾信息的重要功能,並且出於自身的經濟原因,Bundler 希望盡可能地進行監控,以確保內存池的安全。
Bundler 服務的區別:
-
Bundler 服務可以是通用基礎設施,也可以專門為錢包而構建。錢包項目可能會優先構建最基本的 Bundler,而第三方提供商則必須為各種場景構建模塊化的 Bundler。
-
和以太坊節點類似,Bundler 服務採用不同的編程語言實現,以防止單點故障,並造福生態系統。
-
Bundler 服務支持私有內存池和公共內存池,並為私有內存池提供定制選項。
Paymaster 服務
-
相對於 Bundler 服務來說,Paymaster 服務比較中心化,合約是开源的,但後端是封閉的。
-
Paymaster 服務有盈利模式,可以通過與法幣存款、兌換、橋接、自動支付、會話、贊助費用和其他功能的結合來改善 dApp 的可用性。
AA 錢包和 SDK:
產品評估
-
密鑰管理系統:
-
多重籤名邏輯(安全):只能實現 2/3 和 3/5 等多重籤名邏輯;
-
簡單權限管理(順序):可以為密鑰設置權重,然後為操作账戶設置閾值。
-
基於角色的權限管理(Unipass):可以為密鑰設置權重和角色。不同的角色可以執行不同的操作。每個角色也有相應的閾值。如果超過此閾值,可以執行相應角色的權限。
-
社交恢復方法
-
gas 費贊助:自建中繼器,或設置 Bundler + Paymaster
-
多鏈账戶同步
-
多鏈地址統一
-
支持的區塊鏈
業務
-
業務模式:To b/ To B+To C / ToC
-
與 dApps 合作:與各鏈上的穩定幣或 DeFi 等巨頭基礎設施型 dApp 合作
-
實用性:整合 NFT 市場、launchpad 等。
-
外部支持:來自以太坊基金會或其他知名風投機構
原版英文報告 於 2023 年 5 月 首發。更多中文投研內容,請關注公衆號【SevenXVentures】。
本文為 SevenX 研究團隊原創,僅供交流學習,不構成任何投資參考。如需引用,請注明來源。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。