diff options
author | jtimon <jtimon@monetize.io> | 2014-06-20 20:55:42 +0200 |
---|---|---|
committer | jtimon <jtimon@monetize.io> | 2014-08-23 13:21:51 +0200 |
commit | 654871d43677947d124673c9e0dd2984f0d3ca61 (patch) | |
tree | 7a8cdc2a1ef9f46ddecea998a07936f3a1481926 /src/pow.cpp | |
parent | b343c1a1e34f851e70649ad1f49855a7d878f9ef (diff) |
replace ComputeMinWork with CheckMinWork
Diffstat (limited to 'src/pow.cpp')
-rw-r--r-- | src/pow.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/pow.cpp b/src/pow.cpp index d76928bda2..1d2b743b48 100644 --- a/src/pow.cpp +++ b/src/pow.cpp @@ -94,29 +94,36 @@ bool CheckProofOfWork(uint256 hash, unsigned int nBits) } // -// minimum amount of work that could possibly be required nTime after -// minimum work required was nBase +// true if nBits is greater than the minimum amount of work that could +// possibly be required deltaTime after minimum work required was nBase // -unsigned int ComputeMinWork(unsigned int nBase, int64_t nTime) +bool CheckMinWork(unsigned int nBits, unsigned int nBase, int64_t deltaTime) { + bool fOverflow = false; + uint256 bnNewBlock; + bnNewBlock.SetCompact(nBits, NULL, &fOverflow); + if (fOverflow) + return false; + const uint256 &bnLimit = Params().ProofOfWorkLimit(); // Testnet has min-difficulty blocks // after Params().TargetSpacing()*2 time between blocks: - if (Params().AllowMinDifficultyBlocks() && nTime > Params().TargetSpacing()*2) - return bnLimit.GetCompact(); + if (Params().AllowMinDifficultyBlocks() && deltaTime > Params().TargetSpacing()*2) + return bnNewBlock <= bnLimit; uint256 bnResult; bnResult.SetCompact(nBase); - while (nTime > 0 && bnResult < bnLimit) + while (deltaTime > 0 && bnResult < bnLimit) { // Maximum 400% adjustment... bnResult *= 4; // ... in best-case exactly 4-times-normal target time - nTime -= Params().TargetTimespan()*4; + deltaTime -= Params().TargetTimespan()*4; } if (bnResult > bnLimit) bnResult = bnLimit; - return bnResult.GetCompact(); + + return bnNewBlock <= bnResult; } void UpdateTime(CBlockHeader* pblock, const CBlockIndex* pindexPrev) |