forked from cerc-io/plugeth
Merge pull request #975 from obscuren/develop
core: changed log message for forks. closes #952
This commit is contained in:
commit
3ac34ee3c4
@ -573,13 +573,6 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) {
|
||||
if block.Td.Cmp(self.td) > 0 {
|
||||
// Check for chain forks. If H(block.num - 1) != block.parent, we're on a fork and need to do some merging
|
||||
if previous := self.getBlockByNumber(block.NumberU64() - 1); previous.Hash() != block.ParentHash() {
|
||||
chash := cblock.Hash()
|
||||
hash := block.Hash()
|
||||
|
||||
if glog.V(logger.Info) {
|
||||
glog.Infof("Split detected. New head #%v (%x) TD=%v, was #%v (%x) TD=%v\n", block.Header().Number, hash[:4], block.Td, cblock.Header().Number, chash[:4], self.td)
|
||||
}
|
||||
|
||||
// during split we merge two different chains and create the new canonical chain
|
||||
self.merge(previous, block)
|
||||
|
||||
@ -636,17 +629,21 @@ func (self *ChainManager) InsertChain(chain types.Blocks) (int, error) {
|
||||
// diff takes two blocks, an old chain and a new chain and will reconstruct the blocks and inserts them
|
||||
// to be part of the new canonical chain.
|
||||
func (self *ChainManager) diff(oldBlock, newBlock *types.Block) types.Blocks {
|
||||
glog.V(logger.Debug).Infof("Applying diff to %x & %x\n", oldBlock.Hash().Bytes()[:4], newBlock.Hash().Bytes()[:4])
|
||||
|
||||
var newChain types.Blocks
|
||||
var (
|
||||
newChain types.Blocks
|
||||
commonBlock *types.Block
|
||||
oldStart = oldBlock
|
||||
newStart = newBlock
|
||||
)
|
||||
// first find common number
|
||||
for newBlock = newBlock; newBlock.NumberU64() != oldBlock.NumberU64(); newBlock = self.GetBlock(newBlock.ParentHash()) {
|
||||
newChain = append(newChain, newBlock)
|
||||
}
|
||||
|
||||
glog.V(logger.Debug).Infoln("Found common number", newBlock.Number())
|
||||
numSplit := newBlock.Number()
|
||||
for {
|
||||
if oldBlock.Hash() == newBlock.Hash() {
|
||||
commonBlock = oldBlock
|
||||
break
|
||||
}
|
||||
newChain = append(newChain, newBlock)
|
||||
@ -654,6 +651,11 @@ func (self *ChainManager) diff(oldBlock, newBlock *types.Block) types.Blocks {
|
||||
oldBlock, newBlock = self.GetBlock(oldBlock.ParentHash()), self.GetBlock(newBlock.ParentHash())
|
||||
}
|
||||
|
||||
if glog.V(logger.Info) {
|
||||
commonHash := commonBlock.Hash()
|
||||
glog.Infof("Fork detected @ %x. Reorganising chain from #%v %x to %x", commonHash[:4], numSplit, oldStart.Hash().Bytes()[:4], newStart.Hash().Bytes()[:4])
|
||||
}
|
||||
|
||||
return newChain
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user