Add AllowMinDifficultyBlocks chain parameter
This commit is contained in:
parent
d754f34e8d
commit
21913a9ac9
4 changed files with 8 additions and 4 deletions
|
@ -224,6 +224,8 @@ public:
|
||||||
base58Prefixes[EXT_PUBLIC_KEY] = list_of(0x04)(0x35)(0x87)(0xCF);
|
base58Prefixes[EXT_PUBLIC_KEY] = list_of(0x04)(0x35)(0x87)(0xCF);
|
||||||
base58Prefixes[EXT_SECRET_KEY] = list_of(0x04)(0x35)(0x83)(0x94);
|
base58Prefixes[EXT_SECRET_KEY] = list_of(0x04)(0x35)(0x83)(0x94);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
virtual bool AllowMinDifficultyBlocks() const { return true; }
|
||||||
virtual Network NetworkID() const { return CChainParams::TESTNET; }
|
virtual Network NetworkID() const { return CChainParams::TESTNET; }
|
||||||
};
|
};
|
||||||
static CTestNetParams testNetParams;
|
static CTestNetParams testNetParams;
|
||||||
|
|
|
@ -70,6 +70,8 @@ public:
|
||||||
virtual bool MiningRequiresPeers() const { return true; }
|
virtual bool MiningRequiresPeers() const { return true; }
|
||||||
/* Default value for -checkmempool argument */
|
/* Default value for -checkmempool argument */
|
||||||
virtual bool DefaultCheckMemPool() const { return false; }
|
virtual bool DefaultCheckMemPool() const { return false; }
|
||||||
|
/* Allow mining of a min-difficulty block */
|
||||||
|
virtual bool AllowMinDifficultyBlocks() const { return false; }
|
||||||
const string& DataDir() const { return strDataDir; }
|
const string& DataDir() const { return strDataDir; }
|
||||||
/* Make miner stop after a block is found. In RPC, don't return
|
/* Make miner stop after a block is found. In RPC, don't return
|
||||||
* until nGenProcLimit blocks are generated */
|
* until nGenProcLimit blocks are generated */
|
||||||
|
|
|
@ -1210,7 +1210,7 @@ unsigned int ComputeMinWork(unsigned int nBase, int64_t nTime)
|
||||||
const uint256 &bnLimit = Params().ProofOfWorkLimit();
|
const uint256 &bnLimit = Params().ProofOfWorkLimit();
|
||||||
// Testnet has min-difficulty blocks
|
// Testnet has min-difficulty blocks
|
||||||
// after nTargetSpacing*2 time between blocks:
|
// after nTargetSpacing*2 time between blocks:
|
||||||
if (TestNet() && nTime > nTargetSpacing*2)
|
if (Params().AllowMinDifficultyBlocks() && nTime > nTargetSpacing*2)
|
||||||
return bnLimit.GetCompact();
|
return bnLimit.GetCompact();
|
||||||
|
|
||||||
uint256 bnResult;
|
uint256 bnResult;
|
||||||
|
@ -1238,7 +1238,7 @@ unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHead
|
||||||
// Only change once per interval
|
// Only change once per interval
|
||||||
if ((pindexLast->nHeight+1) % nInterval != 0)
|
if ((pindexLast->nHeight+1) % nInterval != 0)
|
||||||
{
|
{
|
||||||
if (TestNet())
|
if (Params().AllowMinDifficultyBlocks())
|
||||||
{
|
{
|
||||||
// Special difficulty rule for testnet:
|
// Special difficulty rule for testnet:
|
||||||
// If the new block's timestamp is more than 2* 10 minutes
|
// If the new block's timestamp is more than 2* 10 minutes
|
||||||
|
@ -1468,7 +1468,7 @@ void UpdateTime(CBlockHeader& block, const CBlockIndex* pindexPrev)
|
||||||
block.nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
|
block.nTime = max(pindexPrev->GetMedianTimePast()+1, GetAdjustedTime());
|
||||||
|
|
||||||
// Updating time can change work required on testnet:
|
// Updating time can change work required on testnet:
|
||||||
if (TestNet())
|
if (Params().AllowMinDifficultyBlocks())
|
||||||
block.nBits = GetNextWorkRequired(pindexPrev, &block);
|
block.nBits = GetNextWorkRequired(pindexPrev, &block);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -632,7 +632,7 @@ void static BitcoinMiner(CWallet *pwallet)
|
||||||
// Update nTime every few seconds
|
// Update nTime every few seconds
|
||||||
UpdateTime(*pblock, pindexPrev);
|
UpdateTime(*pblock, pindexPrev);
|
||||||
nBlockTime = ByteReverse(pblock->nTime);
|
nBlockTime = ByteReverse(pblock->nTime);
|
||||||
if (TestNet())
|
if (Params().AllowMinDifficultyBlocks())
|
||||||
{
|
{
|
||||||
// Changing pblock->nTime can change work required on testnet:
|
// Changing pblock->nTime can change work required on testnet:
|
||||||
nBlockBits = ByteReverse(pblock->nBits);
|
nBlockBits = ByteReverse(pblock->nBits);
|
||||||
|
|
Loading…
Reference in a new issue