EIP-4345 Difficulty bomb delayed to June 2022 (Difficulty Bomb Delay to June 2022)

Final · Consensus & staking · EIP status Final · created 2021-10-05

Changes the block difficulty calculation to use a fake block number, with 10,700,000 blocks subtracted from the real one, so that the effect of the difficulty bomb is pushed back to appear from June 2022.

Why it is needed

Ethereum has a built-in mechanism called the difficulty bomb, which exponentially raises block difficulty over time and gradually lengthens the block interval. It is meant to force the network to move on to the next stage, but if it goes off before upgrade preparations are finished, blocks slow down and all users are inconvenienced. When this proposal was made in October 2021, the goal was to finish The Merge, the transition from proof of work to proof of stake, before June 2022. So the timing is readjusted so that the bomb's effect begins to appear very gradually right around then, giving the Merge work breathing room while keeping the pressure that prevents the transition from being postponed. If the Merge is not ready by then, the bomb can be delayed again.

What changes

Today

After EIP-4345

Who is affected

In depth

Easing difficulty with a fake block number

In calc_difficulty, block.number, which was used in the exponential ice age component, is replaced with the following expression. fake_block_number = max(0, block.number - 10_700_000) if block.number >= FORK_BLOCK_NUMBER else block.number. That is, for blocks after FORK_BLOCK_NUMBER, the value of the real number minus 10,700,000 (minimum 0) is used only for the bomb calculation, and the rest of the difficulty adjustment logic is left untouched. As a result, clients calculate difficulty as if the bomb were adjusted 10,700,000 blocks later than it actually is.

The projection behind the 10,700,000 offset

The projection script in the source uses as inputs a block number of 13423376 as of October 15, 2021, a difficulty of 9545154427582720, and a block adjustment of 10700000. It sets the number of blocks in a month as (86400 * 30) // 13.3, derives diff_adjustment = 2 ** ((future_blknum - block_adjustment) // 100000 - 2) from the future block number, and converts it to a ratio against the current difficulty. This calculation projected that block times increase by about 0.1 seconds in June 2022, 7.5 months later, and by about 0.5 seconds in July, 8.5 months later. The value aims at a level where the effect starts to become visible but there is still room to respond if needed.

Relationship to the Merge schedule

This delay targets the Merge happening before June 2022. Instead of removing the bomb entirely, it is timed to that point, which secures time to finish the transition while keeping the incentive to upgrade. The source states explicitly that the bomb can be delayed further if the Merge is not ready by then.

Security considerations: the hashrate drop variable

If the effect of the bomb is misestimated, block times can run longer than expected until the next hard fork ships. When difficulty changes sharply this error grows, and long-term difficulty changes also affect the timing of the bomb epoch. In particular, if the network hashrate drops sharply before the Merge, the point at which the bomb is felt in block times could come earlier, and the offset of 10,700,000 was chosen with this possibility in mind. The source document judges that such variables affect network usability but are unlikely to lead to a security problem.

Backwards Compatibility and Status

There are no known backwards compatibility issues. This is because it is a single change that only alters the block number used in the bomb term of the difficulty calculation. The status of this EIP is Final, meaning the specification is settled and will not change further.

Original EIP · ← EIPs