Skip to content

Commit 83c0014

Browse files
committed
refactor: Put back explicit acct tracking outside of 7702 delegation path
1 parent 5d98d40 commit 83c0014

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

src/ethereum/forks/amsterdam/vm/eoa_delegation.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,13 +133,13 @@ def access_delegation(
133133
"""
134134
state = evm.message.block_env.state
135135

136-
# EIP-7928: Track the authority address (delegated account being called)
137-
track_address_access(state.change_tracker, address)
138-
139136
code = get_account(state, address).code
140137
if not is_valid_delegation(code):
141138
return False, address, code, Uint(0)
142139

140+
# EIP-7928: Track the authority address (delegated account being called)
141+
track_address_access(state.change_tracker, address)
142+
143143
address = Address(code[EOA_DELEGATION_MARKER_LENGTH:])
144144
if address in evm.accessed_addresses:
145145
access_gas_cost = GAS_WARM_ACCESS
@@ -149,7 +149,6 @@ def access_delegation(
149149
code = get_account(state, address).code
150150

151151
# EIP-7928: Track delegation target when loaded as call target
152-
# `address` here is now the delegation target account
153152
track_address_access(state.change_tracker, address)
154153

155154
return True, address, code, access_gas_cost

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,10 @@ def callcode(evm: Evm) -> None:
494494
)
495495
charge_gas(evm, message_call_gas.cost + extend_memory.cost)
496496

497+
track_address_access(
498+
evm.message.block_env.state.change_tracker, code_address
499+
)
500+
497501
# OPERATION
498502
evm.memory += b"\x00" * extend_memory.expand_by
499503
sender_balance = get_account(
@@ -632,6 +636,10 @@ def delegatecall(evm: Evm) -> None:
632636
)
633637
charge_gas(evm, message_call_gas.cost + extend_memory.cost)
634638

639+
track_address_access(
640+
evm.message.block_env.state.change_tracker, code_address
641+
)
642+
635643
# OPERATION
636644
evm.memory += b"\x00" * extend_memory.expand_by
637645
generic_call(

0 commit comments

Comments
 (0)