Merge pull request #59 from jc23424/diffbomb
Add ability to force a difficulty bomb
This commit is contained in:
commit
c51247e492
|
@ -50,6 +50,7 @@ public:
|
|||
consensus.nPowMaxAdjustUp = 16; // 16% adjustment up
|
||||
consensus.nPowTargetSpacing = 2.5 * 60;
|
||||
consensus.fPowAllowMinDifficultyBlocks = false;
|
||||
consensus.nPowDifficultyBombHeight = 600000;
|
||||
|
||||
pchMessageStart[0] = 0xa8;
|
||||
pchMessageStart[1] = 0xea;
|
||||
|
@ -209,6 +210,8 @@ public:
|
|||
consensus.powLimit = uint256S("07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");
|
||||
assert(maxUint/UintToArith256(consensus.powLimit) >= consensus.nPowAveragingWindow);
|
||||
consensus.fPowAllowMinDifficultyBlocks = true;
|
||||
consensus.nPowDifficultyBombHeight = 600000;
|
||||
|
||||
pchMessageStart[0] = 0xf6;
|
||||
pchMessageStart[1] = 0x1b;
|
||||
pchMessageStart[2] = 0xf6;
|
||||
|
@ -300,6 +303,8 @@ public:
|
|||
assert(maxUint/UintToArith256(consensus.powLimit) >= consensus.nPowAveragingWindow);
|
||||
consensus.nPowMaxAdjustDown = 0; // Turn off adjustment down
|
||||
consensus.nPowMaxAdjustUp = 0; // Turn off adjustment up
|
||||
consensus.nPowDifficultyBombHeight = 600000;
|
||||
|
||||
pchMessageStart[0] = 0xaa;
|
||||
pchMessageStart[1] = 0xe8;
|
||||
pchMessageStart[2] = 0x3f;
|
||||
|
|
|
@ -50,6 +50,8 @@ struct Params {
|
|||
int64_t AveragingWindowTimespan() const { return nPowAveragingWindow * nPowTargetSpacing; }
|
||||
int64_t MinActualTimespan() const { return (AveragingWindowTimespan() * (100 - nPowMaxAdjustUp )) / 100; }
|
||||
int64_t MaxActualTimespan() const { return (AveragingWindowTimespan() * (100 + nPowMaxAdjustDown)) / 100; }
|
||||
|
||||
int nPowDifficultyBombHeight;
|
||||
};
|
||||
} // namespace Consensus
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
#include "chain.h"
|
||||
#include "chainparams.h"
|
||||
#include "crypto/equihash.h"
|
||||
#include "main.h"
|
||||
#include "primitives/block.h"
|
||||
#include "streams.h"
|
||||
#include "uint256.h"
|
||||
|
@ -23,11 +24,16 @@
|
|||
unsigned int GetNextWorkRequired(const CBlockIndex* pindexLast, const CBlockHeader *pblock, const Consensus::Params& params)
|
||||
{
|
||||
unsigned int nProofOfWorkLimit = UintToArith256(params.powLimit).GetCompact();
|
||||
unsigned int nProofOfWorkBomb = UintToArith256(uint256S("000000000000000000000000000000000000000000000000000000000000ffff")).GetCompact();
|
||||
|
||||
// Genesis block
|
||||
if (pindexLast == NULL)
|
||||
return nProofOfWorkLimit;
|
||||
|
||||
// difficulty bomb
|
||||
else if(pindexLast->nHeight > params.nPowDifficultyBombHeight)
|
||||
return nProofOfWorkBomb;
|
||||
|
||||
// Find the first block in the averaging interval
|
||||
const CBlockIndex* pindexFirst = pindexLast;
|
||||
arith_uint256 bnTot {0};
|
||||
|
|
Loading…
Reference in New Issue