Home / History / Programmable Money / The DAO & the fork
2015–2017

The DAO & the fork

A reentrancy bug splits the chain; governance gets its trial by fire.

Programmable Money

Story beats & cast

ReentrancyFork coordinationImmutability debates
Events
  • $150M DAO raise
  • Reentrancy exploit
  • ETH/ETC split
Actors
  • Slock.it team — DAO creators
  • ETH core devs & miners — Fork decision-makers

The DAO & the fork

The raise and the bug

A crowdfunded on-chain VC

In April 2016, “The DAO” launched as an on-chain venture fund built atop Ethereum. Anyone could send ETH and receive DAO tokens, which voted on proposals. The raise pulled in ~12 million ETH—about 14% of all ETH then—making it the largest crowdfunding at the time (archived DAO blog ↗).

The contract was complex, lightly audited, and had a crucial flaw: a recursive call allowed funds to be drained before balances updated. The code was live; the money was real.

The reentrancy exploit

On June 17, 2016, an attacker began exploiting the “splitDAO” function, siphoning ~3.6M ETH into a child DAO. Because DAO rules enforced a withdrawal delay, funds were locked for weeks, buying time for a response. Panic set in: should the community intervene? The post-mortem on the Ethereum Foundation blog ↗ shows the scramble.

White hat counter-move

A group of researchers used the same bug to drain remaining funds into a “white hat” DAO to safeguard them. The stage was set: attacker funds in one child DAO, white hat funds in another, both time-locked. The community now had to decide if immutability trumped restitution.

The exploit and white hats

Soft fork debate

Initially, a soft fork to freeze the attacker’s funds was proposed. Concerns about DoS vectors (miners could be spammed with transactions) cooled enthusiasm. Attention turned to a hard fork that would move the stolen ETH to a refund contract. Miner signaling and client releases were tracked publicly (“To Fork or Not to Fork” ↗).

Hard fork decision

After public debate and miner signaling, a hard fork was scheduled at block 1,920,000 (July 20, 2016). The fork code added a state change to return DAO funds to a withdrawal contract. Most miners and clients upgraded; some objected on principle.

Enter Ethereum Classic

A minority refused the fork, continuing on the original chain where the attacker’s funds remained. That chain became Ethereum Classic (ETC), with the rallying cry “code is law.” The split created two communities and two assets, enshrining the lesson that social consensus can override code—but dissent can crystallize into a fork. The ETC manifesto lives on the ETC site ↗.

Fork, fallout, and lessons

Audit culture changes

The DAO bug made reentrancy a household word. Patterns like checks-effects-interactions, mutexes, and pull payments became standard. Auditing and formal verification gained respect; “mainnet is the new testnet” was no longer cute.

Governance realism

The fork proved that “immutability” has a social backstop. Ethereum governance became a mix of rough consensus, client upgrades, and miner/node adoption. The social layer was not optional—it determined which chain won economic majority.

Precedent anxiety

Critics worried the fork set a slippery slope: would Ethereum fork for every big loss? Supporters argued it was a one-off to save early users from a clear bug. The debate lingers in every later incident (Parity multisig freezes, DeFi exploits): when to intervene, and who decides?

Impact on tooling and patterns

Frameworks and libraries added reentrancy guards; Solidity introduced modifiers and safer defaults. Standards like ERC-20 codified behaviors. Developers embraced testnets and audits before mainnet launches. The DAO’s burn mark accelerated Ethereum’s maturation.

Why it matters

The DAO fork cemented the idea that blockchains blend code and culture. It birthed ETC, hardened security practices, and etched the “social consensus vs. immutability” debate into Ethereum’s identity. Every governance conversation since nods back to this moment.