From 7d15fa007548e64df36fc1f2aeb9b7c14c3d7db2 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Wed, 24 Jun 2026 17:41:47 +0200 Subject: [PATCH] bals: touch address on delegation --- core/state_transition.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/state_transition.go b/core/state_transition.go index 7a901cf707..daa278d2e9 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -766,6 +766,14 @@ func (st *stateTransition) execute() (*ExecutionResult, error) { // performing the resolution and warming. if addr, ok := types.ParseDelegation(st.state.GetCode(*msg.To)); ok { st.state.AddAddressToAccessList(addr) + // Resolving the delegation accesses the target account, which the + // EIP-7928 block access list must record even when the transaction + // later runs out of gas at the top-frame charge (the cold-access + // charge is levied for this access). Reading it here registers the + // access; AddAddressToAccessList alone does not. + if rules.IsAmsterdam { + st.state.GetCode(addr) + } } // EIP-2780: charge the transaction's top-level recipient costs. If the // budget cannot cover the charge, the top frame halts out of gas.