This has been the cornerstone statement and much more evident in the software world. There has been no system, which has not gone through the evolutionary cycle of bug fixes and upgrades. Pushing out a change or a new feature, for a centralized system is easy as we know the servers and system we need to update. The challenge of pushing out a new updated software becomes much more complex as the system grows in scale. This brings to our topic of today’s discussion. How does an update to a decentralized system like Ethereum happen?
What we are going to do today?
- Understand what ‘forking’ means in the Ethereum world.
- A brief history of Ethereum upgrades.
- Mechanics and nuances of the upgrade.
What will be the takeaway?
- Understand how upgrades work and process for upgrade.
- Implications of the upgrade.
These are the topics we are going to be discussing in this blog:
What is a fork?
- In essence, any changes done to the rules and protocol of the Ethereum network are called fork.
- In simple words, these are the bug fixes and updates (major/minor) applied to the distributed network.
- These are network updates in essence, where the governing principle on how network works are changed.
Why are they called ‘forks’ and not just ‘network upgrade’?
These network upgrades or protocol changes are on a decentralized network, this causes some unique challenges. Let us have a look at them.
Soft fork (Network Upgrades)
- In a simple scenario, if all the changes or upgrade proposed are backwards compatible and support old and new rules.
- In the above-mentioned scenario, all of the participants are in agreement about the changes and upgrade the software.
- This is what we call as a soft fork, backward compatible, all of the participants agree and there is only one version of software running on all the participants.
- A soft fork is more of a misleading term, this is more of a network upgrade, where we end up with just one version of the software.
- As this is a decentralized system, so what all the participants agree upon plays an important role in the future state of the network.
Hard fork
- In this scenario, the changes or upgrade proposed to the network are not agreed upon by all the participants in the network.
- Keeping in mind, the changes and upgrades being proposed are not backwards compatible.
- If lets us say x% of the participant agree in favour of the changes, they go ahead and upgrade their software.
- Now, what we end up with is two separate versions of the software.
- One, where x% of participants have upgraded to include new changes.
- Second, where (100-x)% of participants have not upgraded.
- In this case, both of these groups will have the same version of the ledger, till the point, the upgrade was accepted by x%, let us say that point is block number 100.
- Till block number100 all the participants will have the same version of the ledger or in simple terms, same data in their blockchain.
- Post block number 100, x% of the participants will have their own copy of ledger which will follow new rules a per upgrade and (100-x)% of the participants will have a separate copy that still follows old rules.
- In conclusion, this type of upgrade is called a fork. As it causes split one blockchain into two separate versions.
- For example, the hard fork (DAO Hack Block# 1920000), which resulted in two versions Ethereum and Ethereum Classic.
What is an EIP?
EIP is an acronym for Ethereum Improvement Proposals (EIPs). Any change or update to the Ethereum protocol, network or any change what so ever has to be built up in form of an EIP. An EIP consists of
- The problem the EIP is going to solve.
- A technical specification defining the new feature or change.
- The rationale behind the design and design decisions.
- If any incompatibility is introduced with this change, should be clearly listed.
EIP Types
Listed below are the classifications of the EIP.
- Standard Track: Affects most or all Ethereum implementations. e.g. change to the network protocol, a change in block or transaction validity rule.
- Core: Changes that may be relevant to core dev discussion. e.g. miner/node strategy changes
- Networking: Improvements to network protocol specifications of whisper and swarm. e.g. Node discovery by DNS
- Interface: API/RPC standards and specification changes. e.g.Create `eth_chainId` method for JSON-RPC
- ERC: Standard and specification at the application level. e.g. Token Standards, library, and package format.
- Meta: Process specification and process changes. e.g.procedures, guidelines, changes to the decision-making process, and changes to the tools or environment used in Ethereum development. EIP 233 “Formal process of hard forks”
- Informational: Design issue and general guideline for the Ethereum Community. e.g. EIP 1470 – Smart Contract Weakness Classification (SWC).
Ethereum Upgrade Cycle
Lately, the Ethereum community has matured and the upgrades for Ethereum have become planned.
- Earlier fork or upgrade timing was decided by the EIP being introduced and the upgrade cycles were not planned.
- Now, the fork and upgrades are planned, and EIPs are added as they mature. This is more in accordance with traditional software upgrades and releases.
Ethereum Upgrade History
Upgrade Number | Block Number | Date | Name |
0 | 1 | 2015-07-30 | Frontier |
1 | 200000 | 2015-09-07 | Frontier Thawing |
2 | 1150000 | 2016-04-14 | Homestead |
3 (Hard Fork) | 1920000 | 2016-07-20 | DAO Fork |
4 | 2463000 | 2016-10-18 | Tangerine Whistle |
5 | 2675000 | 2016-11-22 | Spurious Dragon |
6 | 4370000 | 2017-10-16 | Byzantium |
7 | 7280000 | 2019-02-28 | Constantinople |
8 | TBD | End 2019 | Istanbul |
Driving factors
The two driving factors behind the Ethereum upgrades have been
- Consensus performance enhancement, proof of work is not efficient at all. The whole road map of Ethereum has been to move from PoW (Proof of Work) to PoS (Proof of Stake).
- Scalability, as discussed later, for mass adoption Ethereum network has to scale. The key focus area of Ethereum in the last few years has been to improve scalability.
Ethereum Istanbul Upgrade
- Average Ethereum block utilization is around 90%. In simple words, if this were a single computer, it will mean we are using 90% of its capacity.
- We are currently averaging 700K Ethereum transactions per day.
Source: https://www.etherchain.org/charts
In order for Ethereum to scale and caters to mass adoption, upgrades and changes to the network are proposed. Istanbul, a much-awaited upgrade, which is due to happen by end of this year and is the step towards the final PoS(Proof of Stake)Serenity targeted for 2020. “Istanbul” network upgrade will be done in two stages
- Stage 1 (End of 2019): Following EIPs (Ethereum Improvement Proposal) 152, 1108, 1344, 1884, 2028, and 2200 included. These EIP are targeted to achieve the following.
- Gas costs reduction and optimization.
- Enable Ethereum and Zcash to be interoperable
- Lay the foundation to apply scalability changes.
- Stage 2 (Beginning of 2020): Mining Algorithm changes, EIP 1057 will change the mining algorithm from PoW (Proof of Work) to ProgPoW (Programmatic Proof Of Work).
- Firstly, this reduce the undue advantage ASIC (Application Specific Integrated Circuit) cards have been in the mining
- Secondly, reduce the centralization of mining. in crypto mining.
In the end, upgrading a decentralized system comes with it own challenges and nuances. Today, we got an understanding of how does the upgrade work in the case of Ethereum. We also looked at the way the Ethereum upgrade process if becoming matured. Understanding the bigger object and key driving factors behind the upgrade, help us to look at where Ethereum is heading. Istanbul upgrade is being tested in TestNet Rinkeby, and will be pushed to MainNet by this year-end, as per the information at the time of writing this blog. Stay tuned for more.
If you wish to learn Blockchain and build a career in Blockchain Technologies, then check out our Blockchain Certification program which comes with instructor-led live training and real-life project experience. This training will help you understand Blockchain in depth and help you achieve mastery over the subject.
Got a question for us? Please mention it in the comments section and we will get back to you as soon as possible.