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. Commented Mar 4, 2021 at 11:21
  • 3
    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. Commented Mar 4, 2021 at 22:31


Browse other questions tagged or ask your own question.