The Ethereum network will undergo a planned hard fork in 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 testnet experienced a hard fork on September 19 (UTC) at block number 1.7 thousand (1,700,000). A countdown timer can be seen on https://fork.codetract.io/.
As a user, what should I do?
Download the latest version of your Ethereum client:
What if I am using an Ethereum web or mobile wallet like MyEtherWallet or Jaxx?
Ethereum websites and mobile applications that allow you to store Ethereum and/or transact run 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 be updated for the hard fork. It is recommended that you check with them to see what actions they are taking to update the hard fork and if they are asking their users to take any other steps.
What is a hard fork in Ethereum?
A hard fork is a change to the underlying Ethereum protocol, which creates new rules to improve the system. Protocol changes are triggered on a specific block number. All Ethereum clients must be updated; otherwise they will be stuck in an incompatible chain following the rules above.
What happens if I don’t participate in the hard fork?
If you are using an Ethereum client that is not up to date for the next hard fork, your client will be synchronized with the pre-fork blockchain once the hard fork occurs. You’ll be stuck on an incompatible chain following the old rules, with no replay protection against the mainnet. Old clients will be able to build transactions, but will not be able to see the effects of those transactions.
What is Metropolis, Byzantium and Constantinople?
Metropolis is a planned development phase of Ethereum that includes two hard forks: Byzantium and Constantinople. Byzantium is happening in block number 4.37 thousand. Constantinople doesn’t have a release date yet, but it’s expected to be in 2018.
What changes are included in the Byzantium hard fork?
The following updates are included:
- Addition of ‘REVERT’ opcode, which allows error handling without consuming all the gas (FOOT 140)
- Transaction receipts now include a status field to indicate success or failure FOOT 658)
- Elliptic curve addition and scalar multiplication in alt_bn128 (FOOT 196) and matchmaking checks (FOOT 197), enabling ZK-Snarks and other mathemagic™ cryptographic
- Support for modular exponentiation of large integers (FOOT 198), which enables RSA signature verification and other cryptographic applications
- Support for variable length return values (FOOT 211)
- Addition of the ‘STATICCALL’ opcode, which allows calls that do not change state to other contracts (FOOT 214)
- Difficulty adjustment formula changes to account for Uncles (FOOT 100)
- Delayed ice age/difficulty bomb by 1 year, and reduced block reward from 5 to 3 ether (FOOT 649)
What happens if something goes wrong?
In the event that a critical error is discovered, the following communication channels will be used:
Important Note for Dapp Developers
The way to detect failed transactions will change with Byzantium, even for contracts created before the Byzantium hard fork was enacted. After the branch, 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, see this post on Ethereum StackExchange.
A big thank you to the Ethereum development community across all clients and platforms that came together to provide feedback, ideas, and contributions to this update.
DISCLAIMER It is an emerging and highly technical evolving space. If you choose to implement the recommendations in this post and continue to participate, you should make sure you understand how it affects you. You should understand that there are risks involved, including, but not limited to, risks such as unexpected errors. By choosing to implement these recommendations, you alone assume the risks of the consequences. This publication and recommendations are not a sale of any kind and do not create warranties of any kind, including, but not limited to, those relating to the Ethereum network or the Ethereum clients referenced herein.