Remove temporary fork handling for emergency difficulty reduction on testnet
As we reset testnet, we can also remove the special handling for old blocks.
This commit is contained in:
parent
79d543e896
commit
793e74cc9f
47
src/pow.cpp
47
src/pow.cpp
@ -89,43 +89,18 @@ unsigned int static DarkGravityWave(const CBlockIndex* pindexLast, const CBlockH
|
|||||||
return bnPowLimit.GetCompact();
|
return bnPowLimit.GetCompact();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params.fPowAllowMinDifficultyBlocks && (
|
if (params.fPowAllowMinDifficultyBlocks) {
|
||||||
// testnet ...
|
// recent block is more than 2 hours old
|
||||||
(params.hashDevnetGenesisBlock.IsNull() && pindexLast->nChainWork >= UintToArith256(uint256S("0x000000000000000000000000000000000000000000000000003e9ccfe0e03e01"))) ||
|
if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + 2 * 60 * 60) {
|
||||||
// or devnet
|
return bnPowLimit.GetCompact();
|
||||||
!params.hashDevnetGenesisBlock.IsNull())) {
|
}
|
||||||
// NOTE: 000000000000000000000000000000000000000000000000003e9ccfe0e03e01 is the work of the "wrong" chain,
|
// recent block is more than 10 minutes old
|
||||||
// so this rule activates there immediately and new blocks with high diff from that chain are going
|
if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + params.nPowTargetSpacing * 4) {
|
||||||
// to be rejected by updated nodes. Note, that old nodes are going to reject blocks from updated nodes
|
arith_uint256 bnNew = arith_uint256().SetCompact(pindexLast->nBits) * 10;
|
||||||
// after the "right" chain reaches this amount of work too. This is a temporary condition which should
|
if (bnNew > bnPowLimit) {
|
||||||
// be removed when we decide to hard-fork testnet again.
|
bnNew = bnPowLimit;
|
||||||
// TODO: remove "testnet+work OR devnet" part on next testnet hard-fork
|
|
||||||
// Special difficulty rule for testnet/devnet:
|
|
||||||
// If the new block's timestamp is more than 2* 2.5 minutes
|
|
||||||
// then allow mining of a min-difficulty block.
|
|
||||||
|
|
||||||
// start using smoother adjustment on testnet when total work hits
|
|
||||||
// 000000000000000000000000000000000000000000000000003ff00000000000
|
|
||||||
if (pindexLast->nChainWork >= UintToArith256(uint256S("0x000000000000000000000000000000000000000000000000003ff00000000000"))
|
|
||||||
// and immediately on devnet
|
|
||||||
|| !params.hashDevnetGenesisBlock.IsNull()) {
|
|
||||||
// recent block is more than 2 hours old
|
|
||||||
if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + 2 * 60 * 60) {
|
|
||||||
return bnPowLimit.GetCompact();
|
|
||||||
}
|
|
||||||
// recent block is more than 10 minutes old
|
|
||||||
if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + params.nPowTargetSpacing*4) {
|
|
||||||
arith_uint256 bnNew = arith_uint256().SetCompact(pindexLast->nBits) * 10;
|
|
||||||
if (bnNew > bnPowLimit) {
|
|
||||||
bnNew = bnPowLimit;
|
|
||||||
}
|
|
||||||
return bnNew.GetCompact();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// old stuff
|
|
||||||
if (pblock->GetBlockTime() > pindexLast->GetBlockTime() + params.nPowTargetSpacing*2) {
|
|
||||||
return bnPowLimit.GetCompact();
|
|
||||||
}
|
}
|
||||||
|
return bnNew.GetCompact();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user