From e0c3db0de47ba3b12c45d0e9a7bf45896d2d7d51 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Fri, 28 Jun 2024 10:18:39 +0200 Subject: [PATCH] core/vm: mark the correct address as touched --- core/vm/eips.go | 6 +++--- core/vm/operations_acl.go | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/core/vm/eips.go b/core/vm/eips.go index 10805cdbab..2cf292ee9e 100644 --- a/core/vm/eips.go +++ b/core/vm/eips.go @@ -725,14 +725,14 @@ func enableEOF(jt *JumpTable) { jt[EXTCALL] = &operation{ execute: opExtCall, constantGas: params.WarmStorageReadCostEIP2929, - dynamicGas: makeCallVariantGasCallEIP2929(gasExtCall), + dynamicGas: makeCallVariantGasCallEIP2929(gasExtCall, 0), minStack: minStack(4, 1), maxStack: maxStack(4, 1), memorySize: memoryExtCall, } jt[EXTDELEGATECALL] = &operation{ execute: opExtDelegateCall, - dynamicGas: makeCallVariantGasCallEIP2929(gasExtDelegateCall), + dynamicGas: makeCallVariantGasCallEIP2929(gasExtDelegateCall, 0), constantGas: params.WarmStorageReadCostEIP2929, minStack: minStack(3, 1), maxStack: maxStack(3, 1), @@ -741,7 +741,7 @@ func enableEOF(jt *JumpTable) { jt[EXTSTATICCALL] = &operation{ execute: opExtStaticCall, constantGas: params.WarmStorageReadCostEIP2929, - dynamicGas: makeCallVariantGasCallEIP2929(gasExtStaticCall), + dynamicGas: makeCallVariantGasCallEIP2929(gasExtStaticCall, 0), minStack: minStack(3, 1), maxStack: maxStack(3, 1), memorySize: memoryExtStaticCall, diff --git a/core/vm/operations_acl.go b/core/vm/operations_acl.go index f5ed13f55b..432ffe3a52 100644 --- a/core/vm/operations_acl.go +++ b/core/vm/operations_acl.go @@ -159,9 +159,9 @@ func gasEip2929AccountCheck(evm *EVM, contract *Contract, stack *Stack, mem *Mem return 0, nil } -func makeCallVariantGasCallEIP2929(oldCalculator gasFunc) gasFunc { +func makeCallVariantGasCallEIP2929(oldCalculator gasFunc, addrPosition int) gasFunc { return func(evm *EVM, contract *Contract, stack *Stack, mem *Memory, memorySize uint64) (uint64, error) { - addr := common.Address(stack.Back(1).Bytes20()) + addr := common.Address(stack.Back(addrPosition).Bytes20()) // Check slot presence in the access list warmAccess := evm.StateDB.AddressInAccessList(addr) // The WarmStorageReadCostEIP2929 (100) is already deducted in the form of a constant cost, so @@ -199,10 +199,10 @@ func makeCallVariantGasCallEIP2929(oldCalculator gasFunc) gasFunc { } var ( - gasCallEIP2929 = makeCallVariantGasCallEIP2929(gasCall) - gasDelegateCallEIP2929 = makeCallVariantGasCallEIP2929(gasDelegateCall) - gasStaticCallEIP2929 = makeCallVariantGasCallEIP2929(gasStaticCall) - gasCallCodeEIP2929 = makeCallVariantGasCallEIP2929(gasCallCode) + gasCallEIP2929 = makeCallVariantGasCallEIP2929(gasCall, 1) + gasDelegateCallEIP2929 = makeCallVariantGasCallEIP2929(gasDelegateCall, 1) + gasStaticCallEIP2929 = makeCallVariantGasCallEIP2929(gasStaticCall, 1) + gasCallCodeEIP2929 = makeCallVariantGasCallEIP2929(gasCallCode, 1) gasSelfdestructEIP2929 = makeSelfdestructGasFn(true) // gasSelfdestructEIP3529 implements the changes in EIP-3529 (no refunds) gasSelfdestructEIP3529 = makeSelfdestructGasFn(false)