The Ethereum network will be undergoing a planned hard fork at block number 4.37mil (4,370,000), which will likely occur between 12:00 UTC and 13:00 UTC on Monday, October 16, 2017. The Ropsten test network underwent a hard fork on September 19th (UTC) at block number 1.7mil (1,700,000). A countdown timer can be seen at https://fork.codetract.io/.
As a user, what do I need to do?
Download the latest version of your Ethereum client:
What if I am using a web or mobile Ethereum wallet like MyEtherWallet or Jaxx?
Ethereum websites and mobile applications that allow you to store ether and/or make transactions are running their own Ethereum client infrastructure to facilitate their services. If you use a third-party web-based or mobile Ethereum wallet, your wallet provider may need to update for the hard fork. It is recommended that you check with them to see what actions they are taking to update for the hard fork and if they are asking their users to take other steps.
What is a hard fork in Ethereum?
A hard fork is a change to the underlying Ethereum protocol, creating new rules to improve the system. The protocol changes are activated at a specific block number. All Ethereum clients need to upgrade, otherwise they will be stuck on an incompatible chain following the old rules.
What happens if I do not participate in the hard fork?
If you are using an Ethereum client that is not updated for the upcoming hard fork, your client will sync to the pre-fork blockchain once the fork occurs. You will be stuck on an incompatible chain following the old rules, without replay protection against the main network. Old clients will be able to construct transactions, but will not be able to see the effects of those transactions.
What is Metropolis, Byzantium, and Constantinople?
Metropolis is a planned Ethereum development phase that includes two hard forks: Byzantium and Constantinople. Byzantium is occurring at block number 4.37mil. Constantinople does not currently have a release date, but is expected in 2018.
What changes are included in the Byzantium hard fork?
The following upgrades are included:
- Addition of ‘REVERT’ opcode, which permits error handling without consuming all gas (EIP 140)
- Transaction receipts now include a status field to indicate success or failure EIP 658)
- Elliptic curve addition and scalar multiplication on alt_bn128 (EIP 196) and pairing checks (EIP 197), permitting ZK-Snarks and other cryptographic mathemagic™
- Support for big integer modular exponentiation (EIP 198), enabling RSA signature verification and other cryptographic applications
- Support for variable length return values (EIP 211)
- Addition of the ‘STATICCALL’ opcode, permitting non-state-changing calls to other contracts (EIP 214)
- Changes to the difficulty adjustment formula to take uncles into account (EIP 100)
- Delay of the ice age / difficulty bomb by 1 year, and reduction of block reward from 5 to 3 ether (EIP 649)
What if something goes wrong?
In the event that a critical bug is discovered, the following communication channels will be utilized:
Important Note for Dapp Developers
The way to detect failed transactions will change with Byzantium, even for contracts created before the Byzantium hard fork is enacted. After the fork, eth.getTransactionReceipt(…) will return a status field. The status field has a value of 0 when a transaction has failed and 1 when the transaction has succeeded. For more information, please see this post on the Ethereum StackExchange.
A big thanks to the Ethereum development community across all clients and platforms who came together to provide input, thoughts, and contributions for this upgrade.
DISCLAIMER This is an emergent and evolving highly technical space. If you choose to implement the recommendations in this post and continue to participate, you should make sure you understand how it impacts you. You should understand that there are risks involved including but not limited to risks like unexpected bugs. By choosing to implement these recommendations, you alone assume the risks of the consequences. This post and recommendations are not a sale of any kind and do not create any warranties of any kind including but not limited to any relating to the Ethereum network or the Ethereum clients referred to herein.