Tracking issue for the frame-transaction family Nethermind is championing (EF grant). Three EIPs, each a delta on the previous, plus the EIP-7906 post-transaction frame mode.
The grant workstream is organised in eight phases; the PR index below is grouped by phase so progress can be read against it.
Sub-issues
Phase status at a glance
| Phase |
State |
Where the work is |
| 1. Specification leadership and EIP hardening |
Active |
16 upstream EIP PRs merged, 5 open |
| 2. Canonical onchain paymaster design |
Active |
ethereum/EIPs#12041, #12612 |
| 3. Public mempool, validation, revalidation |
Active |
#12610, #12617, #12620, #12624, #12636, #12637, #12666, #12687, #12603 |
| 4. Signature agility and post-quantum readiness |
Early |
#12513 (EIP-8288 frame type), signature-scheme registry still open upstream |
| 5. Use-case validation |
Partial |
keyed nonces (8250), recent roots for privacy withdrawals (8272), post-tx frames (7906) |
| 6. Nethermind prototype |
Active |
integration branch eip8141-frame-txs-devnet7, #12526 |
| 7. Support for testing and devnet work |
Active |
#12580, #12658, cross-client parity PRs, frames docker image |
| 8. Documentation and ecosystem engagement |
Not started |
no artifacts yet |
How the EIPs connect
8250 and 8272 are pure deltas on 8141 — both change the frame-tx payload, the signature hash, the TXPARAM space, and hook the 8141 processing loop.
- 8250 replaces the payload
nonce field with nonce_keys, nonce_seq, and its keyed-nonce consumption replaces 8141's payment-APPROVE nonce increment (relying on 8141's out-of-frame approval journaling).
- 8272 appends a
recent_root_references field, adds a pre-frame reference check, and reads the EIP-7843 slot.
- 7906 adds a
POST_TX frame mode that runs after the transaction body.
Combined, the payload is 11 fields: [chain_id, nonce_keys, nonce_seq, sender, frames, signatures, max_priority_fee_per_gas, max_fee_per_gas, max_fee_per_blob_gas, blob_versioned_hashes, recent_root_references]. Correct field counts: 8141 = 9, 8250 = 10 (signatures at #6), 8272 = 10 (signatures at #5), combined = 11.
Phase 1 — Specification leadership and EIP hardening
Merged upstream (ethereum/EIPs): #11930, #11931, #11955, #11958, #11959, #11960, #11961, #11963, #11966, #11967, #11968, #11970, #12003, #12008, #12067, #12068.
Open upstream:
Withdrawn or superseded: #11932, #11956, #11957, #12004, #12010, #12011.
Every open upstream PR here originates from an implementation finding on the prototype branch, which is the feedback loop the phase is meant to produce.
Phase 2 — Canonical onchain paymaster design
Outstanding for the phase: the standalone paymaster design note (solvency, reservation, revalidation assumptions) is not written yet.
Phase 3 — Public mempool, validation, and revalidation
Phase 4 — Signature agility and post-quantum readiness
Outstanding: the post-quantum readiness note, and the signature-scheme registry, which was withdrawn upstream (#12011) and needs a new form.
Phase 5 — Use-case validation
The delta EIPs are the use-case vehicles: keyed nonces for scoped and agent accounts, recent roots for privacy withdrawals that pay fees after withdrawal, post-tx frames for settlement after the transaction body.
Merged on master: #12457 (recent-root store), #12458 (keyed-nonce state), #12527 (nonce-set validity), #12572 (recent-root usable window).
Open: #12528 (reference-set validity), #12653 (8250 envelope decode), #12655 (8272 reference envelope decode), #12656 (8272 reference validation and charging), #12657 (8250 keyed-nonce validation, consumption, charging), #12659 (8272 reference opcodes), #12662 (8250 nonce introspection), #12661 (EIP-7906 POST_TX frames).
Outstanding: the use-case requirements document and the pass/fail assessment against the spec.
Phase 6 — Nethermind prototype
Integration branch eip8141-frame-txs-devnet7; narrow PRs land on it, and dependent PRs are stacked on their parent branch so each diff shows only its own change.
Merged into the integration branch: #12558 (8250 NONCE_MANAGER predeploy entry), #12591 (burn base fee), #12592 (keep the P256 precompile out of the BAL), #12593 (record zero-premium beneficiary access in the BAL), #12595 (EIP-7708 transfer log in the sender frame receipt), #12602 (unrolled-batch frame logs), #12639 (derive receipt status from the frame statuses).
Open on the integration branch: #12594 (EIP-7623 calldata floor, approved), #12643 (no contract address on a frame receipt, draft), #12660 (VERIFY frame as a truly static call), #12671 (advance struct-ref decode past the receipt extension, draft).
Stack order for the open work: 12594 → 12687; 12660 → 12666 and 12660 → 12661; 12653 → 12657 → 12662 and 12653 → 12655 → 12656 → {12659, 12658}.
Phase 7 — Support for testing and devnet work
Phase 8 — Documentation and ecosystem engagement
No artifacts yet. Explainers and the final report are due later in the plan.
Cross-EIP conflicts (championing)
| Conflict |
Resolution |
8272 RECENTROOTREFLOAD = 0xB4 collides with 8141 SIGPARAM = 0xB4 |
resolved — moved to 0xB5 (ethereum/EIPs#11967) |
TXPARAM: 8141 and 8250 both want 0x0B; 8250 and 8272 both want 0x0D |
8250 resolved — TXPARAM_NONCE_KEY_0 moved to 0x10 (ethereum/EIPs#11966); 8272 0x0F still to confirm |
8272 internal: 0x0F (constants table) vs 0x0D (summary table) |
use 0x0F |
8250 repurposes TXPARAM(0x01) nonce → nonce_seq |
apply fork-gated |
8272 source_id: 20-byte address vs padded 32 |
open, align on one upstream |
| 8272 gas formula drops 8141 signature costs |
resolved — full 8141 formula plus recent-root terms (ethereum/EIPs#11931) |
8250 and 8272 payload listings drop 8141's signatures field |
resolved (ethereum/EIPs#11963, #11959) |
| System-contract addresses |
resolved — NONCE_MANAGER and RECENT_ROOT_ADDRESS pinned (ethereum/EIPs#12067, #12068) |
| Fork timestamps and remaining TBD constants |
open, coordinated cross-client |
Gas surcharges (8250 first-use, 8272 recent-root) depend on the 8141 gas slice.
Tracking issue for the frame-transaction family Nethermind is championing (EF grant). Three EIPs, each a delta on the previous, plus the EIP-7906 post-transaction frame mode.
The grant workstream is organised in eight phases; the PR index below is grouped by phase so progress can be read against it.
Sub-issues
0x06, native AA). Owner @svlachakisPhase status at a glance
eip8141-frame-txs-devnet7, #12526How the EIPs connect
8250 and 8272 are pure deltas on 8141 — both change the frame-tx payload, the signature hash, the TXPARAM space, and hook the 8141 processing loop.
noncefield withnonce_keys, nonce_seq, and its keyed-nonce consumption replaces 8141's payment-APPROVE nonce increment (relying on 8141's out-of-frame approval journaling).recent_root_referencesfield, adds a pre-frame reference check, and reads the EIP-7843 slot.POST_TXframe mode that runs after the transaction body.Combined, the payload is 11 fields:
[chain_id, nonce_keys, nonce_seq, sender, frames, signatures, max_priority_fee_per_gas, max_fee_per_gas, max_fee_per_blob_gas, blob_versioned_hashes, recent_root_references]. Correct field counts: 8141 = 9, 8250 = 10 (signatures at #6), 8272 = 10 (signatures at #5), combined = 11.Phase 1 — Specification leadership and EIP hardening
Merged upstream (ethereum/EIPs): #11930, #11931, #11955, #11958, #11959, #11960, #11961, #11963, #11966, #11967, #11968, #11970, #12003, #12008, #12067, #12068.
Open upstream:
frame.valuegasSLOTNUMduring validation-prefix executionmax_gasreservation, payer-based eligibility)Withdrawn or superseded: #11932, #11956, #11957, #12004, #12010, #12011.
Every open upstream PR here originates from an implementation finding on the prototype branch, which is the feedback loop the phase is meant to produce.
Phase 2 — Canonical onchain paymaster design
Outstanding for the phase: the standalone paymaster design note (solvency, reservation, revalidation assumptions) is not written yet.
Phase 3 — Public mempool, validation, and revalidation
MAX_VERIFY_GASMAX_VERIFY_GASat mempool ingressmax_gas), pool and block productionPhase 4 — Signature agility and post-quantum readiness
Outstanding: the post-quantum readiness note, and the signature-scheme registry, which was withdrawn upstream (#12011) and needs a new form.
Phase 5 — Use-case validation
The delta EIPs are the use-case vehicles: keyed nonces for scoped and agent accounts, recent roots for privacy withdrawals that pay fees after withdrawal, post-tx frames for settlement after the transaction body.
Merged on
master: #12457 (recent-root store), #12458 (keyed-nonce state), #12527 (nonce-set validity), #12572 (recent-root usable window).Open: #12528 (reference-set validity), #12653 (8250 envelope decode), #12655 (8272 reference envelope decode), #12656 (8272 reference validation and charging), #12657 (8250 keyed-nonce validation, consumption, charging), #12659 (8272 reference opcodes), #12662 (8250 nonce introspection), #12661 (EIP-7906
POST_TXframes).Outstanding: the use-case requirements document and the pass/fail assessment against the spec.
Phase 6 — Nethermind prototype
Integration branch
eip8141-frame-txs-devnet7; narrow PRs land on it, and dependent PRs are stacked on their parent branch so each diff shows only its own change.Merged into the integration branch: #12558 (8250
NONCE_MANAGERpredeploy entry), #12591 (burn base fee), #12592 (keep the P256 precompile out of the BAL), #12593 (record zero-premium beneficiary access in the BAL), #12595 (EIP-7708 transfer log in the sender frame receipt), #12602 (unrolled-batch frame logs), #12639 (derive receipt status from the frame statuses).Open on the integration branch: #12594 (EIP-7623 calldata floor, approved), #12643 (no contract address on a frame receipt, draft), #12660 (VERIFY frame as a truly static call), #12671 (advance struct-ref decode past the receipt extension, draft).
Stack order for the open work:
12594 → 12687;12660 → 12666and12660 → 12661;12653 → 12657 → 12662and12653 → 12655 → 12656 → {12659, 12658}.Phase 7 — Support for testing and devnet work
Phase 8 — Documentation and ecosystem engagement
No artifacts yet. Explainers and the final report are due later in the plan.
Cross-EIP conflicts (championing)
RECENTROOTREFLOAD = 0xB4collides with 8141SIGPARAM = 0xB40xB5(ethereum/EIPs#11967)0x0B; 8250 and 8272 both want0x0DTXPARAM_NONCE_KEY_0moved to0x10(ethereum/EIPs#11966); 82720x0Fstill to confirm0x0F(constants table) vs0x0D(summary table)0x0FTXPARAM(0x01)nonce → nonce_seqsource_id: 20-byte address vs padded 32signaturesfieldNONCE_MANAGERandRECENT_ROOT_ADDRESSpinned (ethereum/EIPs#12067, #12068)Gas surcharges (8250 first-use, 8272 recent-root) depend on the 8141 gas slice.