Update EIP-8037: charge account creation conditionally at access#11858
Open
chfast wants to merge 1 commit into
Open
Update EIP-8037: charge account creation conditionally at access#11858chfast wants to merge 1 commit into
chfast wants to merge 1 commit into
Conversation
…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
Collaborator
File
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.