History of Ethereum Hard Forks

An overview of the events that resulted in a blockchain of 10 million blocks in 5 years.

Luit Hollander


Today, May 4th, 2020, the 10 millionth block of the Ethereum blockchain has been mined. Combined, these blocks were mined by computing over 15 zettahashes over the past 5 years. It would take a modern graphics card, like the GTX 1080 Ti, over 150 million years to do this.

Over the course of our way towards this milestone, a recognizable amount of forks have occurred. Although forks always create a chain split, the old chain is often abandoned, which is why they are sometimes referred to as “network upgrades.” Today, we will be taking a look at the events that have collectively led us to our current mainnet Ethereum blockchain.

An overview of every Ethereum fork on a scale of date and block number.

Pre-Release: Olympic — #0

On May 9th, 2015, the Olympic: Frontier pre-release was announced by the Ethereum Foundation. The release was meant as a proof-of-concept and included a bounty program to receive up to 25,000 Ether for things like sending out the most transactions, being the miner that includes the most transactions, or finding serious issues like creating a (substantial) fork between Go and C++ clients.

It lasted for 14 days. While technically Olympic was a different network and thus isn’t entirely supposed to be on this list, this stage did define a part of the so-called “Genesis” block in the Frontier release.

Frontier — #0

Frontier marks the first official Ethereum release, “Ethereum 1.0.” The launch consisted of a Genesis block, which included 8893 transactions of everyone who bought Ether during the official presale. In total, a little over 72 million ETH was “pre-mined,” of which almost 12 million was allocated for the Ethereum development fund.

Frontier Thawing

Initially, Ethereum had a hardcoded gas limit per block of 5,000 gas. Because every transaction has a base cost of 21,000 gas, this meant the Ethereum blockchain only allowed for mining blocks. Per a blog post published by Ethereum.org:

This ‘thawing’ period will enable miners to start their operations and early adopters to install their clients without having to ‘rush’. After a few days (likely 3–4, but this could change), we’ll release a small software update which all clients will have to install. This update will see the Gas limit per block raised to 3 million, an initial number from which it will expand or contract as per the default miner settings.

About 5 days after Ethereum’s release, this limit was changed to a default target value of 3,141,592 gas. However, this was not an immediate change, as miners are only allowed to raise/lower the actual gas limit by (previous block limit) / 1024 gas each block.

Block #46,147 contained Ethereum’s first transaction, a transfer of 31337 wei.

Ethereum’s first manual transaction. Source: etherscan.io.

Ice Age — #200,000

In the blockchain space, the term “difficulty” refers to how much effort it takes a computer to mine the next block. The difficulty is readjusted automatically in order to stabilize block times. As more blocks are being mined in a given time frame, the difficulty is raised, and vice versa.

In order to guarantee another hard-fork point to switch from PoW to PoS within 16 months after Ethereum’s initial release, an exponential difficulty increase was added that would noticeably slow down new blocks being mined after about a year. After that time, the network would reach an “Ice Age,” where the difficulty would exponentially increase until it would be too high for anyone to find a block.

Source: etherscan.io.

The image above depicts the average time needed to find a block. Three clear spikes are visible, which is when ice ages started to kick in. Every time a spike ended, the ice age was manually delayed by a new hard fork. Although the ice age needed to be delayed several times, work on proof of stake is still very much in progress.

Homestead — #1,150,000

Homestead was the second major planned version, and included three so-called EIPs, or “Ethereum Improvement Proposals”:

DAO Fork — #1,920,000

On June 17th, 2016, a vulnerability found inside the DAO contract had been exploited to drain approximately 3.6 million ETH from the fund. Due to the way this contract was designed, these funds would be frozen for 28 days before they could be transferred.

If no action would have been taken, the attacker would single-handedly have owned around 4.4% of the total supply of ETH. Because of this, a controversial proposal (EIP 779) was drawn up in order to change the code of the attacker’s lockup contract so everyone would be able to withdraw their ETH from the DAO contract.

On July 20th, a majority of mining power supported a fork which implemented this change, while a smaller community decided to split off and rename the old chain to Ethereum Classic.

Tangerine Whistle — #2,463,000

Tangerine Whistle was a small unplanned fork that included just one EIP, EIP-150. The proposal repriced some opcodes to prevent denial-of-service attacks from being worthwhile.

Spurious Dragon — #2,675,000

Spurious Dragon was another unplanned fork on November 22nd, 2016, which included four proposals related to fixing unwanted behaviour:

Byzantium — #4,370,000

Byzantium is the first half of “Metropolis,” which was the name given to the third planned stage of Ethereum. It contained a wide variety of changes, including 4 new opcodes, 4 precompiles, a reduction of the block reward, and another delay of the Ice Age difficulty bomb. The full list of EIPs included is:

Constantinople / St. Petersburg — #7,280,000

The second half of the Metropolis stage consisted of the Constantinople fork, which was supposed to happen on block 7,080,000, included five EIPs:

However, just 32 hours before the fork was supposed to happen, Constantinople was postponed due to the discovery of an unwanted side effect of EIP-1283, which introduced a reentrancy attack to many deployed contracts.

As a result, EIP-1283 was removed from the list of planned integrations, and the fork was rescheduled to block 7,280,000. Furthermore, the fork was given a new name: St. Petersburg.

Istanbul — #9,069,000

Following the Byzantium and Constantinople forks, the name of this fork comes as no surprise to many. The fork includes two new opcodes, a new precompile, and some gas adjustments.

If you would like to learn more about these changes, you should read my other article: “Ethereum’s Istanbul Fork — Technical Explanation”.

Muir Glacier — #9,200,000

Muir Glacier only included one EIP, EIP-2384, in order to once again delay the difficulty bomb.

Serenity / ETH 2.0 — ?

The next step on the Ethereum roadmap is Serenity, also known as ETH 2.0. This upgrade would involve a proof-of-stake beacon chain, shard chains, eWASM, and more.

If you would like to learn more about what’s being worked on right now, you should read “The Roadmap to Serenity” by ConsenSys.

Talk To Us & Share Your Thoughts