Written by Tim Beiko
TL;DR
- Berlin is ready to be deployed!
- We’re moving fast: the first testnet to upgrade, Ropsten, is scheduled to upgrade on March 10th. Mainnet is scheduled for April 14th.
- If you are running an Ethereum node, you should upgrade it to a Berlin-compatible version ASAP for testnets and before April 7th for mainnet.
- See below for the list of Berlin-compatible client versions and details on the EIPs included in the upgrade.
Berlin Timing
After months and months of planning, Berlin is finally here! The upgrade, which follows the Istanbul and Muir Glacier upgrades, is scheduled to go live on the Ethereum mainnet at block 12 244 000. We expect this to happen around Wednesday, April 14, 2021, but because of block time variability, the exact date may change.
Prior to being deployed on mainnet, the upgrade will go live on the Ropsten, Goerli, and Rinkeby testnets. The entire release schedule is as follows:
Network | Block Number | Expected Date |
---|---|---|
Ropsten | 9 812 189 | 10 Mar 2021 |
Goerli | 4 460 644 | 17 Mar 2021 |
Rinkeby | 8 290 928 | 24 Mar 2021 |
Mainnet | 12 244 000 | 14 Apr 2021 |
Ethereum node operators should upgrade their nodes prior to the fork block on the networks they want to participate in. Due to block time variability, it is recommended to update several days before the expected date. See the section below for the appropriate client versions to upgrade to.
Client Versions
In order to be compatible with the Berlin upgrade, node operators will need to upgrade the client version that they run. The versions listed below for each client support Berlin across all Ethereum networks, both testnets and mainnet.
Client | Version Number | Download Link |
---|---|---|
go-ethereum (geth) | 1.10.1 | Download |
OpenEthereum (f.k.a. Parity) | 3.2.0 | Download |
Nethermind | 1.10.31 | Download |
Besu | 21.1.1 | Download |
Note, TurboGeth and EthereumJS will not have client releases ready for the first testnets, but will have a release prior to mainnet. We will update this post as their releases become availabe. Trinity is now deprecated and will not be supporting the Berlin upgrade.
Berlin EIPs
The Berlin upgrade introduces the following EIPs to the Ethereum network:
- EIP-2565: ModExp Gas Cost
- Lowers the cost of the
ModExp (0x00..05)
precompile;
- Lowers the cost of the
- EIP-2929: Gas cost increases for state access opcodes
- Increases gas cost for
SLOAD
,*CALL
,BALANCE
,EXT*
andSELFEDESTRUCT
when used for the first time in a transaction;
- Increases gas cost for
- EIP-2718: Typed Transaction Envelope
- Introduces a new transaction type that is an envelope to enable easier support for multiple transaction types;
- EIP-2930: Optional access lists
- Adds a transaction type which contains an access list, a list of addresses and storage keys that the transaction plans to access. This mitigates some of the gas cost increases introduced by EIP-2929.
To learn more about each EIP, see the Ethereum Cat Herder’s Berlin Overview post.
FAQ
Why “Berlin”?
After Istanbul, we ran out of names for our planned network upgrades. It was suggested to use Devcon city names for upgrades, and we stuck with it! Berlin is where Devcon 0 took place, and the next upgrade will be called London, where Devcon 1 happened.
As an Ethereum user or Ether holder, is there anything I need to do?
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.
As a node operator or miner, what do I need to do?
Download the latest version of your Ethereum client, as listed in the table above.
What happens if I am a miner or node operator and I do not participate in the upgrade?
If you are using an Ethereum client that is not updated to the latest version (listed above), your client will sync to the pre-fork blockchain once the upgrade occurs. You will be stuck on an incompatible chain following the old rules and you will be unable to send Ether or operate on the post-upgrade Ethereum network.
What is a network upgrade in Ethereum-land?
A network upgrade is a change to the underlying Ethereum protocol, creating new rules to improve the system. 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.
What happens during a network upgrade?
After the community comes to an agreement concerning which changes should be included in the upgrade, changes to the protocol are written into the various Ethereum clients, such as geth, Open Ethereum, Besu and Nethermind. The protocol changes are activated at a specific block number. 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.
Thank You!
A big thanks to the Ethereum community and to all Ethereum developers across all clients and platforms who came together to provide input, thoughts, and contribution for Berlin 😁🇩🇪
Now, onto London 🇬🇧!
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 anything related to the Ethereum network, or the Ethereum clients referred to herein.