跳至內容
0%

什麼是帳戶抽象(account abstraction)?ERC-4337 詳解

Alchemy team headshot

作者 Alchemy

發布於 2026年10月19日閱讀時間 3 分鐘

帳戶抽象(account abstraction)讓智慧合約充當你的帳戶,而不再依賴單一私鑰。帳戶可以為簽章、支付 gas 和執行呼叫設定自己的規則。ERC-4337 是在以太坊和其他 EVM 鏈上無需改動協議即可實現這一點的標準。

如今大多數以太坊使用者使用外部擁有帳戶(EOA)。EOA 由一個私鑰控制,只能用一種方式簽章,並且必須先有 ETH 才能做任何事。丟了私鑰,也就丟了帳戶。帳戶抽象消除了這些限制。有兩個標準可以實現它:ERC-4337,用於擁有獨立位址的智慧帳戶;EIP-7702,用於就地升級現有的 EOA。兩者可以配合使用。

什麼是帳戶抽象?

帳戶抽象意味著帳戶的規則存在於程式碼中,而不是協議中。標準 EOA 遵循固定規則:一個 ECDSA 簽章、一個 nonce,以及由發送者用 ETH 支付的 gas。有了帳戶抽象,智慧帳戶(ERC-4337 規範稱之為 smart contract account)可以定義自己的驗證邏輯。

ERC-4337 規範將這一思路描述為一種模型:「允許每個帳戶提供自己的驗證邏輯,並以智慧合約程式碼的形式執行,而協議只提供最低限度的約束。」

這一項改變帶來了 EOA 無法提供的功能:

  • 贊助 gas:由應用程式支付費用,新使用者無需持有 ETH。
  • 用代幣支付 gas:使用者可以用 USDC 等 ERC-20 支付。
  • 批次處理:多個呼叫作為一個原子操作一起執行。
  • session key:為應用程式或代理授予範圍有限且會過期的權限。
  • 通行密鑰(passkey)等多種簽章方式:使用者無需助記詞。
  • 自訂恢復:由帳戶自身的規則決定如何找回存取權限。

什麼是 ERC-4337?

ERC-4337 是以太坊上無需變更共識層的帳戶抽象標準。Vitalik Buterin 與共同作者於 2021 年提出該標準,EntryPoint 合約於 2023 年 3 月 1 日在以太坊主網上線。

先前的提案都會改動以太坊的核心協議,ERC-4337 則避免了這一點。它新增了名為 UserOperation 的偽交易、專門存放這些操作的獨立 mempool,以及名為 EntryPoint 的單例合約。由於一切都建立在共識層之上,它可以在任何部署了 EntryPoint 的 EVM 鏈上運行。

規範的目標之一是讓使用者完全不必使用 EOA。智慧帳戶可以用通行密鑰或任何其他方案簽章,只有 bundler 需要一個 EOA 來提交交易。

ERC-4337 如何運作?

一筆 ERC-4337 交易會經歷五個步驟:

  1. 使用者簽署一個 UserOperation。什麼算有效簽章由智慧帳戶決定。
  2. 應用程式透過 eth_sendUserOperation 將其傳送給 bundler。
  3. bundler 對其進行模擬,與其他 UserOperation 打包,並送出一筆呼叫 EntryPoint 上 handleOps 的交易。
  4. EntryPoint 呼叫智慧帳戶的 validateUserOp。如果涉及 paymaster,還會呼叫 validatePaymasterUserOp。它會檢查是否有人能夠承擔 gas。
  5. EntryPoint 呼叫智慧帳戶執行所請求的操作,然後向 bundler 償還費用。
ERC-4337 帳戶抽象流程圖:UserOperation、bundler、EntryPoint 和 paymaster

什麼是 UserOperation?

UserOperation 是描述使用者想要做什麼的偽交易物件。它包含發送者(智慧帳戶)、nonce、呼叫資料、gas 上限和費用欄位、簽章,以及可選的 paymaster 欄位。與一般交易不同,簽章由帳戶自己的程式碼驗證。它可以包含多條指令。完整的欄位列表請閱讀我們的 UserOperation 指南。

bundler 是做什麼的?

bundler 是一種鏈下服務,它監看 UserOperation mempool,模擬每個操作,並將有效的操作打包成一筆鏈上交易。它先墊付 gas,再由 EntryPoint 償還。在 ERC-4337 中,bundler 是唯一必須持有 EOA 的角色。了解它們如何運作和競爭,請參閱什麼是 bundler。

EntryPoint 合約是做什麼的?

EntryPoint 是所有帳戶和 bundler 都信任的單例智慧合約。它分兩個階段運行每個 UserOperation。在驗證階段,它檢查簽章並確認資金存在。在執行階段,它運行呼叫並補償 bundler。一個共用且經過稽核的合約,讓所有人遵循相同的規則。

paymaster 是做什麼的?

paymaster 是為 UserOperation 支付 gas 的可選合約。它讓應用程式可以贊助費用,或讓使用者用 ERC-20 代幣代替 ETH 支付。EntryPoint 會在執行前請求 paymaster 核准該操作。關於類型和安全上的取捨,請閱讀什麼是 paymaster。

aggregator 是做什麼的?

aggregator 是可選合約,可一次性驗證針對多個 UserOperation 的一個組合簽章。由於一個打包只帶一個簽章而不是多個,它可以節省 calldata,這對 rollup 幫助最大。aggregator 是一種最佳化手段,大多數帳戶並不需要。

應該使用哪個 EntryPoint 版本?

EntryPoint 有多個已發布的版本。每個版本都是位於各自位址的獨立合約,智慧帳戶是針對某一個版本建構的。

  • v0.6:0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789
  • v0.7:0x0000000071727De22E5E9d8BAf0edAc6f37da032
  • v0.8:0x4337084D9E255Ff0702461CF8895CE9E3b5Ff108,新增原生 EIP-7702 支援

eth-infinitism 發布說明中還列出了 v0.9,它新增了 paymasterSignature,使 paymaster 可以平行簽章。我們託管的 Bundler API 支援 v0.6、v0.7 和 v0.8。請在某條鏈上呼叫 eth_supportedEntryPoints 查看確切清單。新帳戶請基於 v0.7 或 v0.8 建構,因為 Bundler FAQ 表示 v0.6 的支援計畫棄用。

什麼是 EIP-7702?

EIP-7702 是一項協議變更,讓 EOA 可以為自己設定程式碼。它隨2025 年 5 月 7 日的 Pectra 升級在以太坊主網上線。

它新增了一種交易類型 0x04,攜帶一組已簽署的授權。每個授權會將一個委派標識(0xef0100 後接一個合約位址)寫入帳戶的程式碼。此後,對該 EOA 的呼叫會運行該位址上的程式碼。

委派是持久的。它會一直保留,直到帳戶簽署新的授權,而委派給零位址即可清除。EOA 保留自己的位址、餘額和密鑰。請只委派給經過稽核的合約程式碼,因為這些程式碼會使用帳戶自己的餘額和儲存空間來運行。更多詳情,請閱讀我們的 EIP-7702 概述。

ERC-4337 與 EIP-7702 有什麼差別?

ERC-4337 透過 mempool、bundler 和 paymaster,讓智慧帳戶運行在各自的位址上。EIP-7702 則就地升級現有位址。兩者並非競爭關係。EIP-7702 改變帳戶可以成為什麼,ERC-4337 則提供傳送和贊助其操作的基礎設施。

功能
一般 EOA
ERC-4337 智慧帳戶
EIP-7702 委派的 EOA
位址
由一個密鑰衍生
新的合約位址
保留現有位址
帳戶程式碼
無
smart contract account
委派給合約程式碼
協議變更
不適用
無
有,2025 年 5 月的 Pectra
傳送方式
一般交易
透過 bundler 傳送的 UserOperation
類型 0x04 交易,或帶有 eip7702Auth 的 UserOperation
簽章規則
一個 ECDSA 密鑰
帳戶定義的任意邏輯
由被委派的合約設定,EOA 密鑰仍然有效
贊助 gas
否
是,透過 paymaster 或贊助政策
是,透過 relayer、bundler 或 paymaster
是否需要 EOA 密鑰
是
否
是

這兩個標準直接相連。ERC-4337 規範支援 EIP-7702 授權。UserOperation 可以包含一個 eip7702Auth 欄位,bundler 會把該授權加入它所送出交易的 authorizationList。EntryPoint v0.8 還會把委派納入 UserOperation 雜湊。因此,被委派的 EOA 可以像其他智慧帳戶一樣使用 bundler 和 paymaster。

如果你的使用者已經有想要保留的 EOA 位址、餘額和歷史記錄,請選擇 EIP-7702。如果帳戶不應依賴單一的 ECDSA 密鑰(例如僅使用通行密鑰的帳戶),或者該鏈尚未啟用 EIP-7702,請選擇獨立的 ERC-4337 智慧帳戶。

什麼是模組化智慧帳戶?

模組化智慧帳戶將功能拆分為模組,而不是一個固定的合約。驗證模組決定誰可以簽章,例如通行密鑰或 session key。執行模組新增操作。hook 新增檢查,例如支出限額。你可以在不改變帳戶位址的情況下新增或移除模組。

有兩個 ERC 標準定義了模組如何接入:ERC-6900「Modular Smart Contract Accounts」,以及 ERC-7579「Minimal Modular Smart Accounts」。兩者都建立在 ERC-4337 之上。我們的 Modular Account v2 遵循 ERC-6900。

你可以用帳戶抽象建構什麼?

帳戶抽象消除了讓鏈上應用程式對新使用者不友善的那些步驟。

  • 免 gas 引導。新使用者無需 ETH 即可開始,你的應用程式贊助其最初的幾筆交易。
  • 穩定幣 gas。使用者用自己已持有的代幣支付費用。
  • 一鍵流程。授權和兌換作為一個原子批次運行,因此任一失敗都會回滾兩者。
  • 遊戲與代理。session key 讓遊戲或 AI 代理在你設定的限額內行動,而無法存取整個帳戶。
  • 通行密鑰帳戶。使用者用裝置的通行密鑰登入,無需接觸助記詞。
  • 恢復。帳戶可以新增守護者或其他規則來找回存取權限。

Alchemy 如何支援帳戶抽象?

我們為 ERC-4337 和 EIP-7702 都營運著基礎設施,因此你可以為新的智慧帳戶和現有的 EOA 發布同一套流程。

Bundler

我們的 Bundler 是託管的 ERC-4337 Bundler API,建構於我們開源的 Rust bundler Rundler 之上。它支援 EntryPoint v0.6、v0.7 和 v0.8。請在各鏈功能支援中查看你所需的鏈。

Gas Manager

Gas Manager 讓你的應用程式按照你在政策中設定的規則為使用者支付 gas。我們建議透過 Bundler Sponsored Operations 使用 Gas Sponsorship:在請求標頭中傳入政策 ID,無需新增 paymaster 欄位。當你需要用 ERC-20 支付 gas,或流程中需要 paymaster 時,請使用 Onchain Paymaster。有關方案和限額,請參閱 Gas Manager FAQ。

Modular Account v2

Modular Account v2 是我們推薦的智慧帳戶。它遵循 ERC-6900,經過 ChainLight 和 Quantstamp 的稽核,並透過模組支援 session key、通行密鑰、允許清單、支出限額和到期時間。

Wallet APIs

Wallet APIs 是位於其上的交易層。它們從智慧帳戶傳送呼叫,並提供贊助、批次處理、重試和 session key。你可以自帶簽署器,例如 Privy、Turnkey 或任何相容 viem 的簽署器。

EIP-7702 支援

Wallet APIs 也支援 EIP-7702。新的 EIP-7702 帳戶預設委派給 Modular Account v2,因此 EOA 無需新位址,就能獲得同樣的批次處理、贊助和 session key。

準備好開始建構了嗎?從 Wallet APIs 文件入手,用 Gas Manager 贊助你的第一筆交易,並透過我們的 Bundler 傳送 UserOperation。

早期的提案如何催生了 ERC-4337?

早在 ERC-4337 之前,開發者就嘗試過實現帳戶抽象。

  • 2020 年的 EIP-2938 提出在共識層實現帳戶抽象。該提案後來已被撤回。
  • 同樣在 2020 年的 EIP-3074 新增了 AUTH 和 AUTHCALL 操作碼,使 EOA 可以把控制權委派給合約。EIP-7702 取代了它。
  • 2021 年的 ERC-4337 走了另一條路。它把所有改動都放在共識層之上,因此無需硬分叉即可上線。

隨後,EIP-7702 為 EOA 本身帶來了程式碼,ERC-4337 規範現在也支援它。如需並排比較,請參閱 EIP-3074 vs EIP-7702 vs ERC-4337。

如何開始使用帳戶抽象?

  1. 選擇帳戶類型。對新使用者使用 Modular Account v2 這樣的 ERC-4337 智慧帳戶,對現有 EOA 使用 EIP-7702 委派。
  2. 選擇簽署器。通行密鑰、嵌入式簽署器或現有 EOA 都可以。
  3. 透過 bundler 傳送你的第一個 UserOperation,如果希望使用者免付 gas,請附上贊助政策。
  4. 在功能支援表中確認目標鏈支援你所需的功能。

Wallet APIs 文件透過程式碼示範了每個步驟。如果你要撰寫自己的智慧帳戶,請針對目標 EntryPoint 版本實作 validateUserOp。

常見問題

什麼是帳戶抽象?

帳戶抽象讓智慧合約充當你的帳戶,而不是單一私鑰。帳戶的程式碼決定誰可以簽章、誰來支付 gas,以及它可以執行什麼。這使贊助 gas、批次處理、通行密鑰和 session key 成為可能。在以太坊上,ERC-4337 無需改動協議即可實現它,EIP-7702 則將其帶給現有的 EOA。

什麼是 ERC-4337?

ERC-4337 是以太坊上無需變更共識層的帳戶抽象標準。使用者簽署 UserOperation 並傳送到獨立的 mempool。bundler 將它們打包成一筆發往 EntryPoint 合約的交易,由 EntryPoint 驗證並執行每一個。paymaster 可以代表使用者支付 gas。

ERC-4337 需要硬分叉嗎?

不需要。ERC-4337 以智慧合約和鏈下 bundler 網路的形式運行在現有鏈之上,因此可以在以太坊以及任何部署了 EntryPoint 的 EVM 鏈上運行。EIP-7702 則不同,它是隨 2025 年 5 月 7 日 Pectra 升級上線的協議變更。

ERC-4337 與 EIP-7702 有什麼差別?

ERC-4337 透過 UserOperation 和 bundler,讓智慧帳戶運行在各自的位址上。EIP-7702 則讓現有 EOA 就地委派給合約程式碼,因此位址保持不變。兩者是互補的,ERC-4337 規範接受 UserOperation 中的 EIP-7702 授權。

EIP-7702 會取代 ERC-4337 嗎?

不會。EIP-7702 升級的是 EOA,但它不提供 mempool、bundler 或 paymaster。這些仍然來自 ERC-4337 或 relayer。被委派的 EOA 可以透過 bundler 傳送 UserOperation 並使用 paymaster,兩個標準在實務上就是這樣結合的。

什麼是 UserOperation?

UserOperation 是 ERC-4337 用來代替一般交易的偽交易。它包含發送者、nonce、呼叫資料、gas 欄位、簽章以及可選的 paymaster 資料。bundler 從獨立的 mempool 收集 UserOperation,並將其提交到鏈上的 EntryPoint 合約。

我需要 bundler 和 paymaster 嗎?

傳送 UserOperation 需要 bundler,因為只有 bundler 能把它們提交到鏈上。paymaster 是可選的。當你想贊助 gas 或讓使用者用 ERC-20 代幣支付時再使用。沒有 paymaster 時,智慧帳戶會用它在 EntryPoint 的自有存款支付 gas。

我應該使用哪個 EntryPoint 版本?

新帳戶請基於 EntryPoint v0.7 或 v0.8 建構。v0.8 新增了原生 EIP-7702 支援。我們託管的 Bundler API 支援 v0.6、v0.7 和 v0.8,Bundler FAQ 表示 v0.6 計畫棄用。請在你的鏈上呼叫 eth_supportedEntryPoints 確認清單。

Alchemy 支援 ERC-4337 和 EIP-7702 嗎?

支援。我們營運託管的 ERC-4337 Bundler API(建構於我們開源的 Rundler 之上)、用於贊助 gas 的 Gas Manager,以及以 Modular Account v2 作為預設智慧帳戶的 Wallet APIs。Wallet APIs 也支援 EIP-7702,因此 EOA 可以委派給 Modular Account v2 的程式碼。

帳戶抽象的使用有多廣泛?

採用情況變化很快,固定的數字很快就會過時。請改為查看即時資料來源。BundleBear 是一個公開的儀表板,追蹤跨鏈的智慧帳戶活動,包括 ERC-4337 UserOperation 和 EIP-7702 授權,並持續更新。

Background gradient

打造區塊鏈魔法

Alchemy 結合最強大的 Web3 開發者產品與工具,並提供資源、社群與卓越的支援。