The Berlin Upgrade Overview
Ethereum Improvement Proposals for Berlin upgrade
Berlin is the proposed upgrade on the Ethereum 1.0 chain, subsequent to Muir Glacier. As per its specification, it is expected to be activated on the Ropsten testnet on Mar 10, 2021 at block# 9_812_189, and mainnet on April 14, 2021 at block# 12_244_000. Refer to the Ethereum Berlin upgrade announcement for details. The exact date is subject to change due to variable block times and timezones.
A lot of progress has been made in the 15 months since the last network upgrade. Ethereum clients are ready with four new proposals to improve the performance of the network and also prepare it for future upgrades.
A little different from earlier Ethereum network upgrades, this upgrade is no longer tracked in a Meta EIP. Berlin Network Upgrade Specification and progress about upcoming upgrades can be followed on eth1.0-specs repo.
Which changes are included in the Berlin upgrade?
The Berlin upgrade introduces the following EIPs to the Ethereum network:
EIP-2565: ModExp Gas Cost
The ModExp Gas Cost proposal is repricing a previous EIP, EIP-198: Big integer modular exponentiation which originally introduced a precompile for modular exponentiation. EIP-198 is a function in particular for modular exponentiation which introduces a wide variety of cryptographic algorithms to allow RSA signature verification. EIP-2565 is lowering the gas costs of the proposal to bring them in line with the cost of executing other operations. Watch the wonderful overview of the proposal with some interesting charts for gas pricing on PEEPanEIP-2565 with Kelly Olson.
EIP-2718: Typed Transaction Envelope
This proposal introduces a new transaction type that is an envelope to enable easier support for multiple transaction types.
When Ethereum first reached the mainnet there was only one transaction type with fields ‘To’ (where the transaction is going) & ‘Data’ (to include any data you want to include on the transaction). Ethereum clients act in lockstep and they have to make sure they make the exact same changes at the exact same time. So, if the ‘To’ field is 0 then all the clients do need to interpret ‘Data’ field as a contract deployment and execute in a certain way.
Over a period of time, the need for transaction type evolved. It was first observed in EIP-155 — Simple replay attack protection. But, instead of introducing a new transaction type back then, it was mutually agreed upon by the clients to interpret the field differently. The hard fork Spurious Dragon, in which EIP-155 was included, was a consensus change hard fork because all the clients needed to agree on an interpretation of the field. EIP-2718 will not help get rid of complexities with EIP-155, but will prevent introducing any more complexity in the future, and makes it easier to introduce new transaction types, such as EIP-1559 style transactions. Understand the proposal in-depth on PEEPanEIP-2718 with Micah Zoltu.
EIP-2929: Gas cost increases for state access opcodes
This proposal increases the gas cost for SLOAD, *CALL, BALANCE, EXT* and SELFDESTRUCT when used for the first time in a transaction. For example, it significantly increases the gas cost of functions of the CALL family from 700 to 2600 and the SLOAD family 800 to 2100. However, it charges a high amount only once for each address or storage slot. This means apart from the first call, any number of following calls in the transaction will cost only 100 gas.
The rationale for raising these gas costs is mitigating the largest remaining DoS attack vector in Ethereum. It is also a stepping stone towards bounding witness sizes in the context of stateless Ethereum. Currently, witness sizes needed for the Merkle proof are just far bigger than they would be reasonably needed to verify a particular block and Ethereum is looking for some kind of guarantee for maximum size. Though EIP-2929 does not solve all the problems but does move towards that. One other side benefit is that calls to precompile will become much cheaper. It removes the cost of an extra premium of 700 gas in accessing the precompile.
EIP-2930: Optional access lists
The main idea behind this proposal is to fix the breaking changes to existing contracts and mitigate some of the gas cost increases that will occur due to the introduction of EIP-2929. The proposal will add a transaction type that contains an access list (a list of addresses and storage keys) that the transaction plans to access. By specifying an access list, transactions are easier for clients to process and the gas costs can therefore be safely lowered.
Follow PEEPanEIP-2929 & EIP-2930 with Vitalik B. & Martin S. for detailed explanation and benefits for the Ethereum chain.
What’s new with EIP management and governance?
For those curious cats of the community who are wondering about the interval between the upgrades, we’ve got a lot to unpack.
Muir Glacier was a single proposal upgrade which was the requirement of the network at the time to push the Ice Age feature on the chain. Because we couldn’t have waited to deploy the upgrade with any other proposal, it was deployed on the main network in Jan 2020.
To design a better network upgrade process, volunteers from the Ethereum community including EIP editors, EIP authors, client developers, ECH & other community members came together and formed the EIP Improvement Process (EIPIP) group. The Ethereum Cat Herders also conducted an Ethereum critical installation survey to understand the state of client diversity in Ethereum.
In the meantime, client developers continued working on different proposals to improve performance, security, and carving path for future upgrades. Making the best out of the development time that was there in absence of frequent upgrades, you can expect more new features to be added in the subsequent upgrade “London”, which may not be very far off.
Having said that, there is always room for improvement. Your feedback is important to us for continuous improvement in the upgrade process.
What do I need to do as a node operator or miner?
Download the latest versions of your Ethereum client. Participating Eth1.0 clients are:
- Geth — Gemini Sigma (v1.10.1)
- OpenEthereum — OpenEthereum v3.2.0
- Nethermind — v1.10.31
- Besu — 21.1.2.
(Edit: If you are using Besu on public Ethereum networks, you must upgrade to 21.1.2. This release contains the activation blocks for Berlin across all supported testnets and the Ethereum mainnet.)
Thanks to all the developers, client teams, EIP authors, EIP editors, and community members joining us on the journey of this Ethereum network upgrade. See you on the other side of the upgrade!!
Follow Ethereum Cat Herders at Twitter, Medium, GitHub, Website. Join the ECH Discord to exchange thoughts.
Share yours ❤️ with the Cat Herders at Gitcoin & Clr.fund. We accept all tokens!