|
|
@@ -31,10 +31,16 @@ import (
|
|
|
// CalcDifficulty is the difficulty adjustment algorithm. It returns
|
|
|
// the difficulty that a new block b should have when created at time
|
|
|
// given the parent block's time and difficulty.
|
|
|
-func CalcDifficulty(time int64, parentTime int64, parentDiff *big.Int) *big.Int {
|
|
|
+func CalcDifficulty(time, parentTime uint64, parentDiff *big.Int) *big.Int {
|
|
|
diff := new(big.Int)
|
|
|
adjust := new(big.Int).Div(parentDiff, params.DifficultyBoundDivisor)
|
|
|
- if big.NewInt(time-parentTime).Cmp(params.DurationLimit) < 0 {
|
|
|
+ bigTime := new(big.Int)
|
|
|
+ bigParentTime := new(big.Int)
|
|
|
+
|
|
|
+ bigTime.SetUint64(time)
|
|
|
+ bigParentTime.SetUint64(parentTime)
|
|
|
+
|
|
|
+ if bigTime.Sub(bigTime, bigParentTime).Cmp(params.DurationLimit) < 0 {
|
|
|
diff.Add(parentDiff, adjust)
|
|
|
} else {
|
|
|
diff.Sub(parentDiff, adjust)
|