跳到正文

帳戶抽象化

透過 ERC-4337 智慧帳戶、EntryPoint 版本、UserOperation、bundler、Paymaster、nonce 通道、驗證、執行、EIP-7702 委派、費用與復原風險,理解以太坊帳戶抽象化。

更新於

僅供教育參考,不構成投資建議;投資可能產生損失。

直接答案

帳戶抽象化讓帳戶的授權與執行規則可程式化。在以太坊上,ERC-4337 無須變更共識交易類型即可達成此目的:錢包透過專用 RPC 基礎設施傳送 UserOperation,bundler 將一項或多項操作封裝至送往特定版本 EntryPoint 的一般交易,智慧帳戶再驗證並執行自己的操作。復原、通行密鑰、工作階段金鑰、支出限額、批次呼叫與手續費贊助,都是建立在此流程上的帳戶或服務功能,並非 ERC-4337 自動提供的保證。

這不同於 ERC-1271 與 EIP-7702:前者規範合約如何驗證訊息簽章,後者允許外部擁有帳戶(EOA)將執行委派給程式碼。這些機制可以協同運作,但不共用同一介面、nonce、部署或安全模型。帳戶抽象化不會消除憑證、Gas 成本或合約風險,也不會免除核實特定鏈與特定實作的必要性。

ERC-4337 七步流程

  1. 鎖定環境:確認 chainId、智慧帳戶實作與升級控制、工廠、EntryPoint 版本、位址及已部署程式碼雜湊、bundler 支援情形,以及該鏈是否啟用 EIP-7702。在某一 EntryPoint 版本或鏈上有效的位址並不是通用常數。
  2. 建立與版本相符的操作。目前邏輯欄位包括 sendernoncefactoryfactoryDatacallDatacallGasLimitverificationGasLimitpreVerificationGasmaxFeePerGasmaxPriorityFeePerGas、選用的 Paymaster 欄位及 signature。EntryPoint 在鏈上接收封裝表示;目標呼叫編碼在帳戶定義的 callData 內,而不是通用目標欄位中。
  3. 將授權繫結至正確網域。userOpHash 涵蓋簽章以外的操作內容,並繫結 EntryPoint 與鏈,防止跨網域重播。帳戶的 validateUserOp 依其擁有者、多重簽章、通行密鑰、工作階段或其他政策檢查。ERC-1271 的 isValidSignature 是獨立的合約簽章介面;選用的聚合器可驗證聚合簽章。EIP-7702 授權元組與 UserOperation 分開提供。
  4. 證明費用支付能力。帳戶可透過其 EntryPoint 餘額預付,或由 Paymaster 以自身預存款為資金來源,有條件地承擔付款責任。Paymaster 可贊助使用者、收取代幣、執行允許清單或配額,並執行 postOp;ERC-4337 並未規定這些商業規則。質押與預存款不同:質押支援驗證及信譽規則,預存款用於支付 Gas。
  5. 透過 ERC-7769 RPC 估算並提交。bundler 會在收到操作時、選入前及建立操作包時再次驗證。ERC-7562 限制驗證階段的操作碼與儲存存取,並以信譽控制抵禦阻斷服務行為。此模擬檢查准入與費用安全;若要預測業務執行結果,仍須另做完整呼叫模擬。
  6. bundler 呼叫 handleOps。EntryPoint 在執行前完成獲准部署、帳戶及 Paymaster 驗證、預付檢查與選用聚合。驗證失敗會阻止該操作執行;但通過准入後,目標呼叫仍可能回復並耗用 Gas。同一帳戶批次內的呼叫是原子回復或允許部分成功,取決於該帳戶的執行程式碼。
  7. 核對收據與狀態。比對 UserOperation 收據、底層操作包交易、EntryPoint 事件、帳戶部署、目標事件、實際 Gas、代幣收費、退款及最終餘額。之後持續監控 nonce 通道、擁有者與復原設定變更、工作階段金鑰撤銷、模組、實作升級、備援 bundler 與 Paymaster、鏈重組,以及遷移或 EIP-7702 重新委派。

四個算例

  • 簡化 Gas 上限。 一項操作為執行預留 120,000 Gas、為帳戶驗證預留 90,000、為 Paymaster 驗證預留 45,000、為預驗證預留 40,000,並為 Paymaster 操作後處理預留 30,000120,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 key64-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 都相容且更安全。」必須分別核實支援情形、版本、部署、程式碼、模組與控制措施。

相關主題

資料來源

導覽

搜尋知識庫...