僅供教育參考,不構成投資建議;投資可能產生損失。
直接答案
帳戶抽象化讓帳戶的授權與執行規則可程式化。在以太坊上,ERC-4337 無須變更共識交易類型即可達成此目的:錢包透過專用 RPC 基礎設施傳送 UserOperation,bundler 將一項或多項操作封裝至送往特定版本 EntryPoint 的一般交易,智慧帳戶再驗證並執行自己的操作。復原、通行密鑰、工作階段金鑰、支出限額、批次呼叫與手續費贊助,都是建立在此流程上的帳戶或服務功能,並非 ERC-4337 自動提供的保證。
這不同於 ERC-1271 與 EIP-7702:前者規範合約如何驗證訊息簽章,後者允許外部擁有帳戶(EOA)將執行委派給程式碼。這些機制可以協同運作,但不共用同一介面、nonce、部署或安全模型。帳戶抽象化不會消除憑證、Gas 成本或合約風險,也不會免除核實特定鏈與特定實作的必要性。
ERC-4337 七步流程
- 鎖定環境:確認
chainId、智慧帳戶實作與升級控制、工廠、EntryPoint 版本、位址及已部署程式碼雜湊、bundler 支援情形,以及該鏈是否啟用 EIP-7702。在某一 EntryPoint 版本或鏈上有效的位址並不是通用常數。 - 建立與版本相符的操作。目前邏輯欄位包括
sender、nonce、factory、factoryData、callData、callGasLimit、verificationGasLimit、preVerificationGas、maxFeePerGas、maxPriorityFeePerGas、選用的 Paymaster 欄位及signature。EntryPoint 在鏈上接收封裝表示;目標呼叫編碼在帳戶定義的callData內,而不是通用目標欄位中。 - 將授權繫結至正確網域。
userOpHash涵蓋簽章以外的操作內容,並繫結 EntryPoint 與鏈,防止跨網域重播。帳戶的validateUserOp依其擁有者、多重簽章、通行密鑰、工作階段或其他政策檢查。ERC-1271 的isValidSignature是獨立的合約簽章介面;選用的聚合器可驗證聚合簽章。EIP-7702 授權元組與 UserOperation 分開提供。 - 證明費用支付能力。帳戶可透過其 EntryPoint 餘額預付,或由 Paymaster 以自身預存款為資金來源,有條件地承擔付款責任。Paymaster 可贊助使用者、收取代幣、執行允許清單或配額,並執行
postOp;ERC-4337 並未規定這些商業規則。質押與預存款不同:質押支援驗證及信譽規則,預存款用於支付 Gas。 - 透過 ERC-7769 RPC 估算並提交。bundler 會在收到操作時、選入前及建立操作包時再次驗證。ERC-7562 限制驗證階段的操作碼與儲存存取,並以信譽控制抵禦阻斷服務行為。此模擬檢查准入與費用安全;若要預測業務執行結果,仍須另做完整呼叫模擬。
- bundler 呼叫
handleOps。EntryPoint 在執行前完成獲准部署、帳戶及 Paymaster 驗證、預付檢查與選用聚合。驗證失敗會阻止該操作執行;但通過准入後,目標呼叫仍可能回復並耗用 Gas。同一帳戶批次內的呼叫是原子回復或允許部分成功,取決於該帳戶的執行程式碼。 - 核對收據與狀態。比對 UserOperation 收據、底層操作包交易、EntryPoint 事件、帳戶部署、目標事件、實際 Gas、代幣收費、退款及最終餘額。之後持續監控 nonce 通道、擁有者與復原設定變更、工作階段金鑰撤銷、模組、實作升級、備援 bundler 與 Paymaster、鏈重組,以及遷移或 EIP-7702 重新委派。
四個算例
- 簡化 Gas 上限。 一項操作為執行預留
120,000Gas、為帳戶驗證預留90,000、為 Paymaster 驗證預留45,000、為預驗證預留40,000,並為 Paymaster 操作後處理預留30,000:120,000 + 90,000 + 45,000 + 40,000 + 30,000 = 325,000 gas。按maxFeePerGas = 30 gwei計算,簡化費用上限為325,000 × 30 gwei = 0.009750 ETH。若實際可收費使用量為210,000 gas,實際 Gas 價格為22 gwei,費用就是0.004620 ETH。EntryPoint 版本規則、未用 Gas 罰款、L1 資料費與 Rollup 定價可能增加金額或改變其分類,因此這是預算帳冊,而非通用預付公式。 - 平行 nonce 通道。 若使用
192-bit key與64-bit sequence,鍵7及序號42編碼為nonce = (7 << 64) | 42 = 129127208515966861354 = 0x7000000000000002a。成功納入後,該通道預期下一個序號為43;重播42會失敗。不同的鍵可以有獨立序號,但仍受帳戶邏輯及 bundler 規則約束。 - Paymaster 容量。 某 Paymaster 有
0.50 ETH預存款,每項接受的操作需要最高0.03 ETH保證額。它可涵蓋floor(0.50 / 0.03) = 16項此類操作,預留0.48 ETH,剩餘0.02 ETH。第十七項操作需要增加預存款或降低保證額。Paymaster 質押無法取代這筆費用預存款。 - 准入後執行回復。 某操作最多預留
0.0060 ETH;驗證成功,但目標執行在耗用180,000 gas × 25 gwei = 0.0045 ETH後回復。目標狀態變更會撤銷,帳戶或 Paymaster 仍須負擔0.0045 ETH;未使用的0.0015 ETH依適用的結算與罰款規則處理。因此,bundler 模擬成功不代表業務執行、納入或最終性獲得保證。
風險與控制
- 錯誤的鏈、EntryPoint 位址、版本或已部署程式碼雜湊,可能使操作失效或被錯誤路由。
- 簽章若未繫結鏈或 EntryPoint 網域,可能遭到重播。
- 工廠、反事實位址、初始化資料或部署鹽值可能被替換或誤算。
- EIP-7702 委派可能把 EOA 指向惡意或有漏洞的程式碼,並賦予其廣泛帳戶權限。
- 初始化搶先交易或重複初始化可能奪取或破壞帳戶。
- 代理升級或 EIP-7702 重新委派可能與既有儲存配置衝突。
- 升級管理員或模組管理員一旦遭入侵,可能替換帳戶行為。
- 擁有者、多重簽章、通行密鑰或 ERC-1271 驗證缺陷可能授權竊取或鎖死資金。
- 復原門檻、延遲、監護人與取消路徑可能失效或遭控制。
- 工作階段金鑰的目標、代幣、金額、期限或函式權限可能超出預期。
- nonce 通道可能衝突、斷檔、重播或阻塞相依操作。
- 聚合器停機或簽章聚合缺陷可能使原本有效的操作無法執行。
- bundler 可能審查、離線、採用不同本機政策或拒絕替代記憶體池規則。
- 公開的 UserOperation 流可能暴露意圖,招致搶先交易、關聯分析與 MEV。
- 驗證通過後,狀態變化仍可能使操作在建立操作包時失效。
- Paymaster 政策可能拒絕服務,預存款可能耗盡,
postOp也可能失敗。 - 以代幣計價的 Gas 費用可能包含匯率、額度授權、價差及服務加價風險。
- Gas 低估可能導致回復;上限過高可能增加預留或罰款曝險。
- 帳戶批次語意可能允許部分成功,而使用者原本預期原子回復。
- 目標協定缺陷、惡意前端、鏈重組與較弱最終性仍在帳戶抽象化控制範圍之外。
常見迷思
- 「帳戶抽象化消除了私鑰。」它改變的是可程式化憑證政策,操作仍須由某種憑證授權。
- 「有 Paymaster,Gas 就免費。」原生 Gas 仍會支付,最終由使用者、贊助者或服務商負擔。
- 「bundler 模擬保證成功。」准入模擬無法保證執行、納入或最終性。
- 「ERC-1271、ERC-4337 與 EIP-7702 是同一個介面。」它們分別解決簽章、交易流程與委派問題。
- 「所有鏈、錢包與 EntryPoint 都相容且更安全。」必須分別核實支援情形、版本、部署、程式碼、模組與控制措施。