A detailed guide to the latest Ethereum Network Upgrade — Istanbul, and its activation on the Ethereum test networks.
What is a network upgrade / hard fork?
A network upgrade is a change to the Ethereum protocol, adding new rules to improve the system. These rules come in the form of Ethereum Improvement Proposals (EIPs) that define in technical terms the changes and features that should be implemented in a network upgrade.
Network upgrades can be planned or unplanned. Upgrades are also known as forks, and normally add features requested by users and developers of the protocol. Unplanned forks have also occurred in order to fix problems with the blockchain or to stop attacks. To date, there have been 7 hard forks on Ethereum. The phrase ‘hard fork’ denotes a network update which is not fully backwards compatible, and has the potential to render some previous transactions invalid, and/or change the existing functionality of deployed contracts.
The decentralized nature of blockchain systems makes a network upgrade more difficult. Network upgrades in a blockchain require cooperation and communication with the community, as well as with the developers of the various Ethereum clients in order for the transition to go smoothly.
In order for upgrades on the main Ethereum network to happen seamlessly, these upgrades are first done on test Ethereum networks, such as Rinkeby, Ropsten, Goerli and Kovan.
What is Istanbul?
Istanbul is the 8th Ethereum network upgrade. Previous network upgrades have been given other names such as Spurious Dragon and Byzantium. The current one/last upgrade is Constantinople.
While a specific activation block has not been scheduled for the Ethereum mainnet, blocks have been set for all major test networks.
What happens during a network upgrade?
After the community comes to an agreement about which changes should be included in the upgrade, changes to the protocol are programmed into the various Ethereum clients, such as geth, Parity, Besu, and Nethermind. The protocol changes are activated at a specific block number. Once the changes are activated new features can be used. Any nodes that have not been upgraded to the new ruleset will be abandoned on the old chain where the previous rules continue to exist.
What Do I Need To Do?
As an Ethereum user or ETH holder:
If you use an exchange (such as Coinbase, Kraken, or Binance), a web wallet service (such as Metamask, MyCrypto, or MyEtherWallet), a mobile wallet service (such as Coinbase Wallet, Status.im, or Trust Wallet), or a hardware wallet (such as Ledger, Trezor, or KeepKey) you do not need to do anything unless you are informed to take additional steps by your exchange or wallet service.
To clear any confusion, a network upgrade does not mean that you will magically end up with more coins.
As a node operator or miner:
If you are a miner or node operator, you need to download the latest version of your Ethereum client in order to run Istanbul on Rinkeby, Goerli and Ropsten:
- Geth 1.9.5
- Parity v2.6.4-beta
- Besu (Previously known as Pantheon) 1.2.4
- Nethermind 1.0.8
- Aleth TBA
- Trinity v0.1.0-alpha.29
If you are using an Ethereum client on these networks and choose not to upgrade your client to the latest version (listed above), you will be stuck on an incompatible chain following the old rules. Your client will sync to the pre-fork blockchain and you will be unable to send ether or operate on the post-upgrade Ethereum network.
As a developer with one or more contracts on Ethereum:
If you have one or more contracts running on the main Ethereum Network (mainnet) then you should review all the included EIPs (listed below), and specifically EIP-1884, to see if these EIPs affect your contract. If it is then you may wish to upgrade your contact accordingly so that it is not impacted by the upgrade. If you are unable to upgrade your contract then please reach out to the All Core Dev team through their gitter channel.
Which EIPs are going into this update?
Changes that are implemented in Istanbul are defined using Ethereum Improvement Proposals (EIPs). EIPs describe standards for the Ethereum platform, including core protocol specifications, client APIs, and contract standards.
Given how much the community has grown in the past year, this upgrade was the largest in terms of community proposals in the history of Ethereum, with over 30 EIPs that were proposed for inclusion in this fork. Each was discussed and debated and after much consideration, six EIPs were considered suitable and ready to be implemented as part of this upgrade.
EIP 1679: Istanbul Meta
This contains the list of protocol changes that are going to be included in Istanbul. It also lists all EIPs that were originally proposed.
The EIPs included in the Istanbul upgrade:
- Align the costs of opcodes with their computational costs and improve denial-of-service attack resilience.
- Make layer 2 solutions based on SNARKs and STARKs more performant.
- Enable Ethereum and Zcash to interoperate.
- Allow contracts to introduce more creative functions.
Adds the ability to verify the Equihash PoW within an ethereum contract. This will enable a relay and atomic-swap transactions between Zcash and Ethereum.
Adds a way for contracts to keep track of the Ethereum chain they are on. To be used by contracts, especially those used by layer 2 (state channels, plasma), to follow the correct layer 1 chain, especially during a hard fork.
Changes the cost of some EVM opcodes to prevent spamming attacks and to and to balance the amount of computation in each block better. The amount that must be paid for each operation in Ethereum usually matches the computation required for that operation. This change increases the gas costs of opcodes that are computationally intensive but currently cheap, namely SLOAD, BALANCE and EXTCODEHASH
Makes zk-SNARKs and zk-STARKs cheaper by reducing the cost of calling data within transactions. This will make layer 2 solutions able to increase throughput. See Starkware for examples.
Changes the cost calculation of storage in the EVM and will enable contracts to introduce new functions including re-entry locks and same-contract multi-send.
When will the upgrade take place?
Before the Ethereum mainnet can be upgraded, one or more test networks (testnets) must be upgraded and observed in order to test the code changes in an environment that is similar to mainnet.
The upgrade is scheduled to happen on the following testnets:
- Ropsten block #6485846 (Oct 2)
- Görli block #1561651 (Oct 30)
- Rinkeby block #5435345 (November)
- Kovan block #14111141 (December)
The activation block for the Ethereum mainnet has not yet been decided.
I want to know more about Istanbul
Visit the eth.wiki page for Istanbul for more detailed information about Istanbul.
We would like to thank Brett Robertson, Helena Flack, Hudson Jameson, Pooja Ranjan, Tim Beiko, William Schwab and the Ethereum Cat Herders who contributed to writing this article.