Ethereum 智慧帳戶:UserOperation、Bundler 與 Gas 贊助
了解 ERC-4337 UserOperation 如何經過 bundler 和 EntryPoint、paymaster 如何贊助 gas,以及帳戶復原與資產託管控制的差異。
本指南內容智慧帳戶把可程式化授權規則放進合約
簡短摘要
ERC-4337 讓智慧合約帳戶依自身規則,透過獨立於 EOA 交易的流程提交 UserOperation。Bundler 呼叫 EntryPoint,paymaster 可贊助 gas;但不保證帳戶復原、免費交易或非託管。
智慧帳戶把可程式化授權規則放進合約
一般外部擁有帳戶(EOA)以私鑰簽章證明控制權,nonce 決定交易順序。這種模型很簡單,但通常同一把金鑰可授權所有操作。每筆 EOA 交易只有一個頂層動作,但被呼叫的合約仍可在內部繼續呼叫其他合約。Ethereum 待處理交易指南說明的是與 ERC-4337 不同的 EOA 交易池。智慧帳戶是可以持有資產並執行呼叫的合約。
它的驗證程式碼可要求單一簽章、多個簽章的門檻,或有時效的權限。ERC-4337 定義授權與執行操作的介面,但沒有指定特定錢包或復原政策。
Ethereum.org列出備用金鑰、受限權限和 gas 贊助等可能做法,但不能假設每款錢包都有。「智慧錢包」這個名稱本身不能說明誰掌握控制權。請確認哪個合約持有資產、帳戶信任哪些程式碼和 EntryPoint,以及哪些簽署者可以授權呼叫。如果帳戶邏輯可以升級,管理員權限和變更程序也會影響資產控制。
UserOperation 還不是已進入區塊的 Ethereum 交易
UserOperation 描述智慧帳戶想執行的操作。它通常包含發送帳戶地址、帳戶自己的 nonce、呼叫資料、簽章、gas 上限和費用條件,也可能附上建立帳戶的 factory 資料或申請贊助的 paymaster 資料。實際欄位會因 EntryPoint 版本而異。錢包不會以一般 eth_sendTransaction 直接把物件送上鏈,而是交給提供 eth_sendUserOperation 等 ERC-4337 RPC 的 bundler 或 relay。
請求進入獨立的 UserOperation 池,與 EOA 交易池分開。UserOperation 雜湊用來識別請求;bundler 建立的鏈上交易另有自己的雜湊和收據。ERC-7769定義了提交和查詢結果的 RPC 方法。Bundler 的回覆可能表示請求通過該服務檢查並進入它的池,但不能證明請求已進入區塊或應用程式操作成功。是否傳播到其他 bundler,取決於基礎設施和政策。
請區分服務確認與鏈上記錄的結果。
Bundler 模擬驗證並準備鏈上呼叫
Bundler 收到操作後,會檢查是否相容於所用的 EntryPoint 版本,再模擬帳戶與 paymaster 的驗證邏輯。它檢查簽章、帳戶是否信任 EntryPoint、nonce、gas 和贊助條件。不符合規則或模擬失敗的請求可能遭拒。ERC-4337 bundler 指南說明模擬和打包提交的角色。
接著 bundler 選出一項或多項通過檢查的操作,建立一筆呼叫 EntryPoint handleOps 的一般 Ethereum 交易。該交易能否進入區塊,仍取決於出塊和網路狀況。收到 UserOperation 雜湊不代表它已在規範鏈上執行。UserOperation 池和 EOA 池不同,不同服務不一定看得到相同請求。Bundler 可能拒絕或暫緩操作,支援的網路、EntryPoint 版本和政策也可能不同。查詢狀態時,請分開查看錢包顯示、操作收據和打包交易的鏈上收據。
EntryPoint 先檢查帳戶授權,再呼叫帳戶
ERC-4337 EntryPoint 文件說明它的驗證與結算職責。EntryPoint 接收 bundler 的 handleOps 呼叫,並逐一呼叫帳戶的驗證函式。帳戶會檢查呼叫是否來自可信任的 EntryPoint,並驗證簽章及自身授權規則。ERC-4337 nonce 由 192 位 key 和 64 位 sequence 組成。
EntryPoint 會依帳戶與 key 驗證並遞增 sequence;帳戶可為 key 設定自訂用途或加入額外檢查。
選用的 paymaster 也會檢查是否願意贊助該操作。驗證通過後,EntryPoint 呼叫帳戶的執行函式,執行 callData 所描述的動作並結算費用。EntryPoint 是共用合約,讓不同錢包設計不用逐一修改協議也能使用智慧帳戶流程。請核對錢包實際使用的部署地址、版本和網路。模擬是有用的預覽,不保證進入區塊。等待期間,鏈上狀態、費用、有效期限或外部合約都可能改變。即使驗證通過,應用程式呼叫仍可能失敗或回滾。
交易進入區塊本身不代表預期的代幣轉帳或合約操作成功。
Paymaster 獲准後才會贊助 gas
如果 UserOperation 包含 paymaster 資料,EntryPoint 會詢問該合約是否願意贊助。應用程式可以替使用者支付費用,或讓帳戶沒有 ETH 的使用者開始操作。有些設計可以用代幣付款或設置其他資格條件,依錢包和 paymaster 的實作而定。贊助不會讓成本消失。Paymaster 可以限制應用程式、使用者、操作次數或金額,檢查請求後拒絕。它存入 EntryPoint 的款項用來支付操作成本。如果另外要求 stake,stake 是驗證規則下的擔保,不等於可支付 gas 的存款。
ERC-4337 paymaster 指南和EIP-4337說明驗證與結算流程。應用程式顯示費用為零,不代表沒有成本。贊助方可能先付款,再透過訂閱、代幣收費或服務條款取回價值。請查明最終由誰負擔成本、贊助是否有限額,以及操作失敗時是否仍會耗用 gas。
分開評估多個呼叫及其費用
若錢包支援,一項 UserOperation 可以同時包含應用程式授權和兌換,兩者作為一個操作經過 EntryPoint。這與一筆一般 EOA 交易不同,也不同於 bundler 將多項獨立 UserOperation 打包成一筆鏈上交易。請在錢包預覽中確認結構。假設一項獲准贊助的操作,實際 gas 成本為 0.0012 ETH。費用可能由 paymaster 存在 EntryPoint 的存款結算,而不是從使用者帳戶扣除。這只是說明用數字,不是目前報價。
實際費用取決於 gas 用量、費用條件和網路。打包不一定比較便宜或安全。多個呼叫是否具原子性,取決於智慧帳戶如何處理失敗。請確認單一呼叫失敗是否會回滾整批操作、其他操作是否可能完成,以及 gas 由誰支付。gas 估算不準也可能導致拒絕或執行失敗。Ethereum gas 費用指南說明一般費用欄位。
帳戶實作決定復原方式,ERC-4337 不會代為保證
帳戶可以設置備用簽署者,或要求可信任的 guardian 達到門檻後更換金鑰。有些設計設有等待期,讓現有金鑰可以提出異議。如果帳戶永遠只接受一個簽章,遺失該金鑰可能使帳戶無法復原。ERC-4337 容許帳戶自訂規則,但不會預設替所有帳戶加入備用金鑰或社交復原。Guardian 太少或換鑰規則太弱,可能留下攻擊途徑;guardian 太多或要求過嚴,則可能拖慢合法持有人的復原。請檢查門檻、等待期、取消權和復原金鑰的保管方式。這些規則也決定誰可以阻止操作。
合約錢包不會自動等同託管或非託管。控制權取決於誰持有簽章金鑰、誰有管理或升級權限,以及託管簽署者或復原服務可以授權什麼。請將持有資產的合約,與控制它的金鑰和服務分開檢查。助記詞復原指南討論另一種復原問題。
提交前確認操作與控制路徑
在錢包預覽中檢查網路、帳戶地址、目標合約、呼叫資料、代幣授權範圍和呼叫數量。簽章可能授權超出介面強調的操作。如果看不懂簽署資料,請先閱讀應用程式和錢包的官方文件。若要了解贊助,請閱讀資格條件、使用上限、其他付款方式和失敗時的費用規則,不要只看 paymaster 名稱。顯示贊助中不代表應用程式無條件免費;paymaster 仍可能拒絕。網路壅塞和區塊延遲也是另外的問題。如果 UserOperation 等候很久,不要直接套用 EOA 的「加速」或「取消」流程。
先查操作雜湊和收據;若有 bundler 交易雜湊,也檢查區塊收據和執行結果。RPC 收據可以區分單一操作的實際成本與成功狀態,以及整筆打包交易的收據。
常見問題
Q1UserOperation 和 Ethereum 交易是一樣的嗎?
不是。它是經由獨立池提交的智慧帳戶請求。Bundler 提交 EntryPoint 呼叫後,鏈會記錄打包交易和每項操作的結果。
Q2有 paymaster 就代表使用者不必付 gas 嗎?
使用者可能不會直接從帳戶支付 ETH,但網路成本仍存在。可能有使用上限、代幣付款或服務條件;操作失敗也可能耗用 gas。
Q3金鑰遺失後可以復原 ERC-4337 錢包嗎?
只有帳戶設有備用簽署者或復原政策才可以。請檢查門檻、等待期、更換金鑰權限和復原服務的控制範圍。
資料來源與延伸閱讀
回報問題
我們會準備一封包含本文連結的電子郵件。寄出後,Mark 才會收到你的回報
快速檢查
讀完指南後,用 3 道題檢查一下
問題 01
Bundler 傳回 UserOperation 雜湊。單憑這個回覆可以確定什麼?
選擇答案即可查看解釋