|
|
@ -214,7 +214,8 @@ func (api *PrivateDebugAPI) traceChain(ctx context.Context, start, end *types.Bl |
|
|
|
log.Warn("Tracing failed", "hash", tx.Hash(), "block", task.block.NumberU64(), "err", err) |
|
|
|
log.Warn("Tracing failed", "hash", tx.Hash(), "block", task.block.NumberU64(), "err", err) |
|
|
|
break |
|
|
|
break |
|
|
|
} |
|
|
|
} |
|
|
|
task.statedb.Finalise(true) |
|
|
|
// Only delete empty objects if EIP158/161 (a.k.a Spurious Dragon) is in effect
|
|
|
|
|
|
|
|
task.statedb.Finalise(api.eth.blockchain.Config().IsEIP158(task.block.Number())) |
|
|
|
task.results[i] = &txTraceResult{Result: res} |
|
|
|
task.results[i] = &txTraceResult{Result: res} |
|
|
|
} |
|
|
|
} |
|
|
|
// Stream the result back to the user or abort on teardown
|
|
|
|
// Stream the result back to the user or abort on teardown
|
|
|
@ -506,7 +507,8 @@ func (api *PrivateDebugAPI) traceBlock(ctx context.Context, block *types.Block, |
|
|
|
break |
|
|
|
break |
|
|
|
} |
|
|
|
} |
|
|
|
// Finalize the state so any modifications are written to the trie
|
|
|
|
// Finalize the state so any modifications are written to the trie
|
|
|
|
statedb.Finalise(true) |
|
|
|
// Only delete empty objects if EIP158/161 (a.k.a Spurious Dragon) is in effect
|
|
|
|
|
|
|
|
statedb.Finalise(vmenv.ChainConfig().IsEIP158(block.Number())) |
|
|
|
} |
|
|
|
} |
|
|
|
close(jobs) |
|
|
|
close(jobs) |
|
|
|
pend.Wait() |
|
|
|
pend.Wait() |
|
|
@ -608,7 +610,8 @@ func (api *PrivateDebugAPI) standardTraceBlockToFile(ctx context.Context, block |
|
|
|
return dumps, err |
|
|
|
return dumps, err |
|
|
|
} |
|
|
|
} |
|
|
|
// Finalize the state so any modifications are written to the trie
|
|
|
|
// Finalize the state so any modifications are written to the trie
|
|
|
|
statedb.Finalise(true) |
|
|
|
// Only delete empty objects if EIP158/161 (a.k.a Spurious Dragon) is in effect
|
|
|
|
|
|
|
|
statedb.Finalise(vmenv.ChainConfig().IsEIP158(block.Number())) |
|
|
|
|
|
|
|
|
|
|
|
// If we've traced the transaction we were looking for, abort
|
|
|
|
// If we've traced the transaction we were looking for, abort
|
|
|
|
if tx.Hash() == txHash { |
|
|
|
if tx.Hash() == txHash { |
|
|
@ -799,7 +802,8 @@ func (api *PrivateDebugAPI) computeTxEnv(blockHash common.Hash, txIndex int, ree |
|
|
|
return nil, vm.Context{}, nil, fmt.Errorf("transaction %#x failed: %v", tx.Hash(), err) |
|
|
|
return nil, vm.Context{}, nil, fmt.Errorf("transaction %#x failed: %v", tx.Hash(), err) |
|
|
|
} |
|
|
|
} |
|
|
|
// Ensure any modifications are committed to the state
|
|
|
|
// Ensure any modifications are committed to the state
|
|
|
|
statedb.Finalise(true) |
|
|
|
// Only delete empty objects if EIP158/161 (a.k.a Spurious Dragon) is in effect
|
|
|
|
|
|
|
|
statedb.Finalise(vmenv.ChainConfig().IsEIP158(block.Number())) |
|
|
|
} |
|
|
|
} |
|
|
|
return nil, vm.Context{}, nil, fmt.Errorf("transaction index %d out of range for block %#x", txIndex, blockHash) |
|
|
|
return nil, vm.Context{}, nil, fmt.Errorf("transaction index %d out of range for block %#x", txIndex, blockHash) |
|
|
|
} |
|
|
|
} |
|
|
|