MSTR Cat

Blockchain/Level VI · After bitcoin/6.3 Ethereum and smart contracts/Lesson 3

The DAO hack and Ethereum Classic

The reentrancy bug that split a chain and defined the debate on immutability

MaterialsA block explorer interface (e.g., Etherscan)The DAO smart contract source code (pre-fork version)A notebook for tracking state variable changes

Wonder

  1. Why does a line of code that executes before state updates allow an attacker to drain funds repeatedly?
  2. What happens when a community votes to rewrite history rather than preserve it?
  3. Who holds the final authority: the consensus mechanism or the developers who maintain it?

Explore

  1. The DAO launched in April 2016 as an autonomous venture fund, raising approximately 12.7 million ETH from over 11,000 investors. This amount represented roughly 14% of all ether in circulation at the time. The project operated entirely through smart contracts, allowing token holders to vote on which projects to fund without centralized management or traditional corporate governance structures.
  2. On June 17, 2016, an attacker exploited a reentrancy vulnerability in the DAO’s split function. This bug allowed the contract to be called again before its internal balance was updated. The attacker drained approximately 3.6 million ETH into a ‘child DAO,’ where a 28-day holding period froze the funds. This exploit demonstrated that Turing-complete machines introduce complex state management risks absent in simpler systems like Bitcoin.
  3. The Ethereum community faced an immediate dilemma: honor the immutability of the ledger or protect investors from a critical code failure. Developers argued that the bug was an implementation error, not intended behavior, and that leaving funds locked would undermine trust in the platform’s utility. Critics countered that altering chain history violated the core promise of decentralized consensus, setting a dangerous precedent for future governance interventions.
  4. On July 20, 2016, Ethereum executed a hard fork at block 1,920,000 to reverse the attack and move funds to a refund contract. DAO token holders could then reclaim their ether from the refund contract. A minority rejected this intervention, continuing to mine the original unmodified chain. This group formed Ethereum Classic (ETC), adhering strictly to the principle that ‘code is law’ and that no entity should have the power to rewrite history.
  5. The fork created two parallel realities from a single ledger. While Ethereum continued to develop into a major smart contract platform, Ethereum Classic remained a smaller network, largely serving as a philosophical statement on decentralization. The incident influenced subsequent protocol development across cryptocurrencies.
  6. Look up block 1,920,000 on an Ethereum explorer and on an Ethereum Classic explorer: the two chains are identical through block 1,919,999 and differ from block 1,920,000 on. The fork did not move the DAO’s ether with a transaction; the new client software applied an irregular state change at that block, which is why the reversal appears in the code rather than in any transaction list.

Key facts

  • The DAO raised approximately 12.7 million ETH, roughly 14% of all ether in circulation at launch.
  • A reentrancy bug allowed an attacker to drain about 3.6 million ETH into a child DAO on June 17, 2016.
  • Ethereum hard-forked on July 20, 2016, at block 1,920,000 to reverse the attack and return funds.
  • A minority continued mining the original chain, which became Ethereum Classic (ETC), citing ‘code is law’.
  • The fork resulted in holders possessing both ETH on the new chain and ETC on the old one.
  • The incident sparked enduring debates about immutability, developer authority, and the definition of consensus.

Exercise nine, six, three, one

9CollectList 9 instances where a software update or protocol change altered existing user data or transaction history. Note who initiated the change and what justification was provided.
6ClusterGroup the 9 into 6 categories based on whether the change was a bug fix, a feature addition, a security rollback, a consensus upgrade, a hard fork, or a soft fork.
3DistillReduce the 6 to 3 kinds of authority that ended up deciding these changes.
1CrystallizeWrite 1 sentence on what ‘code is law’ promises and what it sacrifices when code fails.

Fact check

Dates, figures and claims checked against the published sources listed below.

Open in the interactive academy →

PT ES ZH JA KO RU DE FR MS