Skip to content

Update EIP-8037: charge account creation conditionally at access#11858

Open
chfast wants to merge 1 commit into
ethereum:masterfrom
chfast:eip8037-conditional-create
Open

Update EIP-8037: charge account creation conditionally at access#11858
chfast wants to merge 1 commit into
ethereum:masterfrom
chfast:eip8037-conditional-create

Conversation

@chfast

@chfast chfast commented Jul 3, 2026

Copy link
Copy Markdown
Member

Replace the unconditional-charge-with-refill model for CREATE/CREATE2 with a conditional charge applied at the single destination access that also performs the EIP-7610 collision check - the access EIP-7928 already sanctions and records. Creations failing the balance/nonce/depth checks never read the destination and charge nothing; pre-existing destinations (e.g. pre-funded deterministic-deployment addresses) charge nothing and their create frame is no longer temporarily under-budgeted; only a creation that writes a new account pays, in the creating frame before the 63/64ths split, exactly as the CALL* family. The only remaining refill - on create-frame failure - is the one shared with CALL* (it also covers the storage-only-collision corner, the one case where a colliding destination is non-existent per EIP-161).

At the transaction level the create component stays in intrinsic_state_gas for validation (validity remains stateless and unchanged), but it is seeded into state_gas_reservoir rather than pre-consumed, and charged conditionally when transaction setup accesses the deployment address. The tx-end refill rules disappear; the unspent reservoir returns to the sender through the normal settlement. Only the moment the gas is consumed changes.

…tion access

Replace the unconditional-charge-with-refill model for CREATE/CREATE2 with a
conditional charge applied at the single destination access that also performs
the EIP-7610 collision check - the access EIP-7928 already sanctions and
records. Creations failing the balance/nonce/depth checks never read the
destination and charge nothing; pre-existing destinations (e.g. pre-funded
deterministic-deployment addresses) charge nothing and their create frame is
no longer temporarily under-budgeted; only a creation that writes a new
account pays, in the creating frame before the 63/64ths split, exactly as the
CALL* family. The only remaining refill - on create-frame failure - is the one
shared with CALL* (it also covers the storage-only-collision corner, the one
case where a colliding destination is non-existent per EIP-161).

At the transaction level the create component stays in intrinsic_state_gas
for validation (validity remains stateless and unchanged), but it is seeded
into state_gas_reservoir rather than pre-consumed, and charged conditionally
when transaction setup accesses the deployment address. The tx-end refill
rules disappear; the unspent reservoir returns to the sender through the
normal settlement. Only the moment the gas is consumed changes.

Claude-Session: https://claude.ai/code/session_0124TpiAtCnqTGx6uannKYcZ
@chfast chfast requested a review from eth-bot as a code owner July 3, 2026 08:37
@github-actions github-actions Bot added c-update Modifies an existing proposal s-draft This EIP is a Draft t-core labels Jul 3, 2026
@eth-bot

eth-bot commented Jul 3, 2026

Copy link
Copy Markdown
Collaborator

File EIPS/eip-8037.md

Requires 1 more review from Authors: @adietrichs, @anderselowsson, @CPerezz, @fradamt, @jochem-brouwer, @LukaszRozmej, @misilva73, @rakita

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants