Преглед на файлове

Fixed difficulty

Difficulty was broken when refactored.
obscuren преди 10 години
родител
ревизия
7394ee7c72
променени са 2 файла, в които са добавени 5 реда и са изтрити 7 реда
  1. 1 2
      core/block_processor.go
  2. 4 5
      core/chain_manager.go

+ 1 - 2
core/block_processor.go

@@ -242,8 +242,7 @@ func (sm *BlockProcessor) ValidateBlock(block, parent *types.Block) error {
 	}
 
 	expd := CalcDifficulty(block, parent)
-	if expd.Cmp(block.Header().Difficulty) < 0 {
-		fmt.Println("parent\n", parent)
+	if expd.Cmp(block.Header().Difficulty) != 0 {
 		return fmt.Errorf("Difficulty check failed for block %v, %v", block.Header().Difficulty, expd)
 	}
 

+ 4 - 5
core/chain_manager.go

@@ -23,12 +23,11 @@ type StateQuery interface {
 func CalcDifficulty(block, parent *types.Block) *big.Int {
 	diff := new(big.Int)
 
-	bh, ph := block.Header(), parent.Header()
-	adjust := new(big.Int).Rsh(ph.Difficulty, 10)
-	if bh.Time >= ph.Time+13 {
-		diff.Sub(ph.Difficulty, adjust)
+	adjust := new(big.Int).Rsh(parent.Difficulty(), 10)
+	if block.Time() >= parent.Time()+8 {
+		diff.Sub(parent.Difficulty(), adjust)
 	} else {
-		diff.Add(ph.Difficulty, adjust)
+		diff.Add(parent.Difficulty(), adjust)
 	}
 
 	return diff