plugeth/core
Jeffrey Wilcke bb3651abc8 core/state, eth: Updated suicides objects when tracing transactions
Consensus rules dictate that objects can only be removed during the
finalisation of the transaction (i.e. after all calls have finished).
Thus calling a suicided contract twice from the same transaction:
A->B(S)->ret(A)->B(S) results in 2 suicides. Calling the suicided
object twice from two transactions: A->B(S), A->B, results in only one
suicide and a call to an empty object.

Our current debug tracing functionality replays all transaction that
were executed prior to the targetted transaction in order to provide
the user with an accurate trace.

As a side effect to calling StateDB.IntermediateRoot it also deletes any
suicides objects. Our tracing code never calls this function because it
isn't interested in the intermediate root. Becasue of this it caused a
bug in the tracing code where transactions that were send to priviously
deleted objects resulted in two suicides rather than one suicide and a
call to an empty object.

Fixes #2542
2016-06-13 11:57:42 +02:00
..
state core/state, eth: Updated suicides objects when tracing transactions 2016-06-13 11:57:42 +02:00
types eth: enable bad block reports 2016-05-25 02:02:51 +02:00
vm all: fix go vet warnings 2016-04-15 11:17:27 +02:00
.gitignore Renamed chain => core 2014-12-04 10:28:02 +01:00
asm.go all: fix go vet warnings 2016-04-15 11:17:27 +02:00
bench_test.go core: added basic chain configuration 2016-04-01 01:01:10 +02:00
block_validator_test.go accounts/a/b/backends, core: chain maker homestead block set to 0 2016-04-01 01:01:10 +02:00
block_validator.go core: fixed pointer assignment 2016-05-13 12:12:46 +02:00
blockchain_test.go accounts/a/b/backends, core: chain maker homestead block set to 0 2016-04-01 01:01:10 +02:00
blockchain.go core, core/state, trie: enterprise hand-tuned multi-level caching 2016-05-26 16:33:09 +03:00
blocks.go remove 0x 2015-08-20 18:50:47 +02:00
chain_makers_test.go accounts/a/b/backends, core: chain maker homestead block set to 0 2016-04-01 01:01:10 +02:00
chain_makers.go accounts/a/b/backends, core: chain maker homestead block set to 0 2016-04-01 01:01:10 +02:00
chain_pow_test.go core, eth: receipt chain reconstruction 2015-10-19 10:03:09 +03:00
chain_pow.go core: separate and contain POW verifier, extensive tests 2015-09-21 10:24:49 +03:00
config.go core: added basic chain configuration 2016-04-01 01:01:10 +02:00
database_util_test.go core, core/types, eth: add and use Block.Body 2016-04-15 10:57:37 +02:00
database_util.go core, core/types, eth: add and use Block.Body 2016-04-15 10:57:37 +02:00
default_genesis.go all: update license information 2016-04-15 09:48:05 +02:00
error.go Merge pull request #1889 from karalabe/fast-sync-rebase 2015-10-21 11:44:22 -07:00
events.go core, miner: add PendingStateEvent to track non-log updates 2016-02-29 11:24:58 +02:00
execution.go core: added basic chain configuration 2016-04-01 01:01:10 +02:00
fees.go Merge pull request #1515 from fjl/license-fixes 2015-07-28 04:29:42 -07:00
filter_test.go all: fix license headers one more time 2015-07-23 18:35:11 +02:00
gaspool.go all: update license information 2016-04-15 09:48:05 +02:00
genesis.go core, eth: added json tag field for proper unmarshalling 2016-04-25 12:48:31 +02:00
headerchain.go all: update license information 2016-04-15 09:48:05 +02:00
helper_test.go cmd/geth, cmd/utils, core, rpc: renamed to blockchain 2015-10-04 01:13:56 +02:00
state_processor.go all: update license information 2016-04-15 09:48:05 +02:00
state_transition.go core: transition db now also returns the required gas amount 2016-04-01 01:01:10 +02:00
tx_pool_test.go core: added basic chain configuration 2016-04-01 01:01:10 +02:00
tx_pool.go core: add missing lock in TxPool.{GetTransaction,RemoveTx} 2016-06-03 12:43:33 +02:00
types.go all: update license information 2016-04-15 09:48:05 +02:00
vm_env.go core: added basic chain configuration 2016-04-01 01:01:10 +02:00