Ethereum’s core developers made news in December 2018 when they decided to upgrade the Ethereum blockchain in mid-January. The upgrade, known as Ethereum Constantinople, included several proposals to make the blockchain more efficient and pave the way for a move to Proof of Stake in future Ethereum updates. Ethereum traders, developers, and users alike were excited to see new upgrades to the Ethereum platform.
The Constantinople upgrade requires a hard fork for the new features to go into effect. This means that all Ethereum stakeholders will need to move over to the new Constantinople blockchain. Once everyone moves over, we’ll allow the current blockchain, known as Byzantium, to die. Fortunately, Ethereum Constantinople has broad community support, and it’s expected that stakeholders will move to the new chain quickly.
Originally, the hard fork was scheduled to take place on January 16, 2019 at Ethereum block number 7,080,000. However, security vulnerabilities discovered in the final phases of testing forced Ethereum developers to postpone the deployment until block 7,280,000, scheduled to arrive on February 28, 2019.
In this post, we’ll take an in-depth look at the history of Ethereum upgrades, what new proposals are included in the Constantinople upgrade, and what vulnerabilities caused the upgrade to be postponed.
- 1. Phases of Ethereum
- 2. Hard Forking to Update Ethereum
- 3. Community Consensus for Constantinople
- 4. Included Ethereum Improvements
- 5. Why Was the Transition Postponed?
- 6. What Do I Need to Do?
Phases of Ethereum
Ethereum has had a long-term plan for its development, even from the early days. Vitalik Buterin and the other early developers knew that Ethereum would have to grow and evolve as more users and use cases came to utilize Ethereum. As a result, the core developers created an outline for future development that would take place in four stages:
- Frontier – The early groundbreaking and testing of a platform that could support smart contracts and decentralized applications
- Homestead – The formalization of how the Ethereum Virtual Machine works and strengthening the ecosystem for smart contract development and the Solidity language
- Metropolis – Solving the issues that come at scale; making Ethereum more amenable to large-scale or performance applications and many users. Metropolis has two sub-parts:
- Byzantium – Laying the foundation
- Constantinople – Improving performance and setting timeline for Serenity
- Serenity – Make Ethereum self-sustaining and highly-scalable with a move to proof of stake and sharded state channels that allow for concurrent processing of smart contracts while still maintaining the security of the blockchain
Hard Forking to Update Ethereum
Each of these upgrades requires a fork of the blockchain in order to implement.
Essentially, developers create a new blockchain alongside the old blockchain that shares the same transaction history but includes the new improvements and rules associated with the upgrade. At the moment of the fork, all Ethereum stakeholders–developers, miners, and wallet providers–need to agree to switch to the newly created blockchain and allow the old blockchain to die.
So far, all but one hard fork of the Ethereum network has been successful in converting users to the new chain and allowing the old chain to die. Past Ethereum hard forks include:
- March 2016: Switch from Frontier to Homestead
- The old Frontier chain died shortly thereafter
- July 2016: Reset accounts affected by the DAO hack
- The old Homestead chain with the DAO hacked information still lives on as Ethereum Classic, today
- The new Homestead chain with the DAO hacked accounts reset became the official Ethereum
- October 2017: Switch from Homestead to Byzantium (a.k.a. Metropolis, Part I)
- The switch was successful and the old Homestead chain is deprecated
- February 2019: Switch from Byzantium (Metropolis I) to Constantinople (Metropolis II)
- The subject of this article!
So, the big question is: Will Constantinople be a successful fork? Will Ethereum stakeholders choose the new version and what improvements can they expect?
Community Consensus for Constantinople
Constantinople has been very well received by the Ethereum community. It includes many common-sense proposals that make Ethereum more efficient and secure. Nearly all exchange providers and major mining operations on the Ethereum network have promised to support the hard fork. Many of them have issued official statements saying they’ll update their software on schedule. It’s expected to be a successful upgrade with a relatively quick timescale and few holdouts.
Even Constantinople’s most controversial provision, EIP 1234, which has to do with the timeline for Ethereum Serenity and the block rewards before the next upgrade, hasn’t been enough to divide or dissuade stakeholders. As Serenity approaches, it will likely be a more comprehensive change to the Ethereum network. That upgrade might be a more difficult sell to the community as a whole.
Let’s take a look at the provisions in Ethereum Constantinople that have made it so universally popular across the community.
Included Ethereum Improvements
Overall, Constantinople’s upgrades focus on performance and scaling Ethereum. They also lay the groundwork for future changes in Serenity that will bring proof of stake and sharding.
EIP 145 – Bitwise Shifting
A bit shift is an operation that either adds or removes digits from the end of a value’s binary representation. Ethereum uses Bitwise shifting in many of its cryptographic and contract calculations.
If you think about it, though, adding or removing a bit from the end of a binary number is simply a matter of dividing or multiplying the original number by 2. EIP 145 simplifies some of the math involved in processing a smart contract, allowing them to run more efficiently, use less network resources, and require less gas to execute.
EIP 1052 – EXTCODEHASH
When one contract calls another, you want a way to check the authenticity of that contract before you allow it to make irrevocable changes on the blockchain. There are already tools that automate this process for smart contract developers, but they rely on checking the entirety of the code.
EIP 1052 allows contracts to check each other using a new opcode, EXTCODEHASH, that returns the keccak256 hash of the contract’s essential data. This is a more efficient way to whitelist contracts, much like sha256 hashes and checksums are used to verify the authenticity of other types of files.
EIP 1283 – Net Gas Metering
EIP 1283 is part of a series of improvements to the way Ethereum charges developers for using network resources. Smart contracts can be expensive to operate, so Ethereum wants to reduce costs for operations that don’t really require network resources.
This EIP also institutes a new fee for users who store data locally that’s already permanently stored on the blockchain. This redundancy is unnecessary, and the new fee is meant to discourage developers from using smart contract storage in this way.
EIP 1014 – State Channels
This is an important improvement for Ethereum scalability and will lay the foundation for future scaling efforts.
State channels allow two parties to conduct interactions without needing to log each individual transaction to the blockchain. Instead, the parties open a channel between them with an opening deposit and then can conduct as many offline transactions as needed without bogging down the blockchain ledger.
Bitcoin’s Lightning Network uses state channels for their scalability benefits, and this EIP is a step toward leveraging similar improvements in the Ethereum network. However, state channels extend beyond just transaction balances. On Ethereum, they’re more complicated because they need to maintain the status of any smart contracts between the parties.
Vitalik Buterin is personally helping with this EIP, and it specifically allows interactions with addresses that don’t yet exist on the blockchain. Smart contracts will need such pre-initialized access to addresses in order to make state channels possible.
EIP 1234 – Block Rewards & Difficulty Bomb Dela
There are two parts to this EIP, the most controversial EIP of the Constantinople upgrade:
- Block Reward Reduction – Known as “The Thirdening” among miners, this EIP would reduce block rewards from 3 ETH ber mined block to 2 ETH. This is in an effort to control inflation and eventually balance the ETH creation rate with the ETH loss rate in the network.
- Difficulty Bomb Delay – The difficulty bomb will, once activated, gradually make mining ETH increasingly difficult in an effort to move Ethereum from proof of work to proof of stake over time. Since Ethereum Casper’s proof of stake isn’t quite ready yet, it doesn’t make sense to set the bomb off any time soon. This EIP delays the bomb by another 12 months.
Why Was the Transition Postponed?
The short answer: they found a problem with the implementation of EIP 1283, so they postponed out of an abundance of caution over the security of the network and EIP 1283 won’t be included in the postponed release.
The long answer: ChainSecurity, a third party bug bounty hunting company, found a potential security loophole in Constantinople’s implementation of EIP 1283 on January 15, 2019–37 hours before the new hard fork was set to go live.
Since EIP 1283 reduces gas costs for some operations, its implementation affected the transfer() and send() functions that smart contracts use. In some cases where existing smart contracts used these functions, they became vulnerable to re-entrancy attacks. Grossly simplified, attackers could spam a contract with fake transaction information and possibly extract ETH. This was not a problem before Constantinople, but the update would have introduced the vulnerability.
Developers and stakeholders decided to delay the release of Constantinople to February 27, 2019 in order to allow for further testing of the remaining EIPs. EIP 1283 was removed from the release altogether, and will be included in a separate release.
What Do I Need to Do?
To benefit from the upgrades of Constantinople on February 27th, most people won’t need to do anything.
If you use a major wallet provider, they’ll update their software automatically. Similarly, if you’re an Ethereum developer, you won’t need to do anything except examine your code for potential optimizations with the new EIPs.
If you operate an Ethereum node, exchange, or mining rig, you’ll want to upgrade your version of Geth or Parity, whichever you use.
Ethereum Constantinople represents a solid step forward for the ecosystem. It lays the groundwork for a lot of great future improvements as well. As the last major improvement we’ll see before Serenity, Constantinople plays a pivotal role as the remaining vestige of old Ethereum before proof of stake and sharding is implemented.