diff options
author | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-07-01 18:57:13 +0800 |
---|---|---|
committer | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-07-01 18:57:13 +0800 |
commit | bb418a43c1b9ebf9a32006652b405f8e1cb3acd2 (patch) | |
tree | 379d6ecbefce1d317ca2646a072cfa6879890dbe /core | |
parent | 2e5242f9bbbf8412fa5b6e94da942e69570d860d (diff) | |
parent | 29ab1fa8a50db8aa16c5d707f1cab7dc201a4053 (diff) | |
download | dexon-bb418a43c1b9ebf9a32006652b405f8e1cb3acd2.tar.gz dexon-bb418a43c1b9ebf9a32006652b405f8e1cb3acd2.tar.zst dexon-bb418a43c1b9ebf9a32006652b405f8e1cb3acd2.zip |
Merge pull request #1370 from obscuren/force-checkpoint
core, cmd/geth: recover by number
Diffstat (limited to 'core')
-rw-r--r-- | core/chain_manager.go | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/core/chain_manager.go b/core/chain_manager.go index cdbdeb5ae..a7b57b26b 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -238,6 +238,16 @@ func (self *ChainManager) setTransState(statedb *state.StateDB) { self.transState = statedb } +func (bc *ChainManager) Recover(num uint64) { + block := bc.GetBlockByNumber(num) + if block != nil { + bc.insert(block) + glog.Infof("Recovery succesful. New HEAD %x\n", block.Hash()) + } else { + glog.Fatalln("Recovery failed") + } +} + func (bc *ChainManager) recover() bool { data, _ := bc.blockDb.Get([]byte("checkpoint")) if len(data) != 0 { @@ -261,8 +271,6 @@ func (bc *ChainManager) setLastState() { if len(data) != 0 { block := bc.GetBlock(common.BytesToHash(data)) if block != nil { - bc.blockDb.Put([]byte("checkpoint"), block.Hash().Bytes()) - bc.currentBlock = block bc.lastBlockHash = block.Hash() } else { |