There is a difficulty “bomb” that is built into the Ethereum protocol. It is meant to facilitate the adjustment into a Proof-of-stake system by forcing mining to be absolutely unprofitable/unfeasible.
The difficulty adjustment formula of the difficulty bomb is as follows:
Now, you might ask, what does the difficulty got to do with me (the average users)?
The answer is that the block time depends on the difficulty AND the hash rate. The block time is given by dividing the difficulty with the hash rate. Hence, the higher the hash rate, the lower the block time.
From the difficulty bomb formula, you can see that it is an exponential increasing function (of the block number). An exponential increasing function looks like this:
The difficulty will increase at an increasing rate as the block number increase. There will be a time when Ethereum will just grind to a halt as the block time becomes insanely long. We will calculate (at the end of this post) the approximate time when this “doomsday” (or so-called “ice-age”) happen.
Difficulty Adjustment Due To Variance In Hash Rate
In addition to the difficulty bomb, there is another difficult adjustment factor. This difficulty adjustment factor is to allow the average block time to remain relatively stable even if the hash rate are constantly changing (due to miners coming and going). The level of difficulty adjustment is based on the block time as follows:
- < 10 seconds: the difficulty is adjusted upwards by parent_diff // 2048 * 1
- 10 to 19 seconds: the difficulty is left unchanged
- >= 20 seconds: the difficulty is adjusted downwards proportional to the block time, from parent_diff // 2048 * -1 to a max downward adjustment of parent_diff // 2048 * -99
This adjustment allows the average block time of Ethereum to be fixed in the range of 10 to 19 seconds.
Calculation of Block Time
As you can see, the block difficulty is varied by the difficulty bomb and the adjustment factor from the variance in hash rate. Now, let’s us calculate the block time in the Ethereum’s future.
As of 5 Dec 2016, the Ethereum statistics are as follows:
- Block number: 2752289
- Average block time: 14.728 seconds
- Total difficulty: 73.64 Tera (T)
- Difficulty from difficulty bomb: 48 million (m)
- Hash Rate: 5 T
The table below shows the approximate block time at the respective dates. (Assuming constant hash rate of 5 T)
|Block Number||Approx. Date||Block Time (seconds)||Total Difficulty (T)||% of Total Difficulty Due To Bomb||Total Ether (M)|
|2752289||5 Dec 2016||14.728||73.64||0.000065 %||86.63|
|3108670||5 Feb 2017||14.728||73.64||0.000076 %||88.41|
|3457122||5 Apr 2017||14.729||73.64||0.0086 %||90.15|
|3808096||5 Jun 2017||14.743||73.71||0.099 %||91.91|
|4160358||5 Aug 2017||14.90||74.51||1.1 %||93.67|
|4496418||5 Oct 2017||16.44||82.22||10.4 %||95.35|
|4760204||5 Dec 2017||25.42||127.1||42 %||96.67|
|4848752||5 Jan 2018||34.47||172.3||57 %||97.11|
|4914460||5 Feb 2018||45.85||229.3||68 %||97.44|
|4964029||5 Mar 2018||58.61||293.0||75 %||97.69|
|5003994||5 Apr 2018||72.61||363.0||80 %||97.89|
|5036724||5 May 2018||87.35||436.7||83 %||98.05|
|5063873||5 Jun 2018||102.4||511.9||86 %||98.19|
|5108304||5 Aug 2018||134.0||670.0||89 %||98.41|
|5142917||5 Oct 2018||166.3||831.7||91 %||98.58|
|5171305||5 Dec 2018||199.3||996.5||93 %||98.72|