From 6ed41d9d83e67a71523411669f0841a4d83314c2 Mon Sep 17 00:00:00 2001 From: Marius van der Wijden Date: Tue, 10 Mar 2026 13:46:27 +0100 Subject: [PATCH] core/vm: fix create refunds --- core/vm/evm.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/vm/evm.go b/core/vm/evm.go index dbe183a34e..10ef39ce92 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -594,10 +594,13 @@ func (evm *EVM) create(caller common.Address, code []byte, gas GasCosts, value * if err != nil && (evm.chainRules.IsHomestead || err != ErrCodeStoreOutOfGas) { evm.StateDB.RevertToSnapshot(snapshot) - // On ExceptionalHalt, burn all remaining gas. On REVERT, preserve - // remaining regular gas (same as CALL paths). + // On ExceptionalHalt, burn remaining regular gas. On REVERT, preserve + // remaining regular gas. State gas is always preserved. if err != ErrExecutionReverted { - contract.UseGas(contract.Gas, evm.Config.Tracer, tracing.GasChangeCallFailedExecution) + if evm.Config.Tracer != nil && evm.Config.Tracer.OnGasChange != nil { + evm.Config.Tracer.OnGasChange(contract.Gas.RegularGas, 0, tracing.GasChangeCallFailedExecution) + } + contract.Gas.RegularGas = 0 } } return ret, address, contract.Gas, err