From 53c1500ff838b765d41c6baad0b3452ba288104a Mon Sep 17 00:00:00 2001 From: Kevin Yang <5478483+k-yang@users.noreply.github.com> Date: Mon, 27 Jan 2025 15:50:08 -0500 Subject: [PATCH] fix: move commit after gas refund calculation so that we can return a valid evmResp --- x/evm/keeper/msg_server.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/x/evm/keeper/msg_server.go b/x/evm/keeper/msg_server.go index d00c9610e..745838d26 100644 --- a/x/evm/keeper/msg_server.go +++ b/x/evm/keeper/msg_server.go @@ -347,13 +347,6 @@ func (k *Keeper) ApplyEvmMsg( vmError = vmErr.Error() } - // The dirty states in `StateDB` is either committed or discarded after return - if commit { - if err := evmObj.StateDB.(*statedb.StateDB).Commit(); err != nil { - return nil, errors.Wrap(err, "ApplyEvmMsg: failed to commit stateDB") - } - } - // TODO: UD-DEBUG: Clarify text below. // GAS REFUND // If msg.Gas() > gasUsed, we need to refund extra gas. @@ -387,6 +380,14 @@ func (k *Keeper) ApplyEvmMsg( if gasRemaining > msg.Gas() { return evmResp, errors.Wrapf(core.ErrGasUintOverflow, "ApplyEvmMsg: message gas limit (%d) < leftover gas (%d)", msg.Gas(), gasRemaining) } + + // The dirty states in `StateDB` is either committed or discarded after return + if commit { + if err := evmObj.StateDB.(*statedb.StateDB).Commit(); err != nil { + return evmResp, errors.Wrap(err, "ApplyEvmMsg: failed to commit stateDB") + } + } + return evmResp, nil }