From 1cd9d4dec788af6a30b90a785a077a417e80c23a Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Wed, 11 Mar 2026 13:15:36 +0100 Subject: [PATCH] core/vm: check readonly guard before charging for access list --- core/vm/operations_acl.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/core/vm/operations_acl.go b/core/vm/operations_acl.go index 57fb6eab98..33df23d5af 100644 --- a/core/vm/operations_acl.go +++ b/core/vm/operations_acl.go @@ -165,6 +165,12 @@ func makeCallVariantGasCall(oldCalculatorStateful, oldCalculatorStateless gasFun err error ) + // Compute stateless gas (memory expansion, value transfer) + eip150BaseGas, err := oldCalculatorStateless(evm, contract, stack, mem, memorySize) + if err != nil { + return 0, err + } + // EIP-2929: cold/warm access list charge if evm.chainRules.IsEIP2929 && !evm.StateDB.AddressInAccessList(addr) { evm.StateDB.AddAddressToAccessList(addr) @@ -179,12 +185,6 @@ func makeCallVariantGasCall(oldCalculatorStateful, oldCalculatorStateless gasFun eip2929Gas = coldCost } - // Compute stateless gas (memory expansion, value transfer) - eip150BaseGas, err := oldCalculatorStateless(evm, contract, stack, mem, memorySize) - if err != nil { - return 0, err - } - // Ensure the stateless portion is covered if contract.Gas < eip150BaseGas { return 0, ErrOutOfGas