|
@@ -771,14 +771,13 @@ func (self *BlockChain) WriteBlock(block *types.Block) (status WriteStatus, err
|
|
|
if ptd == nil {
|
|
if ptd == nil {
|
|
|
return NonStatTy, ParentError(block.ParentHash())
|
|
return NonStatTy, ParentError(block.ParentHash())
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- localTd := self.GetTd(self.currentBlock.Hash(), self.currentBlock.NumberU64())
|
|
|
|
|
- externTd := new(big.Int).Add(block.Difficulty(), ptd)
|
|
|
|
|
-
|
|
|
|
|
// Make sure no inconsistent state is leaked during insertion
|
|
// Make sure no inconsistent state is leaked during insertion
|
|
|
self.mu.Lock()
|
|
self.mu.Lock()
|
|
|
defer self.mu.Unlock()
|
|
defer self.mu.Unlock()
|
|
|
|
|
|
|
|
|
|
+ localTd := self.GetTd(self.currentBlock.Hash(), self.currentBlock.NumberU64())
|
|
|
|
|
+ externTd := new(big.Int).Add(block.Difficulty(), ptd)
|
|
|
|
|
+
|
|
|
// If the total difficulty is higher than our known, add it to the canonical chain
|
|
// If the total difficulty is higher than our known, add it to the canonical chain
|
|
|
// Second clause in the if statement reduces the vulnerability to selfish mining.
|
|
// Second clause in the if statement reduces the vulnerability to selfish mining.
|
|
|
// Please refer to http://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf
|
|
// Please refer to http://www.cs.cornell.edu/~ie53/publications/btcProcFC.pdf
|