mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-06-29 18:20:58 +02:00
replace ComputeMinWork with CheckMinWork
This commit is contained in:
23
src/pow.cpp
23
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)
|
||||
|
Reference in New Issue
Block a user