帳戶抽象技術,尤其是 ERC4337,有望徹底改變自我託管錢包的用戶體驗,並使其能夠擴展以供大規模採用。
作者:Rui
封面😛 hoto by Shubham Dhage on Unsplash
本文為 SevenX 研究團隊原創,僅供交流學習,不構成任何投資參考。 如需引用,請註明來源。
原版英文報告於 2023 年 5 月發表於 SevenX 的 Mirror 平臺。
正如許多人所說,帳戶抽象(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 新標準——ERC4337 。
ERC4337 提案
CA 的問題
如今,這些事情都可以用合約錢包解決,但乙太坊本身要求將所有內容打包在源自 ECDSA 保護的 EOA 的交易中,這將導致:
- 額外交易費用:每個使用者操作都必須由 EOA 發起,就需要額外消耗 21000 gas 費。
- 複雜性和中心化:使用者需要在單獨的 EOA 中存入 ETH 來支付 gas 費,並管理兩個帳戶中的餘額,或者依靠中繼系統支付,這些中繼系統通常是中心化的。
多年來,人們多次嘗試在基於乙太坊的區塊鏈上實現帳戶抽象,例如 EIP-86 和 EIP-2938 。 然而,這些方法都行不通,因為它們都需要修改共識層,而這是很難實現的。
4337 機制
ERC4337 通過引入名為 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 的缺陷
手續費(也許)相對較高
使用 ERC-4337 進行簡單轉帳的成本要比使用傳統錢包(通常稱為 EOA)高得多,因為前者需要調用合約。 然而,在 Rollup 網路上,使用 ERC-4337 進行簡單轉帳可能比 EOA 更便宜,因為它可以將簽名聚合在一起,以減少主網上的數據量。
目前尚未最終確定的標準
擴展的交易可擴展性導致攻擊向量增加、遷移到新標準時可能出現未知錯誤或安全風險、需要強大而安全的全域入口點合約來確保所有交易經適當簽署及驗證,諸如此類的挑戰。
Layer2
√ 和 × 表示是否支援原生 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 都在嘗試構建基礎設施。
數據市場
構建者
- 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 等
外部支援
來自乙太坊基金會或其他知名風投機構
免責聲明:作為區塊鏈資訊平臺,本站所發佈文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。 文章內的資訊僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。