﻿---
title: "帳戶抽象化"
description: "透過 ERC-4337 智慧帳戶、EntryPoint 版本、UserOperation、bundler、Paymaster、nonce 通道、驗證、執行、EIP-7702 委派、費用與復原風險，理解以太坊帳戶抽象化。"
image: "https://wiki.fcontext.com/og.png"
---

> Documentation Index
> Fetch the complete documentation index at: https://wiki.fcontext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 帳戶抽象化

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

<a id="answer"></a>

## 直接答案

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

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

<a id="mechanism"></a>

## ERC-4337 七步流程

1. 鎖定環境：確認 `chainId`、智慧帳戶實作與升級控制、工廠、EntryPoint 版本、位址及已部署程式碼雜湊、bundler 支援情形，以及該鏈是否啟用 EIP-7702。在某一 EntryPoint 版本或鏈上有效的位址並不是通用常數。
2. 建立與版本相符的操作。目前邏輯欄位包括 `sender`、`nonce`、`factory`、`factoryData`、`callData`、`callGasLimit`、`verificationGasLimit`、`preVerificationGas`、`maxFeePerGas`、`maxPriorityFeePerGas`、選用的 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 重新委派。

<a id="example"></a>

## 四個算例

- **簡化 Gas 上限。** 一項操作為執行預留 `120,000` Gas、為帳戶驗證預留 `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 模擬成功不代表業務執行、納入或最終性獲得保證。

<a id="risks"></a>

## 風險與控制

- 錯誤的鏈、EntryPoint 位址、版本或已部署程式碼雜湊，可能使操作失效或被錯誤路由。
- 簽章若未繫結鏈或 EntryPoint 網域，可能遭到重播。
- 工廠、反事實位址、初始化資料或部署鹽值可能被替換或誤算。
- EIP-7702 委派可能把 EOA 指向惡意或有漏洞的程式碼，並賦予其廣泛帳戶權限。
- 初始化搶先交易或重複初始化可能奪取或破壞帳戶。
- 代理升級或 EIP-7702 重新委派可能與既有儲存配置衝突。
- 升級管理員或模組管理員一旦遭入侵，可能替換帳戶行為。
- 擁有者、多重簽章、通行密鑰或 ERC-1271 驗證缺陷可能授權竊取或鎖死資金。
- 復原門檻、延遲、監護人與取消路徑可能失效或遭控制。
- 工作階段金鑰的目標、代幣、金額、期限或函式權限可能超出預期。
- nonce 通道可能衝突、斷檔、重播或阻塞相依操作。
- 聚合器停機或簽章聚合缺陷可能使原本有效的操作無法執行。
- bundler 可能審查、離線、採用不同本機政策或拒絕替代記憶體池規則。
- 公開的 UserOperation 流可能暴露意圖，招致搶先交易、關聯分析與 MEV。
- 驗證通過後，狀態變化仍可能使操作在建立操作包時失效。
- Paymaster 政策可能拒絕服務，預存款可能耗盡，`postOp` 也可能失敗。
- 以代幣計價的 Gas 費用可能包含匯率、額度授權、價差及服務加價風險。
- Gas 低估可能導致回復；上限過高可能增加預留或罰款曝險。
- 帳戶批次語意可能允許部分成功，而使用者原本預期原子回復。
- 目標協定缺陷、惡意前端、鏈重組與較弱最終性仍在帳戶抽象化控制範圍之外。

<a id="misconceptions"></a>

## 常見迷思

- 「帳戶抽象化消除了私鑰。」它改變的是可程式化憑證政策，操作仍須由某種憑證授權。
- 「有 Paymaster，Gas 就免費。」原生 Gas 仍會支付，最終由使用者、贊助者或服務商負擔。
- 「bundler 模擬保證成功。」准入模擬無法保證執行、納入或最終性。
- 「ERC-1271、ERC-4337 與 EIP-7702 是同一個介面。」它們分別解決簽章、交易流程與委派問題。
- 「所有鏈、錢包與 EntryPoint 都相容且更安全。」必須分別核實支援情形、版本、部署、程式碼、模組與控制措施。

<a id="related"></a>

## 相關主題

- [智慧帳戶擁有者與復原風險](/zh-tw/crypto/smart-account-owner-recovery-risk/)
- [工作階段金鑰錢包](/zh-tw/crypto/session-key-wallet/)
- [交易模擬](/zh-tw/crypto/transaction-simulation/)

<a id="sources"></a>

## 資料來源

- [ERC-4337：使用替代記憶體池實現帳戶抽象化](https://eips.ethereum.org/EIPS/eip-4337)
- [ERC-7562：帳戶抽象化驗證範圍規則](https://eips.ethereum.org/EIPS/eip-7562)
- [ERC-7769：ERC-4337 JSON-RPC API](https://eips.ethereum.org/EIPS/eip-7769)
- [ERC-1271：合約標準簽章驗證方法](https://eips.ethereum.org/EIPS/eip-1271)
- [EIP-7702：為 EOA 設定程式碼](https://eips.ethereum.org/EIPS/eip-7702)
- [EntryPoint 合約](https://docs.erc4337.io/smart-accounts/entrypoint-explainer.html)
- [模擬要求](https://docs.erc4337.io/bundlers/simulation-requirements.html)
- [eth-infinitism/account-abstraction 發布版本](https://github.com/eth-infinitism/account-abstraction/releases)

Source: https://wiki.fcontext.com/zh-tw/crypto/account-abstraction/index.mdx
