Ethereum Classic activated the Atlantis network upgrade at block 8,772,000 on September 12, 2019, achieving Spurious Dragon and Byzantium EVM equivalence. Atlantis was specified in ECIP-1054 and closed a two-year compatibility gap with Ethereum.
Included EIPs
- EIP-100 — Difficulty Adjustment for Uncles: Modified difficulty calculation to target mean block time including uncle blocks, providing more stable block production.
- EIP-140 — REVERT Instruction: Added the REVERT opcode, allowing contracts to stop execution, revert state changes, and return unused gas. Essential for Solidity's require() and revert() patterns — before Atlantis, failed contracts consumed all remaining gas.
- EIP-161 — State Trie Clearing: Removes empty accounts from state. Cleans up accounts created during the 2016 Shanghai DoS attacks that bloated the state trie.
- EIP-170 — Contract Code Size Limit: Caps deployed bytecode at 24,576 bytes. Prevents denial-of-service through arbitrarily large contract deployments.
- EIP-196 — alt_bn128 Addition and Scalar Multiplication: Precompiles for elliptic curve operations on the BN128 curve. Foundation for zk-SNARK verification and privacy protocols.
- EIP-197 — alt_bn128 Pairing Check: Precompile for bilinear pairing checks on BN128. Enables efficient on-chain verification of zero-knowledge proofs.
- EIP-198 — BIGINT Modular Exponentiation: Precompile for modular exponentiation. Supports RSA signature verification and other cryptographic operations.
- EIP-211 — RETURNDATASIZE and RETURNDATACOPY: Opcodes for accessing return data from external calls. Enables contracts to handle variable-length return data without pre-allocating memory.
- EIP-214 — STATICCALL: A new call opcode that guarantees no state modifications. Critical for Solidity's view and pure function modifiers — callers can prove the called contract cannot change state.
- EIP-658 — Transaction Status Code in Receipts: Replaced the intermediate state root in transaction receipts with a simple boolean (1 = success, 0 = failure). Enabled dApps to reliably detect failed transactions.
Client Requirements
- Core-Geth v1.11.0 or later (Multi-Geth at the time)
- Hyperledger Besu with ETC Atlantis support