From 7b173bd80f5eea9a9728d1177ce1b83960cd47d7 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Tue, 6 Sep 2016 23:03:36 +1200 Subject: [PATCH] Simplify difficulty averaging code --- src/pow.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/pow.cpp b/src/pow.cpp index 3e595d6f7..0af573222 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -26,15 +26,11 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead // Find the first block in the averaging interval const CBlockIndex* pindexFirst = pindexLast; - arith_uint256 bnAvg; - arith_uint256 bnTmp; + arith_uint256 bnTot {0}; for (int i = 0; pindexFirst && i < params.nPowAveragingWindow; i++) { - if (i == 0) { - bnAvg.SetCompact(pindexFirst->nBits); - } else { - bnTmp.SetCompact(pindexFirst->nBits); - bnAvg = ((bnAvg * i) + bnTmp) / (i + 1); - } + arith_uint256 bnTmp; + bnTmp.SetCompact(pindexFirst->nBits); + bnTot += bnTmp; pindexFirst = pindexFirst->pprev; } @@ -42,6 +38,8 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead if (pindexFirst == NULL) return nProofOfWorkLimit; + arith_uint256 bnAvg {bnTot / params.nPowAveragingWindow}; + return CalculateNextWorkRequired(bnAvg, pindexLast->GetMedianTimePast(), pindexFirst->GetMedianTimePast(), params); }