diff --git a/eth/api_tracer.go b/eth/api_tracer.go index 80552ada8c..cc169f6121 100644 --- a/eth/api_tracer.go +++ b/eth/api_tracer.go @@ -653,9 +653,6 @@ func (api *PrivateDebugAPI) computeTxEnv(blockHash common.Hash, txIndex int, ree // Assemble the transaction call message and return if the requested offset msg, _ := tx.AsMessage(signer) context := core.NewEVMContext(msg, block.Header(), api.eth.blockchain, nil) - if idx == txIndex { - return msg, context, statedb, nil - } // Not yet the searched for transaction, execute on top of the current state vmenv := vm.NewEVM(context, statedb, api.config, vm.Config{}) if _, _, _, err := core.ApplyMessage(vmenv, msg, new(core.GasPool).AddGas(tx.Gas())); err != nil { @@ -663,6 +660,9 @@ func (api *PrivateDebugAPI) computeTxEnv(blockHash common.Hash, txIndex int, ree } // Ensure any modifications are committed to the state statedb.Finalise(true) + if idx == txIndex { + return msg, context, statedb, nil + } } return nil, vm.Context{}, nil, fmt.Errorf("tx index %d out of range for block %x", txIndex, blockHash) }