Shanghai Upgrade

What is Shanghai Upgrade?

Shanghai is the next planned network upgrade on Ethereum Mainnet which is expected to activate *Withdrawal* of staking rewards with EIP-4895. This could be extremely beneficial for the on-chain validators.

Shanghai upgrade may bring significant feature upgrades to EVM with a set of proposals. EIP-3540, also known as the EVM Object Format (EOF) proposes an extensible and versioned container format for the EVM with a once-off validation at deploy time. There are a bunch of EIPs proposed bt team Epsilon for EVM improvement.

Shandong is the first experimental testnet deployed with a bunch of EOF EIPs by the Ethereum JS team. Community may expect multiple iterations of this testnet to test different CFI EIPs.

Readiness Checklist

List of outstanding items before deployment.

Code merged into Participating Clients:

For more Information on this click here.

EOF Devnets Breakout Room

Nov 4, 2022, 14:00 UTC

Notes of the meeting

EIPs Considered For Inclusion

EIP-4895
EIP-4895: Beacon chain push withdrawals as operations introduces a system-level “operation” to support validator withdrawals that are “pushed” from the beacon chain to the EVM. These operations create unconditional balance increases to the specified recipients.
EIP-3540
EIP-3540: EVM Object Format (EOF) v1 introduces an extensible and versioned container format for the EVM with a once-off validation at deploy time. The version described here brings the tangible benefit of code and data separation, and allows for easy introduction of a variety of changes in the future. This change relies on the reserved byte introduced by EIP-3541.
EIP-3860
EIP-3860: Limit and meter initcode extends EIP-170 by introducing a maximum size limit for initcode. Furthermore, we introduce a charge of 2 gas for every 32-byte chunk of initcode to represent the cost of jumpdest-analysis. Lastly, the size limit results in the nice-to-have property that EVM code size, code offset (PC), and jump offset fits a 16-bit value.
EIP-3670
EIP-3670: EOF - Code Validation introduces code validation at contract creation time for EOF formatted (EIP-3540) contracts. Reject contracts which contain truncated PUSH-data or undefined instructions. Legacy bytecode (code which is not EOF formatted) is unaffected by this change.
EIP-3855
EIP-3855: PUSH0 instruction introduces the PUSH0 (0x5f) instruction, which pushes the constant value 0 onto the stack.
EIP-3651
EIP-3651: Warm COINBASE address shall be warm at the start of transaction execution, in accordance with the actual cost of reading that account.