SevenX Ventures: 一文讀懂帳戶抽象 - ERC4337 如何帶來以太坊帳戶的進化?
作者:Rui
正如許多人所說,帳戶抽象 (AA) 技術,尤其是 ERC-4337,有望徹底改變自我托管錢包的用戶體驗,並使其能夠擴展以供大規模採用。然而,2023年5月越來越近了,我們必須認識到該標準還處於早期階段,機遇與風險並存。
*請注意,隨著升級的快速發展,本文內容可能很快就會過時,並且本文僅基於我個人觀點。
TL;DR
ERC4337:
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 錢包更簡單,並用於管理個人加密貨幣持有量,但合約錢包可以有更複雜的規則,並可用於特定目的。
痛點
EOA錢包用戶需要注意保護私鑰。在私鑰上所犯下的任何錯誤或疏忽都可能招致資金損失,因此EOA錢包的使用成本比較高,風險也高。即便是經驗豐富的加密貨幣用戶也可能會因為一次錯誤或粗心的舉動而失去對其帳戶的控制。操作複雜、無法略過gas費或無法進行gas費代付以及錢包功能有限,這些都是困擾用戶的問題。
智能合約錢包為部分問題提供了解決方案,但以太坊目前要求將所有操作打包在來自受 ECDSA保護的EOA的交易中。這會產生額外的交易費,還要多消耗21000 gas費,隨之而來的還有潛在的中心化風險和複雜的操作:用戶需要管理兩個帳戶並在單獨的EOA中存入ETH 來支付gas費,或者依靠中心化中繼系統支付。
這些痛點催生了AA新標準------ERC-4337。
ERC4337提案
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抽象邏輯,包括使用ERC20同質化代幣支付以太坊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費交易,並使用任意ERC20代幣支付gas費。該邏輯可在Paymaster合約中或通過中繼器執行。對AA而言,許多智能合約錢包本身可以實現EIP 4337兼容的Paymaster合約,並在入口點合約上質押代幣,幫助用戶支付gas費。
- 社交恢復:
在私鑰丟失或泄露的情況下,用戶可以將新密鑰授權為合法的錢包所有者。社交登錄和社交恢復的邏輯一般在錢包的主合約中定義。可採用多種方式,如電子郵件、多重簽名、MPC或SWIE(用以太坊登錄)等。
- 交易批處理:
交易批處理是智能合約錢包獨有的功能,允許錢包用戶在單個鏈上交易中執行多個交易。
- 跨鏈橋接和連接橋整合:
目前,許多錢包都與第三方供應商合作,將法幣充提通道和跨鏈橋接集成到錢包中。這些充提通道和跨鏈橋接可以進一步與gas抽象中的支付合約(Paymaster)進行整合。
- 模塊化設計:
AA最大的優勢之一可能是其模塊化服務,Bundler、Paymaster和其他部分可以靈活地組合在一起。
AA的缺陷
- 手續費(也許)相對較高:
使用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等。
- 外部支持:來自以太坊基金會或其他知名風投機構