|
@@ -520,7 +520,7 @@ func (c *Clique) Prepare(chain consensus.ChainHeaderReader, header *types.Header
|
|
|
c.lock.RUnlock()
|
|
c.lock.RUnlock()
|
|
|
}
|
|
}
|
|
|
// Set the correct difficulty
|
|
// Set the correct difficulty
|
|
|
- header.Difficulty = CalcDifficulty(snap, c.signer)
|
|
|
|
|
|
|
+ header.Difficulty = calcDifficulty(snap, c.signer)
|
|
|
|
|
|
|
|
// Ensure the extra data has all its components
|
|
// Ensure the extra data has all its components
|
|
|
if len(header.Extra) < extraVanity {
|
|
if len(header.Extra) < extraVanity {
|
|
@@ -652,20 +652,18 @@ func (c *Clique) Seal(chain consensus.ChainHeaderReader, block *types.Block, res
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// CalcDifficulty is the difficulty adjustment algorithm. It returns the difficulty
|
|
// CalcDifficulty is the difficulty adjustment algorithm. It returns the difficulty
|
|
|
-// that a new block should have based on the previous blocks in the chain and the
|
|
|
|
|
-// current signer.
|
|
|
|
|
|
|
+// that a new block should have:
|
|
|
|
|
+// * DIFF_NOTURN(2) if BLOCK_NUMBER % SIGNER_COUNT != SIGNER_INDEX
|
|
|
|
|
+// * DIFF_INTURN(1) if BLOCK_NUMBER % SIGNER_COUNT == SIGNER_INDEX
|
|
|
func (c *Clique) CalcDifficulty(chain consensus.ChainHeaderReader, time uint64, parent *types.Header) *big.Int {
|
|
func (c *Clique) CalcDifficulty(chain consensus.ChainHeaderReader, time uint64, parent *types.Header) *big.Int {
|
|
|
snap, err := c.snapshot(chain, parent.Number.Uint64(), parent.Hash(), nil)
|
|
snap, err := c.snapshot(chain, parent.Number.Uint64(), parent.Hash(), nil)
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
- return CalcDifficulty(snap, c.signer)
|
|
|
|
|
|
|
+ return calcDifficulty(snap, c.signer)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-// CalcDifficulty is the difficulty adjustment algorithm. It returns the difficulty
|
|
|
|
|
-// that a new block should have based on the previous blocks in the chain and the
|
|
|
|
|
-// current signer.
|
|
|
|
|
-func CalcDifficulty(snap *Snapshot, signer common.Address) *big.Int {
|
|
|
|
|
|
|
+func calcDifficulty(snap *Snapshot, signer common.Address) *big.Int {
|
|
|
if snap.inturn(snap.Number+1, signer) {
|
|
if snap.inturn(snap.Number+1, signer) {
|
|
|
return new(big.Int).Set(diffInTurn)
|
|
return new(big.Int).Set(diffInTurn)
|
|
|
}
|
|
}
|