diff options
author | Ross Nicoll <jrn@jrn.me.uk> | 2015-02-21 12:57:44 +0000 |
---|---|---|
committer | Ross Nicoll <jrn@jrn.me.uk> | 2015-02-21 13:14:19 +0000 |
commit | 34e5015cd21e27c1bf635d92531afac93f553096 (patch) | |
tree | 0497bd7f74f211fd261ec173225ab8eca1760fdb /src/pow.cpp | |
parent | aaba10f275059cd762c1f07597aa5efb24176cdd (diff) |
Add unit tests for next difficulty calculations
Split GetNextWorkRequired() into two functions to allow the difficulty calculations to
be tested without requiring a full blockchain.
Add unit tests to cover basic difficulty calculation, plus each of the min/max actual
time, and maximum difficulty target conditions.
Diffstat (limited to 'src/pow.cpp')
-rw-r--r-- | src/pow.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/pow.cpp b/src/pow.cpp index 6dd5c4c12c..b75b293c90 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -48,8 +48,13 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead pindexFirst = pindexFirst->pprev; assert(pindexFirst); + return CalculateNextWorkRequired(pindexLast, pindexFirst->GetBlockTime()); +} + +unsigned int CalculateNextWorkRequired(const CBlockIndex* pindexLast, int64_t nFirstBlockTime) +{ // Limit adjustment step - int64_t nActualTimespan = pindexLast->GetBlockTime() - pindexFirst->GetBlockTime(); + int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime; LogPrintf(" nActualTimespan = %d before bounds\n", nActualTimespan); if (nActualTimespan < Params().TargetTimespan()/4) nActualTimespan = Params().TargetTimespan()/4; |