This commit is contained in:
Péter Szilágyi 2017-10-03 12:25:25 +00:00 committed by GitHub
commit f60baa9a7c

View file

@ -792,15 +792,14 @@ func (bc *BlockChain) WriteBlockAndState(block *types.Block, receipts []*types.R
if ptd == nil { if ptd == nil {
return NonStatTy, consensus.ErrUnknownAncestor return NonStatTy, consensus.ErrUnknownAncestor
} }
// If the block is already known, skip it
if bc.HasBlockAndState(block.Hash()) {
return SideStatTy, nil
}
// Make sure no inconsistent state is leaked during insertion // Make sure no inconsistent state is leaked during insertion
bc.mu.Lock() bc.mu.Lock()
defer bc.mu.Unlock() defer bc.mu.Unlock()
if bc.HasBlock(block.Hash(), block.NumberU64()) {
log.Trace("Block existed", "hash", block.Hash())
return
}
localTd := bc.GetTd(bc.currentBlock.Hash(), bc.currentBlock.NumberU64()) localTd := bc.GetTd(bc.currentBlock.Hash(), bc.currentBlock.NumberU64())
externTd := new(big.Int).Add(block.Difficulty(), ptd) externTd := new(big.Int).Add(block.Difficulty(), ptd)