- Withdrawals are coming! The Shapella network upgrade will activate on the Ethereum network at epoch 194048, scheduled for 22:27:35 UTC on Apr. 12, 2023
- Stakers & node operators should read this post as well as the Withdrawals FAQ
- From now until April 5th, the Ethereum Bug Bounty rewards have been doubled for Shapella vulnerabilities
- You can now sign up to receive emails for these upgrade announcements. Scroll to the bottom of the page to do so 📩
After a smooth Goerli transition, client teams have scheduled the Shapella upgrade for mainnet activation. Consensus was quickly reached on an April 12th date during the 157th AllCoreDevs Execution Layer meeting.
This upgrade follows The Merge and enables validators to withdraw their stake from the Beacon Chain back to the execution layer. It also introduces new functionality to both the execution and consensus layer, described below.
The Shapella upgrade combines changes to the execution layer (Shanghai), consensus layer (Capella) and the Engine API.
Execution layer changes included in Shanghai are available here. For reference, they are:
- EIP-3651: Warm COINBASE
- EIP-3855: PUSH0 instruction
- EIP-3860: Limit and meter initcode
- EIP-4895: Beacon chain push withdrawals as operations
- EIP-6049: Deprecate SELFDESTRUCT
Note that EIP-6049 is only a deprecation warning. Client teams expect SELFDESTRUCT semantics to change in future network upgrades, but the opcode's behavior remains unchanged in Shanghai.
Additionally, the full set of Shanghai changes can now be viewed in the Ethereum Execution Layer Specification (EELS), which is a new Python reference implementation for the execution layer.
Changes to the consensus layer for the Capella upgrade are specified in the v1.3.0-rc.5 specifications. The README lists the full set of changes. At a high level, the upgrade introduces:
- Full and partial withdrawals for validators
- BLSToExecutionChange messages, which allow validators using a BLS_WITHDRAWAL_PREFIX to update it to an ETH1_ADDRESS_WITHDRAWAL_PREFIX, a prerequisite for withdrawals
- Independent state and block historical accumulators, replacing the original singular historical roots
Stakers are encouraged to read the Withdrawal FAQ for more information on how they should prepare for Capella.
Changes to the Engine API can be found in the shanghai.md file of the execution-apis repository. In short, a WithdrawalV1 structure is introduced and added to relevant structures and methods. Changes to execution layer APIs since The Merge have been bundled in the repository's latest release.
The following client releases support Shanghai & Capella on the Ethereum mainnet. Previous Shapella releases only supported testnet deployments and are not compatible with the mainnet upgrade.
When choosing which client to run, validators should be especially mindful of the risks of running a majority client on both the execution layer (EL) and consensus layer (CL). An explainer of these risks and their consequences can be found here. An estimate of current EL and CL client distribution and guides for switching from one client to another can be found here.
Consensus Layer Mainnet Releases
Note: when running a validator, both the Consensus Layer Beacon Node and Validator Client must be updated.
Execution Layer Mainnet Releases
Note: an issue has been found in Erigon v2.41.0. This release will not be suitable for the Shapella upgrade. Erigon users should upgrade to v2.42.0.
As an Ethereum user or Ether holder, is there anything I need to do?
In short, no.
If you use an exchange, digital wallet or hardware wallet you do not need to do anything unless you are informed to take additional steps by your exchange or wallet provider.
If you run your own Ethereum node, see the next question.
As a non-staking node operator, what do I need to do?
To be compatible with the Mainnet upgrade, update your node to the version of your Ethereum client listed in the table above.
As a staker, what do I need to do?
To be compatible with the Mainnet upgrade, update your node to the version of your Ethereum client listed in the table above. Make sure both your beacon node and validator client are updated!
We also recommend reading the Withdrawal FAQ.
What happens if I am a staker 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 will be unable to send Ether or operate on the post-Shapella Ethereum network.
As an application or tooling developer, what should I do?
Shapella does not introduce breaking changes for smart contracts. Application and tooling developers should review the upgrade changes to ensure any fixes are done, or to understand how to use newly introduced functionality.
That said, application developers should be aware that as of Shanghai, the SELFDESTRUCT opcode is considered deprecated. While its semantics do not change as part of this network upgrade, they likely will in subsequent ones. See EIP-6049 for more information.
Upgrades to the execution layer follow Devcon city names and those to the consensus layer follow star names. "Shapella" is the combination of Shanghai, the location of Devcon 2, and Capella, the brightest star in the northern constellation of Auriga.
Where can I watch Shapella go live?
EthStaker & Ethereum Cat Herders are hosting a Shapella viewing party, starting shortly before the upgrade goes live. You can tune in here.
Thank you to everyone who contributed to the Shapella upgrade, and to all the stakers - old and new - who helped secure what are still the early days of proof-of-stake Ethereum!
Cover image originally by Yiran Ding, adapted by Tomo Saito.