<p>from here: <a href="https://github.com/bitcoin/bitcoin/blob/master/src/pow.cpp" rel="nofollow noreferrer">https://github.com/bitcoin/bitcoin/blob/master/src/pow.cpp</a></p>
<pre><code> // Limit adjustment step
 int64_t nActualTimespan = pindexLast-&gt;GetBlockTime() - nFirstBlockTime;
 if (nActualTimespan &lt; params.nPowTargetTimespan/4)
     nActualTimespan = params.nPowTargetTimespan/4;
 if (nActualTimespan &gt; params.nPowTargetTimespan*4)
     nActualTimespan = params.nPowTargetTimespan*4;
</code></pre>
<p>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?</p>

CC BY-SA 4.0
2021-03-04T11:21:04.183Z
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](https://bitcoin.stackexchange.com/q/8439/13866) and [duplicate](https://bitcoin.stackexchange.com/q/9630/13866) for examples. Any answer here may therefore be speculation rather than historically factual.
RedGrittyBrick
CC BY-SA 4.0
2021-03-04T22:31:46.533Z
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
<difficulty-retargetting>
Why does bitcoin limit the difficulty adjustment to a factor of four?
Tue Minh
# Why does bitcoin limit the difficulty adjustment to a factor of four?

(Asked by: username_0 on 2021-03-04)

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?

**Tags:** difficulty-retargetting

> **Comments:**
> **username_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](https://bitcoin.stackexchange.com/q/8439/13866) and [duplicate](https://bitcoin.stackexchange.com/q/9630/13866) for examples. Any answer here may therefore be speculation rather than historically factual.  
> **username_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.  

---

## 0 answers

