Atlantis Network Upgrade Brings Byzantium to ETC

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