Repository navigation
EIP-8141 Implementation Tracker: Frame Transaction #2829
Description
EIP-8141: Frame Transaction
Target Fork
Bogota
Instructions
- Assign issue to EIP specification and testing owner(s).
Important
A specifications specialist and a testing specialist should ideally share ownership of the EIP.
- Add the issue to the target fork milestone if applicable (i.e., the EIP is at least in the CFI stage).
Guidance for Marking Items Complete
An item should only be checked off once the EIP is considered stable. In this context, stable means:
- No major issues or ambiguities are still being uncovered in the specification or tests.
- There are no open discussion points awaiting resolution.
- Client implementations have been consistently passing the tests for at least a week.
It is ultimately up to the owners' discretion to decide when an item should be marked as complete, using this guidance as the basis for that decision.
In exceptional cases, an EIP may require changes after some items have been marked complete or even after the entire issue has been completed and closed. This can happen, for example, when significant design optimizations are identified and agreed upon in ACD, or when critical security issues surface and require updates to the specification or tests.
When this occurs, owners should either unmark the relevant checkboxes if the issue is still open, or create a new tracking issue for the modifications if the original issue had already been closed.
Specification Changes Tracker
- Update EIP-8141: Allow using precompiles for VERIFY frames EIPs#11482
- Update EIP-8141: add support for guarantors EIPs#11555
- Update EIP-8141: allow payer to approve before sender EIPs#11580
- Update EIP-8141: Extend with Guarantors, Flexible Nonces, and Signer Binding EIPs#11681
- Update EIP-8141: clarify floor repricing, signature validation, and frame.value gas EIPs#12026 - implemented in Frame Transactions (EIP-8141) #3047 ✅
- Update EIP-8141: assembled canonical paymaster reference bytecode EIPs#12041
- Update EIP-8141: align SIGPARAM copy operand order with CALLDATACOPY EIPs#12042 - implemented in Frame Transactions (EIP-8141) #3047 ✅
- Update EIP-8141: note that a frame receipt carries no transaction-level status EIPs#12061 - informational for execution-specs (json-rpc related) ✅
- Update EIP-8141: Add explicit second dimension for state gas to frames EIPs#12062 - implemented in feat(specs,tests): update EIP-8141 implementation #3396 ✅
- Update EIP-8141: ban SLOTNUM during validation-prefix execution EIPs#12066 - informational for execution-specs (mempool related) ✅
- Update EIP-8141: specify block inclusion gating and payer solvency EIPs#12091 - implemented in Frame Transactions (EIP-8141) #3047 ✅
- Update EIP-8141: statically disallow approval scope on atomic-batch frames EIPs#12109 - implemented in feat(spec-specs,tests): pin the EIP-8141 approval context across batches and reverts #3393 ✅
- Update EIP-8141: pin the initial accessed_addresses set for frame transactions EIPs#12113 - implemented in feat(specs,tests): update EIP-8141 implementation #3396 ✅
- Update EIP-8141: link the first reference to each cited proposal EIPs#12121 - informational ✅
- Update EIP-8141: forbid approval scope on frames inside an atomic batch EIPs#12155
- Update EIP-8141: dispatch a precompile targeted by a frame EIPs#12157 - implemented in feat(spec-specs,tests): dispatch a precompile a VERIFY frame targets #3407
- Update EIP-8141: enumerate the validation-prefix state dependency set for revalidation without re-simulation EIPs#12160
- Update EIP-8141: recognize a canonical passkey wallet for no-simulation admission EIPs#12161
- Update EIP-8141: allow concurrent pending frame transactions on disjoint keyed-nonce sets EIPs#12162
- Update EIP-8141: relax banned opcode list EIPs#12167 - informational ✅
- Update EIP-8141: Restrict SIGPARAM signer introspection to accounts with empty or delegated code EIPs#12168
- Update EIP-8141: define FrameTx gas estimation RPC EIPs#12176
- 8141: add sigdatacopy so that stack requirement for sigparam is static EIPs#12187 - implemented in feat(specs,tests): update EIP-8141 implementation #3396 ✅
- Update EIP-8141: make the expiry frame a new mode EIPs#12198
- Update EIP-8141: state that installing the expiry verifier leaves the nonce EIPs#12203
- Update EIP-8141: fix calldata floor to use EIP-7976 uniform token count EIPs#12209 - informational - implemented in feat(specs,tests): update EIP-8141 implementation #3396 ✅
- Update EIP-8141: charge the resolved target's access at frame entry EIPs#12211 - implemented in feat(specs,tests): charge a frame target's access at frame entry #3412
- Update EIP-8141: scope APPROVE failure modes to the current call frame EIPs#12212 - informational - implemented in feat(specs,tests): charge a frame target's access at frame entry #3412
- Update EIP-8141: bound producer-side re-execution of an unapproving validation prefix EIPs#12213
- Update EIP-8141: Add co-signer-funded value legs to EIP-8141 EIPs#12214
- Update EIP-8141: bound chain_id to 2**64 EIPs#12223
- Update EIP-8141: account block execution gas before refund (EIP-7778) EIPs#12226 - implemented in fix(eip-8141): account block execution gas before refund #3443
- Update EIP-8141: Move mode section under Frame definition EIPs#12236
- Update EIP-8141: add valid_after to the expiry verifier frame EIPs#12252
- Update EIP-8141: opcode and frame-mode registry for the frame-transaction family EIPs#12253
- Update EIP-8141: Remove a redundant check for frame's state gas limit EIPs#12276 - implemented in feat(tests): wrap earlier transaction types into frames where possible #3500
- Update EIP-8141: define MAX_VERIFY_GAS as a shared mempool floor EIPs#12301
- Update EIP-8141: define early rejection and payer revalidation rules EIPs#12321
- Update EIP-8141: admit paymasters by a node-decidable egress property, not only exact code match EIPs#12328
- Update EIP-8141: pin canonical paymaster withdrawal delay to reorg depth EIPs#12330
- Update EIP-8141: optional sender-keyed authority read for a shared authorization step EIPs#12340
- Update EIP-8141: Add EIP-7976 dependency to EIP-8141 EIPs#12360
- Update EIP-8141: deploy frames expiry verifier as standard contract EIPs#12387
- Update EIP-8141: replace 7623 with 7976 EIPs#12395
- Update EIP-8141: use max_fee to bound cost EIPs#12414
- Update EIP-8141: add set-delegation frame for codeless senders EIPs#12421
- Update EIP-8141: check frame modes against a set of valid values EIPs#12453 - implemented in docs(specs,tests): track the EIP-8141 frame mode set-membership wording #3739
- Update EIP-8141: roll back the approval context when a call reverts EIPs#12458 - implemented in feat(tests): pin the EIP-8141 frame context rollback of a call reverting inside a frame #3757
- Update EIP-8141: name the TXPARAM, FRAMEPARAM and SIGPARAM params EIPs#12469
- Update EIP-8141: define the validation prefix and execution body under Behavior EIPs#12471
- Update EIP-8141: state the EIP-1559 fee validity rules and define effective_gas_price EIPs#12486
Specification + Testing Status
- Testing complexity assessed and documented. See here
- Test case tracker created. See here
- Specification implementation merged to
eips/<fork>/eip-<eip-number>(skip if the fork branch merge below is already complete). - Specification updates merged to the corresponding
forks/<fork>branch. - EIP updates proposed in case of architectural choices surfaced during implementation.
- Required testing framework modifications implemented.
- Test suite implemented.
- Full code coverage for all changes.
- No regressions or failures in tests from prior forks (including static tests).
- Testing checklist complete.
- Hardening session completed.
- Benchmarking tests written and results documented.
- Ran tests using
executeto ensure compatibility, and marked specific tests to be skipped when they cannot be executed on live networks. - Added Mainnet-marked tests (example test).
Process Status
- Hive tests passing on at least two implementations.
- EIP included in a devnet.
Activity
github-actions commentedon Jul 12, 2026
This issue has had no recent activity and has been marked as stale.
kevaundray commentedon Aug 9, 2026
Not sure where to note this, so leaving here :) : A few EIPs like recent roots are built ontop of 8141 and they add new bytecode. This is a tracker to just specify that we eventually will need to freeze and audit that bytecode
chugarchugarr commentedon Aug 26, 2026
Cross-EIP hardening finding: #3443 covers the EIP-8141 / EIP-7778 storage-refund boundary. Frame settlement correctly refunds the payer, but block execution gas must remain pre-refund. Regression coverage is included in the PR.
chugarchugarr commentedon Sep 7, 2026
Cross-EIP contribution in progress for the EIP-8141 × EIP-7805 boundary described by EIP-8369.
I’m turning a complete executable model into upstream spec/test contributions for Profile-2 eligibility rather than treating Frames and FOCIL as separate test surfaces. The concrete scope is:
inclusion_list_satisfiedresult across implementations.The invariant I’m targeting is simple: given the same IL, payload, parent state, claims, fork context, and profile rules, conforming implementations must derive the same omission verdict.
I’ll keep the first upstream changes focused on executable specification + conformance vectors and link the PRs here as they land.