Skip to content

Commit 8a4549d

Browse files
committed
fix(specs): align warming with BAL inclusion
1 parent 55d774b commit 8a4549d

1 file changed

Lines changed: 5 additions & 8 deletions

File tree

  • src/ethereum/forks/amsterdam/vm/instructions

src/ethereum/forks/amsterdam/vm/instructions/system.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -307,6 +307,11 @@ def generic_call(
307307
push(evm.stack, U256(0))
308308
return
309309

310+
# EIP-7702: warm the delegated address only after all entry preconditions
311+
# (gas, balance, depth) have passed. Idempotent for non-delegation paths,
312+
# where `code_address` is the call target the caller already warmed.
313+
evm.accessed_addresses.add(code_address)
314+
310315
tx_state = evm.message.tx_env.state
311316
code_hash = get_account(tx_state, code_address).code_hash
312317
code = get_code(tx_state, code_hash)
@@ -419,8 +424,6 @@ def call(evm: Evm) -> None:
419424
# check enough gas for delegation access
420425
extra_gas += delegation_access_cost
421426
check_gas(evm, extra_gas + extend_memory.cost)
422-
if code_address not in evm.accessed_addresses:
423-
evm.accessed_addresses.add(code_address)
424427

425428
message_call_gas = calculate_message_call_gas(
426429
value,
@@ -519,8 +522,6 @@ def callcode(evm: Evm) -> None:
519522
# check enough gas for delegation access
520523
extra_gas += delegation_access_cost
521524
check_gas(evm, extra_gas + extend_memory.cost)
522-
if code_address not in evm.accessed_addresses:
523-
evm.accessed_addresses.add(code_address)
524525

525526
message_call_gas = calculate_message_call_gas(
526527
value,
@@ -675,8 +676,6 @@ def delegatecall(evm: Evm) -> None:
675676
# check enough gas for delegation access
676677
extra_gas += delegation_access_cost
677678
check_gas(evm, extra_gas + extend_memory.cost)
678-
if code_address not in evm.accessed_addresses:
679-
evm.accessed_addresses.add(code_address)
680679

681680
message_call_gas = calculate_message_call_gas(
682681
U256(0),
@@ -760,8 +759,6 @@ def staticcall(evm: Evm) -> None:
760759
# check enough gas for delegation access
761760
extra_gas += delegation_access_cost
762761
check_gas(evm, extra_gas + extend_memory.cost)
763-
if code_address not in evm.accessed_addresses:
764-
evm.accessed_addresses.add(code_address)
765762

766763
message_call_gas = calculate_message_call_gas(
767764
U256(0),

0 commit comments

Comments
 (0)