aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain
diff options
context:
space:
mode:
authorMaran <maran.hidskes@gmail.com>2014-04-01 20:42:48 +0800
committerMaran <maran.hidskes@gmail.com>2014-04-01 20:42:48 +0800
commit3558dd5ed4e14f124f04e2bf72fc3b989dff9e77 (patch)
tree29b2bb8bb267335c372cc8810671b350222d37bf /ethchain
parent0a8801082676d64f904cbb5b62c1159e0bbd7788 (diff)
downloaddexon-3558dd5ed4e14f124f04e2bf72fc3b989dff9e77.tar.gz
dexon-3558dd5ed4e14f124f04e2bf72fc3b989dff9e77.tar.zst
dexon-3558dd5ed4e14f124f04e2bf72fc3b989dff9e77.zip
Finalize blockchain reverting test
Diffstat (limited to 'ethchain')
-rw-r--r--ethchain/block_chain.go22
1 files changed, 14 insertions, 8 deletions
diff --git a/ethchain/block_chain.go b/ethchain/block_chain.go
index 8c03eec38..a8d9793d6 100644
--- a/ethchain/block_chain.go
+++ b/ethchain/block_chain.go
@@ -163,14 +163,20 @@ func (bc *BlockChain) FindCanonicalChain(blocks []*Block, commonBlockHash []byte
}
func (bc *BlockChain) ResetTillBlockHash(hash []byte) error {
lastBlock := bc.CurrentBlock
- returnTo := bc.GetBlock(hash)
-
- // TODO: REFACTOR TO FUNCTION, Used multiple times
- bc.CurrentBlock = returnTo
- bc.LastBlockHash = returnTo.Hash()
- info := bc.BlockInfo(returnTo)
- bc.LastBlockNumber = info.Number
- // END TODO
+ var returnTo *Block
+ // Reset to Genesis if that's all the origin there is.
+ if bytes.Compare(hash, bc.genesisBlock.Hash()) == 0 {
+ returnTo = bc.genesisBlock
+ bc.CurrentBlock = bc.genesisBlock
+ bc.LastBlockHash = bc.genesisBlock.Hash()
+ bc.LastBlockNumber = 1
+ } else {
+ returnTo = bc.GetBlock(hash)
+ bc.CurrentBlock = returnTo
+ bc.LastBlockHash = returnTo.Hash()
+ info := bc.BlockInfo(returnTo)
+ bc.LastBlockNumber = info.Number
+ }
bc.Ethereum.StateManager().PrepareDefault(returnTo)