Skip to content

Update EIP-8141: pin the initial accessed_addresses set for frame transactions - #12113

Open
Marchhill wants to merge 4 commits into
ethereum:masterfrom
Marchhill:frame-accessed-addresses-init
Open

Update EIP-8141: pin the initial accessed_addresses set for frame transactions#12113
Marchhill wants to merge 4 commits into
ethereum:masterfrom
Marchhill:frame-accessed-addresses-init

Conversation

@Marchhill

@Marchhill Marchhill commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

The spec currently doesn't specify the initial warm set for frame-transaction processing, which lets gas_used diverge on the first tx.sender access (some clients charge it COLD, EIP-2929/3651 warm it). This pins accessed_addresses to the EIP-2929/EIP-3651 set (tx.sender, coinbase, precompiles) minus any frame target, whose warm/cold access is already charged within each frame's own gas limit per the Rationale. Also: fixed linting.

@github-actions github-actions Bot added c-update Modifies an existing proposal s-draft This EIP is a Draft t-core labels Aug 5, 2026
@eth-bot

eth-bot commented Aug 5, 2026

Copy link
Copy Markdown
Collaborator

File EIPS/eip-8141.md

Requires 1 more review from Authors: @derekchiang, @drortirosh, @fjl, @forshtat, @lightclient, @nerolation, @shahafn, @svlachakis, @vbuterin, @yoavw

@eth-bot eth-bot added the a-review Waiting on author to review label Aug 5, 2026
@AnkushinDaniil

Copy link
Copy Markdown
Contributor

The exception reads as a subtraction from the set, which makes it ambiguous exactly where the sets overlap. A frame with target = None resolves to tx.sender, and nothing stops a frame from targeting the coinbase or a precompile, so "except that no frame target is pre-warmed" can be read as removing those from the initial set. Phrasing it as "being a frame target does not warm an address" would leave the 2929 and 3651 entries untouched.

The payer looks like the same divergence class and is not covered here. APPROVE(APPROVE_PAYMENT) collects max_cost from an address the protocol did not touch before, and the spec does not say whether that collection warms it. A later frame doing BALANCE(payer) or calling into a paymaster then costs 100 or 2600 depending on the client. The sponsored flow in the Rationale hits this on the post op frame, so it is not a corner case.

ORIGIN ends up warm or cold depending on frame mode: it is tx.sender in a SENDER frame and ENTRY_POINT elsewhere, and the latter is deliberately not pre-warmed. 2929 warms the origin because the protocol touched it, so this is a real departure and worth stating rather than leaving to inference.

accessed_storage_keys is left unpinned. There is no access list here so the empty set is the only sensible reading, but the same sentence may as well say it.

@github-actions

github-actions Bot commented Aug 5, 2026

Copy link
Copy Markdown

The commit d20e4c3 (as a parent of 02ecbef) contains errors.
Please inspect the Run Summary for details.

@github-actions github-actions Bot added the w-ci Waiting on CI to pass label Aug 5, 2026
@Marchhill
Marchhill marked this pull request as ready for review August 6, 2026 20:04
@Marchhill
Marchhill requested a review from eth-bot as a code owner August 6, 2026 20:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

a-review Waiting on author to review c-update Modifies an existing proposal s-draft This EIP is a Draft t-core w-ci Waiting on CI to pass

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants