
EIP-8223:合約付款人交易
EIP-8223 引入了一種新的代付交易類型,將 Gas 費用由交易發送者轉向目標合約收取,並透過靜態驗證註冊表機制確保效率與安全性。
https://eips.ethereum.org/EIPS/eip-8223 的討論主題
EIP-8223 引入了一種新的 EIP-2718:類型化交易封裝 交易類型 —— 代付交易(sponsored transaction)——
在這種交易中,Gas 費用由 tx.to 處的合約支付,而非由交易發送者支付。授權管理透過預部署在 0x13 的規範代付者註冊表(canonical payer registry)進行:目標合約明確註冊單一授權發送者,協議在驗證期間透過一次存儲讀取來檢查此項 —— 無需執行 EVM 代碼。
核心設計:
-
雙向選擇(Two-sided opt-in)。代付者合約調用
registry.authorize(sender)來註冊誰可以向其收取 Gas 費。發送者則透過選擇代付交易類型來逐筆交易加入。若無明確行動,任何一方都不會被納入。 -
透過
tx.to綁定。代付僅在交易指向代付者合約本身時才會激活。不需要額外的交易欄位 ——tx.to同時作為調用目標和 Gas 代付者。 -
一對一授權。每個代付者僅授權一個發送者。結合「每個發送者一筆代付交易」的內存池(mempool)規則,這使得在餘額或註冊表條目更改時,每個代付者只需 O(1) 的重新驗證複雜度。
-
靜態驗證。驗證僅需要讀取帳戶狀態樹(發送者 nonce/餘額、代付者餘額、代付者代碼)以及從代付者註冊表預部署中進行一次 SLOAD。無代碼執行,無任意合約存儲。兼容 FOCIL 包含列表以及 https://ethresear.ch/t/a-pragmatic-path-towards-validity-only-partial-statelessness-vops/22236 —— VOPS 節點僅需額外保留
0x13的存儲狀態樹。 -
適用於 EIP-7708 的真實餘額變動。代付者在 Gas 託管前資助發送者,發送者透過標準 EIP-1559 機制支付 Gas,執行後發送者將未使用的退款返還給代付者。每次轉帳都是真實的狀態更改,並觸發 EIP-7708:ETH 轉帳與銷毀觸發日誌 日誌。收據(Receipts)、
effectiveGasPrice以及所有與 Gas 相關的日誌運作方式與 EIP-1559 交易完全相同。
主要用例:智能合約帳戶(如 Update ERC-7821: Remove Call Struct from Specification by McOso · Pull Request #883 · ethereum/ERCs · GitHub NFT 控制的帳戶),在被調用時支付自己的 Gas,從而消除控制者 EOA 持有 ETH 或使用中繼器(relayer)的需求。
與其他提案的關係:本 EIP 與 EIP-8141:框架交易(Frame Transaction)和 EIP-8175:可組合交易(Composable Transaction)互補,後者透過交易內代碼執行提供更通用的代付功能。EIP-8223 涵蓋了靜態驗證即足夠的較窄場景,如果上述格式先行發布,其註冊表機制也可以作為這些格式中的一種功能(capability)或框架模式來呈現。
更新日誌
- 2026-04-11:初始草案
外部審查
截至 2026-04-11 尚無。
待解決問題
-
2026-04-11:最終的
SPONSORED_TX_TYPE值 ——0x07是暫定的,可能與針對同一分叉的其他草案 EIP 衝突。 -
2026-04-11:最終的
PAYER_REGISTRY_ADDRESS——0x13是繼 EIP-7997 (0x12) 之後的下一個可用地址,但取決於 EIP-2537 和 EIP-7997 是否都在先前的分叉中發布。 -
2026-04-11:是否應允許 EIP-7702 委託帳戶作為代付者 —— 在代付交易進入內存池後,
tx.to上的委託更改會改變將要執行的代碼,而在當前規範下這不會觸發重新驗證。 -
2026-04-11:代付者註冊表預部署中的
Authorized事件應保留還是移除,以保持與其他不觸發事件的系統合約(EIP-4788, EIP-2935)的一致性。1 則貼文 - 1 位參與者 [閱讀完整主題](https://ethereum-magicians.org/t/eip-8223-contract-payer-transactions/28202)