|
|
|
@ -592,11 +592,11 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac |
|
|
|
|
if threads > len(txs) { |
|
|
|
|
threads = len(txs) |
|
|
|
|
} |
|
|
|
|
blockCtx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) |
|
|
|
|
blockHash := block.Hash() |
|
|
|
|
for th := 0; th < threads; th++ { |
|
|
|
|
pend.Add(1) |
|
|
|
|
go func() { |
|
|
|
|
blockCtx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) |
|
|
|
|
defer pend.Done() |
|
|
|
|
// Fetch and execute the next transaction trace tasks
|
|
|
|
|
for task := range jobs { |
|
|
|
@ -617,6 +617,7 @@ func (api *API) traceBlock(ctx context.Context, block *types.Block, config *Trac |
|
|
|
|
} |
|
|
|
|
// Feed the transactions into the tracers and return
|
|
|
|
|
var failed error |
|
|
|
|
blockCtx := core.NewEVMBlockContext(block.Header(), api.chainContext(ctx), nil) |
|
|
|
|
for i, tx := range txs { |
|
|
|
|
// Send the trace task over for execution
|
|
|
|
|
jobs <- &txTraceTask{statedb: statedb.Copy(), index: i} |
|
|
|
|