Skip to main content
September 12, 2019Block #8,772,000

Atlantis

ECIP-1054 — Aligned ETC with Ethereum's Spurious Dragon and Byzantium upgrades. REVERT, STATICCALL, alt_bn128 precompiles, receipt status codes, and state trie clearing.

Atlantis (ECIP-1054) Network Upgrade

Activation Block: 8,772,000
Activation Date: September 12, 2019
ECIP Status: Final


Overview

Atlantis was a major compatibility upgrade that brought ETC's EVM up to parity with Ethereum's Spurious Dragon and Byzantium hard forks. It added critical opcodes (REVERT, STATICCALL, RETURNDATASIZE, RETURNDATACOPY), precompiled contracts for elliptic curve operations, and replaced intermediate state roots in receipts with transaction status codes. These changes enabled modern Solidity compilation targets and expanded the tooling available to ETC developers.

Included Changes

EIPTitleSummary
EIP-100Difficulty Adjustment for UnclesTarget mean block time including uncles
EIP-140REVERT InstructionAllows contracts to signal failure without consuming all gas
EIP-161State Trie ClearingRemoves empty accounts created during DoS attacks
EIP-170Contract Code Size LimitMaximum 24,576 bytes for deployed contract bytecode
EIP-196alt_bn128 Addition and Scalar MultiplicationPrecompiled contracts for elliptic curve operations
EIP-197alt_bn128 Pairing CheckOptimal ate pairing check precompile
EIP-198BIGINT Modular ExponentiationPrecompiled contract for modular exponentiation
EIP-211RETURNDATASIZE and RETURNDATACOPYNew opcodes for accessing return data from calls
EIP-214STATICCALLNew opcode for calls that cannot modify state
EIP-658Transaction Status Code in ReceiptsReplace state root in receipts with success/failure status

Technical Details

  • EIP-140: REVERT — Before REVERT, a failing contract consumed all remaining gas. REVERT allows contracts to abort execution, return an error message, and refund unused gas. This is essential for modern Solidity error handling (require(), revert())
  • EIP-196/197: alt_bn128 precompiles — Precompiled contracts for elliptic curve addition, scalar multiplication, and pairing checks on the alt_bn128 curve. These enable efficient zk-SNARK verification on-chain — the cryptographic foundation for privacy protocols and Layer 2 scaling solutions
  • EIP-214: STATICCALL — A call variant that guarantees no state modifications. Enables contracts to safely call untrusted code for read-only operations. Critical for the view and pure function modifiers in Solidity
  • EIP-658: Receipt status codes — Replaced the intermediate state root in transaction receipts with a simple boolean status (1 = success, 0 = failure). This simplified transaction verification and enabled dApps to reliably detect failed transactions
  • EIP-170: Contract code size limit — Capped deployed contract bytecode at 24,576 bytes (24 KB). Prevents DoS through deployment of arbitrarily large contracts, which would bloat the state trie

Context

By 2019, the gap between ETC's EVM and Ethereum's had grown significantly — Byzantium activated on ETH in October 2017, nearly two years prior. This gap meant that modern Solidity versions, development tools, and smart contracts could not be used on ETC. Atlantis closed this gap in a single upgrade, bringing ETC's EVM to Byzantium-level compatibility. The upgrade was coordinated across four Core Devs Calls (May–June 2019) with competing timeline proposals that were resolved through community consensus.

Outcome

Activated at block 8,772,000 on September 12, 2019. ETC gained access to the modern Solidity compiler, zk-SNARK precompiles, and the full range of Ethereum development tooling for the first time.


Related