|
|
|
@ -76,7 +76,8 @@ unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nF
@@ -76,7 +76,8 @@ unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nF
|
|
|
|
|
bnNew.SetCompact(pindexLast->nBits); |
|
|
|
|
bnOld = bnNew; |
|
|
|
|
// Litecoin: intermediate uint256 can overflow by 1 bit
|
|
|
|
|
bool fShift = bnNew.bits() > 235; |
|
|
|
|
const arith_uint256 bnPowLimit = UintToArith256(params.powLimit); |
|
|
|
|
bool fShift = bnNew.bits() > bnPowLimit.bits() - 1; |
|
|
|
|
if (fShift) |
|
|
|
|
bnNew >>= 1; |
|
|
|
|
bnNew *= nActualTimespan; |
|
|
|
@ -84,7 +85,6 @@ unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nF
@@ -84,7 +85,6 @@ unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nF
|
|
|
|
|
if (fShift) |
|
|
|
|
bnNew <<= 1; |
|
|
|
|
|
|
|
|
|
const arith_uint256 bnPowLimit = UintToArith256(params.powLimit); |
|
|
|
|
if (bnNew > bnPowLimit) |
|
|
|
|
bnNew = bnPowLimit; |
|
|
|
|
|
|
|
|
|