diff options
author | Maran <maran.hidskes@gmail.com> | 2014-04-01 20:42:48 +0800 |
---|---|---|
committer | Maran <maran.hidskes@gmail.com> | 2014-04-01 20:42:48 +0800 |
commit | 3558dd5ed4e14f124f04e2bf72fc3b989dff9e77 (patch) | |
tree | 29b2bb8bb267335c372cc8810671b350222d37bf | |
parent | 0a8801082676d64f904cbb5b62c1159e0bbd7788 (diff) | |
download | go-tangerine-3558dd5ed4e14f124f04e2bf72fc3b989dff9e77.tar.gz go-tangerine-3558dd5ed4e14f124f04e2bf72fc3b989dff9e77.tar.zst go-tangerine-3558dd5ed4e14f124f04e2bf72fc3b989dff9e77.zip |
Finalize blockchain reverting test
-rw-r--r-- | ethchain/block_chain.go | 22 |
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) |