The DAO Hack: The Attack That Split Ethereum
June 2016. $60 million drained. Ethereum splits in two. The story of crypto's most consequential hack and the birth of Ethereum Classic.

Dive Deeper with AI
Click → prompt copied → paste in AI chat
This is the story of the hack that nearly killed Ethereum.
Not because of the $60 million stolen. But because of what happened next.
A community split. A blockchain forked. And the question that still haunts crypto: is code really law?
What was The DAO?
April 2016. Ethereum is less than a year old. Smart contracts are the hot new thing.
Someone has an idea: what if we created a decentralized venture fund? No VCs. No partners. Just code and token holders.
They call it The DAO - The Decentralized Autonomous Organization.
The concept:
- Anyone can buy DAO tokens with ETH
- Token holders vote on which projects to fund
- Funded projects return profits to the DAO
- Everything runs on smart contracts
It's a radical experiment in decentralized governance.
And it works. Kind of.
$150 million flows in during the crowdsale. 14% of all ETH in existence. Largest crowdfund ever at the time.
The future is here.
The vulnerability
One feature of The DAO: you can "split" - leave The DAO and take your ETH with you. Democratic exit.
The split function works like this:
function splitDAO(uint _proposalID) {
// Check if split is allowed
// ...
// Calculate user's share
uint fundsToBeMoved = (balances[msg.sender] * address(this).balance) / totalSupply;
// Send ETH to user
msg.sender.call.value(fundsToBeMoved)();
// Update user's balance
balances[msg.sender] = 0;
}
See the problem?
ETH is sent before the balance is updated.
This is textbook reentrancy.
The attack
June 17, 2016. 3:34 AM UTC.
An unknown attacker starts draining The DAO.
Here's what they did:
Step 1: Create a malicious contract that can receive ETH
Step 2: Call splitDAO() with that contract
Step 3: When The DAO sends ETH, the malicious contract's fallback function triggers
Step 4: The fallback function calls splitDAO() again
Step 5: The DAO checks the balance - still the original amount (not updated yet!)
Step 6: The DAO sends ETH again
Step 7: Repeat until drained
The attacker didn't do anything clever. They just called the same function over and over before the first call finished.
3.6 million ETH drained. $60 million at the time. Would be billions today.
Why wasn't this caught?
Good question. The DAO was audited. Multiple times.
But:
- Reentrancy wasn't a well-known attack pattern yet
- The code was complex (over 20 files)
- The focus was on governance logic, not edge cases
- "We audited it" created false confidence
A security researcher named Peter Vessenes actually warned about this exact vulnerability two weeks earlier. He was ignored.
The community response
The attack put Ethereum's founders in an impossible position.
Option 1: Do nothing. "Code is law." The attacker exploited a bug fairly. Tough luck.
Option 2: Soft fork. Blacklist the stolen funds. Attacker can't move them.
Option 3: Hard fork. Roll back the blockchain. Return funds to original owners.
Option 1 meant accepting that $60M was gone. And that The DAO's investors included Ethereum Foundation members.
Option 2 had technical problems (DOS attack vector discovered).
Option 3 meant breaking immutability. The whole point of blockchain.
Vitalik Buterin initially supported a soft fork. When that proved flawed, the community voted on a hard fork.
The fork
July 20, 2016. Block 1,920,000.
Ethereum hard forks. The stolen ETH is returned to original owners.
But not everyone agrees.
A minority of the community refuses to upgrade. "Code is law," they say. You can't just undo transactions you don't like.
They keep running the old chain.
Ethereum Classic is born.
One blockchain becomes two:
- Ethereum (ETH) - The forked chain, funds returned
- Ethereum Classic (ETC) - Original chain, attacker keeps funds
The attacker eventually cashed out some ETC. Millions of dollars. Legally, kind of.
The aftermath
The DAO hack changed everything.
For security:
- "Checks-Effects-Interactions" becomes gospel
- Reentrancy guards become standard
- Smart contract security becomes a profession
- Bug bounties become common
For governance:
- Hard forks become a known tool
- "Immutability" proves negotiable
- Community governance gets stress-tested
For philosophy:
- "Code is law" gets complicated
- Social consensus trumps technical rules
- Decentralization has limits when money is involved
Who was the attacker?
Unknown. Probably.
In 2022, journalist Laura Shin claimed to have identified the attacker as Toby Hoenisch, a programmer based in Austria. He denied it.
No prosecution. The attack exploited a bug in the code. Was it theft? Was it just using the software as written?
The legal system has no good answer.
Was the fork right?
This debate never dies.
For the fork:
- $60M stolen from innocent people
- The bug was clear, the intent was malicious
- Community voted for it
- Ethereum survived and thrived
Against the fork:
- Sets precedent for intervention
- "Immutability" becomes conditional
- Who decides which hacks get rolled back?
- Attacker followed the rules of the code
Both sides have points. Neither side convinces the other.
The fork happened. Ethereum is worth 100x what it was. But the question remains: was it a rescue or a violation of principles?
Lessons learned
1. Simple code matters. The DAO was complex. Complexity hides bugs. Prefer simplicity.
2. Audits aren't magic. Multiple audits missed this. Audits help but don't guarantee safety.
3. New patterns are risky. Reentrancy wasn't well-known yet. Early adopters take early risks.
4. Immutability is social. Technical immutability means nothing if the community agrees to change it.
5. Test failure modes. The DAO had no plan for a major hack. When it happened, chaos.
The DAO today
The DAO's code is still on Ethereum. A monument to a $60 million lesson.
Modern DAOs learned from it:
- Simpler withdrawal mechanisms
- Time locks on funds
- Gradual releases
- Emergency pause functions
The concept of DAOs survived. Became mainstream. But everyone remembers: this is how it started.
The DAO hack is the canonical example of reentrancy. If you want to understand the vulnerability in depth, see our technical breakdown.
Further reading:
- The DAO Attack Recreation - See the code
- "The History of The DAO and Lessons Learned" - Vitalik Buterin
- "Thoughts on The DAO Hack" - Phil Daian