diff options
author | Martin Holst Swende <martin@swende.se> | 2019-02-01 17:30:59 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-02-01 17:30:59 +0800 |
commit | 05d21438debbb6a4edf2c14cfbe7db5b868f9162 (patch) | |
tree | 4910e51cfe29d1dcc397f16aa341d565e554b0df | |
parent | 597597e8b27ee60a25b4533771702892e72898a5 (diff) | |
download | go-tangerine-05d21438debbb6a4edf2c14cfbe7db5b868f9162.tar go-tangerine-05d21438debbb6a4edf2c14cfbe7db5b868f9162.tar.gz go-tangerine-05d21438debbb6a4edf2c14cfbe7db5b868f9162.tar.bz2 go-tangerine-05d21438debbb6a4edf2c14cfbe7db5b868f9162.tar.lz go-tangerine-05d21438debbb6a4edf2c14cfbe7db5b868f9162.tar.xz go-tangerine-05d21438debbb6a4edf2c14cfbe7db5b868f9162.tar.zst go-tangerine-05d21438debbb6a4edf2c14cfbe7db5b868f9162.zip |
eth: make tracers respect pre- EIP 158/161 rule
-rw-r--r-- | eth/api_tracer.go | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/eth/api_tracer.go b/eth/api_tracer.go index 5096150c3..7aa48b256 100644 --- a/eth/api_tracer.go +++ b/eth/api_tracer.go @@ -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) 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} } // 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 } // 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) pend.Wait() @@ -612,7 +614,8 @@ func (api *PrivateDebugAPI) standardTraceBlockToFile(ctx context.Context, block return dumps, err } // 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 tx.Hash() == txHash { @@ -803,7 +806,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) } // 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) } |