from here: https://github.com/bitcoin/bitcoin/blob/master/src/pow.cpp

 // Limit adjustment step
 int64_t nActualTimespan = pindexLast->GetBlockTime() - nFirstBlockTime;
 if (nActualTimespan < params.nPowTargetTimespan/4)
     nActualTimespan = params.nPowTargetTimespan/4;
 if (nActualTimespan > params.nPowTargetTimespan*4)
     nActualTimespan = params.nPowTargetTimespan*4;

I know that the code used to control the network difficulty adjustment limits it to at least one quarter of the target and at most four times the target. But why was the factor 4 chosen? Why not 2, or 3, or 5?

  • 1
    At least some of these important constants were either chosen arbitrarily or for reasons that have not been disclosed by the people who chose them. See Why 21 million and duplicate for examples. Any answer here may therefore be speculation rather than historically factual. – RedGrittyBrick Mar 4 at 11:21
  • 2
    I'm voting to keep this open. It may be technically opinion based, assuming there is no rationale known by Satoshi about the choice of this constants, but there are still potentially useful technical answers about what downsides/upsides other constants could have. – Pieter Wuille Mar 4 at 22:31

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.