From efaf976bf698ffebcfd051949ff6833ccc7fe827 Mon Sep 17 00:00:00 2001 From: barryz Date: Thu, 27 May 2021 19:46:55 +0800 Subject: [PATCH] fill essential info into struct trace logger --- eth/api_pre_exec.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/eth/api_pre_exec.go b/eth/api_pre_exec.go index 5e17f148e6..5ccd62b4cd 100644 --- a/eth/api_pre_exec.go +++ b/eth/api_pre_exec.go @@ -186,6 +186,21 @@ func (api *PreExecAPI) TraceTransaction(ctx context.Context, origin *PreExecTx, // Call Prepare to clear out the statedb access list d.stateDb.Prepare(d.tx.Hash(), d.block.Hash(), txIndex) + // check if type of tracer is txtrace.StructLogger, in that case, fill info. + var traceLogger *txtrace.StructLogger + switch tracer.(type) { + case *txtrace.StructLogger: + traceLogger = tracer.(*txtrace.StructLogger) + traceLogger.SetFrom(d.msg.From()) + traceLogger.SetTo(d.msg.To()) + traceLogger.SetValue(*d.msg.Value()) + traceLogger.SetGasUsed(d.tx.Gas()) + traceLogger.SetBlockHash(d.block.Hash()) + traceLogger.SetBlockNumber(d.block.Number()) + traceLogger.SetTx(d.tx.Hash()) + traceLogger.SetTxIndex(uint(txIndex)) + } + result, err := core.ApplyMessage(vmenv, d.msg, new(core.GasPool).AddGas(d.msg.Gas())) if err != nil { return nil, fmt.Errorf("tracing failed: %v", err)