Use this file to discover all available pages before exploring further.
Try it Live
Run Hardfork examples in the interactive playground
Conceptual Guide - For API reference and method documentation, see Hardfork API.
Ethereum hardforks are backwards-incompatible protocol upgrades that introduce new features, fix bugs, and improve performance across the network. This guide teaches hardfork fundamentals using Tevm.
Hardforks are coordinated protocol changes that require all nodes to upgrade. Unlike soft forks (backward-compatible), hardforks break compatibility with older node software - nodes that don’t upgrade cannot validate new blocks.Key characteristics:
Backwards-incompatible - Old nodes reject new blocks
Network-wide activation - All validators must upgrade
Block number or timestamp - Activation at specific height or time
EIP bundling - Multiple Ethereum Improvement Proposals (EIPs) per fork
import { Hardfork } from 'tevm';// Early era (2015-2017)Hardfork.FRONTIER // July 2015 - Genesis blockHardfork.HOMESTEAD // March 2016 - Gas cost adjustmentsHardfork.BYZANTIUM // October 2017 - EIP-140 REVERT, EIP-211 RETURNDATASIZE// Stability era (2019)Hardfork.CONSTANTINOPLE // February 2019 - EIP-1283 SSTORE gasHardfork.ISTANBUL // December 2019 - EIP-1344 CHAINID, EIP-2200 gas// Modern era (2021-2024)Hardfork.BERLIN // April 2021 - EIP-2929 access list gas costsHardfork.LONDON // August 2021 - EIP-1559 base fee mechanismHardfork.MERGE // September 2022 - Proof of Stake consensusHardfork.SHANGHAI // April 2023 - EIP-3855 PUSH0 opcodeHardfork.CANCUN // March 2024 - EIP-4844 blob transactions// Compare versionsconsole.log(Hardfork.compare(Hardfork.LONDON, Hardfork.CANCUN)); // -1 (London is earlier)
import { Hardfork } from 'tevm';// Gas optimizationsHardfork.BERLIN // EIP-2929: SLOAD/CALL access list pricingHardfork.ISTANBUL // EIP-2200: SSTORE gas metering// New opcodesHardfork.BYZANTIUM // REVERT, RETURNDATASIZE, STATICCALLHardfork.SHANGHAI // PUSH0// Transaction typesHardfork.BERLIN // Type 1: EIP-2930 access listsHardfork.LONDON // Type 2: EIP-1559 dynamic feesHardfork.CANCUN // Type 3: EIP-4844 blob transactions// ConsensusHardfork.MERGE // Proof of Stake (The Merge)// Check feature availabilityconst fork = Hardfork("cancun");console.log(Hardfork.hasEIP1559(fork)); // true - base fee availableconsole.log(Hardfork.hasEIP3855(fork)); // true - PUSH0 availableconsole.log(Hardfork.hasEIP4844(fork)); // true - blobs available