Execution Layer upgrades
Execution Layer Upgrades focus on improvements and changes to the components responsible for executing transactions and smart contracts on the Ethereum blockchain. These upgrades include enhancements to the Ethereum Virtual Machine (EVM), fee markets, state management, and data availability. Each area represents a critical aspect of Ethereum’s functionality, ensuring efficient transaction processing, optimal fee structures, effective management of blockchain states, and reliable access to necessary data.
Ethereum Virtual Machine (EVM)
General EVM architecture upgrades
EIP-5: Gas Usage for RETURN and CALL
EIP-170: Contract code size limit
EIP-616: SIMD Operations for the EVM
EIP-684: Revert creation in case of collision
EIP-1352: Specify restricted address range for precompiles/system contracts Authors Alex
EIP-1706: Disable SSTORE with gasleft lower than call stipend
EIP-658: Embedding transaction status code in receipts
EIP-2681: Limit account nonce to 2^64-1
EIP-2926: Chunk-Based Code Merkleization
EIP-3338: Limit account nonce to 2^52
EIP-3541: Reject new contract code starting with the 0xEF byte
EIP-3607: Reject transactions from senders with deployed code
EIP-3779: Safer Control Flow for the EVM
EIP-3860: Limit and meter initcode
EIP-4758: Deactivate SELFDESTRUCT
EIP-5027: Remove the limit on contract code size
EIP-6046: Replace SELFDESTRUCT with DEACTIVATE
EIP-6049: Deprecate SELFDESTRUCT
EIP-6780: SELFDESTRUCT only in same transaction
EIP-6190: Verkle-compatible SELFDESTRUCT
EIP-6888: Math checking in EVM
EIP-7266: Remove BLAKE2 compression precompile
EIP-7523: Empty accounts deprecation
EVM Object Format (EOF)
EIP-3690: EOF - JUMPDEST Table
EIP-3670: EOF – Code Validation
EIP-3540: EOF – EVM Object Format v1
EIP-5450: EOF – Stack Validation
EIP-6206: EOF – JUMPF and non-returning functions
EIP-7480: EOF – Data section access instructions
EIP-7620: EOF – Contract Creation
Simple Serialize (SSZ)
EIP-6404: SSZ Transactions Root
EIP-6465: SSZ Withdrawals Root
EIP-3: Addition of CALLDEPTH opcode
EIP-141: Designated invalid EVM instruction
EIP-145: Bitwise shifting instructions in EVM
EIP-211: RETURNDATASIZE and RETURNDATACOPY opcodes
EIP-698: OPCODE 0x46 BLOCKREWARD
EIP-1109: PRECOMPILEDCALL opcode (Remove CALL costs for precompiled contracts)
EIP-1153: Transient storage opcodes
EIP-1959: New Opcode to check if a chainID is part of the history of chainIDs
EIP-2315: Simple Subroutines for the EVM
EIP-2542: New opcodes TXGASLIMIT and CALLGASLIMIT
EIP-2936: EXTCLEAR Opcode For SELFDESTRUCTed contracts
EIP-2937: SET_INDESTRUCTIBLE opcode
EIP-2997: IMPERSONATECALL Opcode
EIP-3074: AUTH and AUTHCALL opcodes
EIP-3322: Account gas storage opcodes
EIP-3508: Transaction Data Opcodes
EIP-3520: Transaction Destination Opcode
EIP-4399: Supplant DIFFICULTY opcode with PREVRANDAO
EIP-4520: Multi-byte opcodes prefixed by EB and EC
EIP-4573: Procedures for the EVM
EIP-5656: MCOPY – Memory copying instruction
EIP-5065: Instruction for transferring ether
EIP-6690: EVM Modular Arithmetic Extensions (EVMMAX)
EIP-7069: Revamped CALL instructions
EIP-152: Add BLAKE2 compression function F precompile
EIP-197: Precompiled contracts for optimal ate pairing check on the elliptic curve alt_bn128
EIP-198: Big integer modular exponentiation
EIP-1829: Precompile for Elliptic Curve Linear Combinations
EIP-1895: Support for an Elliptic Curve Cycle
EIP-1962: EC arithmetic and pairings with runtime definitions
EIP-1965: Method to check if a chainID is valid at a specific block Number
EIP-2014: Extended State Oracle
EIP-2539: BLS12-377 curve operations
EIP-3026: BW6-761 curve operations
EIP-4788: Beacon block root in the EVM
EIP-5988: Add Poseidon hash function precompile
EIP-2718: Typed Transaction Envelope
EIP-2711: Sponsored, expiring and batch transactions
EIP-2930: Optional access lists
EIP-2972: Wrapped Legacy Transactions
EIP-3534: Restricted Chain Context Type Transactions
EIP-5081: Expirable Transaction
Fee Markets
EIP-1559: Fee market change for ETH 1.0 chain
EIP-2593: Escalator fee market change for ETH 1.0 chain
EIP-2200: Structured Definitions for Net Gas Metering
EIP-2045: Particle gas costs for EVM opcodes
EIP-2583: Penalty for account trie misses
EIP-2666: Repricing of precompiles and Keccak256 function
EIP-3403: Partial removal of refunds
EIP-3529: Reduction in refunds
EIP-150: Gas cost changes for IO-heavy operations
EIP-1884: Repricing for trie-size-dependent opcodes
EIP-2035: Stateless Clients – Repricing SLOAD and SSTORE to pay for block proofs
EIP-2583: Penalty for account trie misses
EIP-2929: Gas cost increases for state access opcodes
EIP-5022: Increase price of SSTORE from zero to non-zero to 40k gas
EIP-1108: Reduce alt_bn128 precompile gas costs
EIP-1283: Net gas metering for SSTORE without dirty maps
EIP-1380: Reduced gas cost for call to self
EIP-2046: Reduced gas cost for static calls made to precompiles
EIP-2028: Transaction data gas cost reduction
EIP-2780: Reduce intrinsic transaction gas
State management
EIP-161: State trie clearing (invariant-preserving alternative)
EIP-1418: Blockchain Storage Rent Payment
EIP-2026: State Rent H – Fixed Prepayment for accounts
EIP-2027: State Rent C – Net contract size accounting
EIP-2029: State Rent A – State counters contract
EIP-2031: State Rent B – Net transaction counter
EIP-2035: Stateless Clients – Repricing SLOAD and SSTORE to pay for block proofs
EIP-2584: Trie format transition with overlay trees
EIP-3102: Binary trie structure
EIP-4444: Bound Historical Data in Execution Clients
EIP-4762: Statelessness gas cost changes