aboutsummaryrefslogtreecommitdiffstats
path: root/eth
diff options
context:
space:
mode:
authorMartin Holst Swende <martin@swende.se>2019-02-01 17:30:59 +0800
committerMartin Holst Swende <martin@swende.se>2019-02-10 00:35:54 +0800
commit631e2f07f62372106964352a03a2f793d2fe94dc (patch)
tree6b51cf7dfea99ca031f45ad22eff0dccf7c6d958 /eth
parent7fa3509e2eaf1a4ebc12344590e5699406690f15 (diff)
downloaddexon-631e2f07f62372106964352a03a2f793d2fe94dc.tar
dexon-631e2f07f62372106964352a03a2f793d2fe94dc.tar.gz
dexon-631e2f07f62372106964352a03a2f793d2fe94dc.tar.bz2
dexon-631e2f07f62372106964352a03a2f793d2fe94dc.tar.lz
dexon-631e2f07f62372106964352a03a2f793d2fe94dc.tar.xz
dexon-631e2f07f62372106964352a03a2f793d2fe94dc.tar.zst
dexon-631e2f07f62372106964352a03a2f793d2fe94dc.zip
eth: make tracers respect pre- EIP 158/161 rule
Diffstat (limited to 'eth')
-rw-r--r--eth/api_tracer.go12
1 files changed, 8 insertions, 4 deletions
diff --git a/eth/api_tracer.go b/eth/api_tracer.go
index 0b8f8aa00..a3a0b4e1e 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()
@@ -608,7 +610,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 {
@@ -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)
}
// 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)
}