Blog / Historical Archive
The DAO Hack (2016) and the Ethereum Classic Fork
A reentrancy bug drained 3.6 million ETH and led to the contentious hard fork at block 1,920,000.
A venture fund in a contract
The DAO opened its creation period on April 30, 2016, and raised about 11.5 million ETH, roughly 14 percent of supply and around $150 million, making it the largest crowdfund to date. Token holders were supposed to vote on proposals and could exit through a split function that created a child DAO.
The reentrancy exploit
On June 17, 2016, an attacker called splitDAO recursively. The contract sent ether before updating the caller's balance, so the fallback function could re-enter and withdraw again. About 3.6 million ETH moved into a child DAO, where a 28-day holding period prevented immediate withdrawal.
Soft fork, then hard fork
A proposed soft fork to freeze the funds was abandoned after researchers found a denial-of-service flaw. The community then voted via a carbon vote, and at block 1,920,000 on July 20, 2016, Ethereum executed an irregular state change moving the funds to a refund contract that paid 1 ETH per 100 DAO tokens.
Ethereum Classic
Miners and users who rejected the intervention kept running the unchanged chain, which exchanges listed as Ethereum Classic (ETC) starting with Poloniex on July 23, 2016. ETC remained proof of work and later became the target of several 51 percent attacks in 2019 and 2020.
Engineering legacy
The checks-effects-interactions pattern and reentrancy guards are direct responses to the DAO. Solidity auditors still list reentrancy as a top vulnerability class, and the episode set the precedent that Ethereum would not intervene in later hacks.
By the numbers
For The DAO Hack and the Ethereum Classic Fork, the reference figures are exploit date of June 17, 2016, eth drained of ~3.6 million, funds raised by the dao of ~11.5-12.7 million ETH, fork block of 1,920,000 (July 20, 2016). The comparison table below lines up event, date / block — DAO creation opens: Apr 30, 2016; Exploit begins: Jun 17, 2016; Hard fork: Block 1,920,000, Jul 20, 2016; ETC listed on Poloniex: Jul 23, 2016.
Modeling The DAO Hack and the Ethereum Classic Fork with the Ethereum EIP1559 Gwei To USD Calculator
The Ethereum EIP1559 Gwei To USD Calculator takes three inputs — Gas used, Base+tip (gwei), ETH price ($). Fee = gas × gwei × 1e-9 × ETH price. With its default inputs (Gas used = 21000; Base+tip (gwei) = 20; ETH price ($) = 3000) it returns 1.26 $; swap in the figures from The DAO Hack and the Ethereum Classic Fork above to reproduce the scenario yourself.
Modeling The DAO Hack and the Ethereum Classic Fork with the ERC20 Token Approval Revoke Gas Estimator
The ERC20 Token Approval Revoke Gas Estimator takes three inputs — Approvals, Gas price (gwei), ETH price ($). Cost = approvals × ~46k gas × gwei × price. With its default inputs (Approvals = 10; Gas price (gwei) = 15; ETH price ($) = 3000) it returns 20.7 $; swap in the figures from The DAO Hack and the Ethereum Classic Fork above to reproduce the scenario yourself.
Data Table
| Event | Date / block |
|---|---|
| DAO creation opens | Apr 30, 2016 |
| Exploit begins | Jun 17, 2016 |
| Hard fork | Block 1,920,000, Jul 20, 2016 |
| ETC listed on Poloniex | Jul 23, 2016 |
Frequently Asked Questions
How much ETH was drained?
About 3.6 million ETH, roughly a third of the DAO's holdings.
What was the refund rate?
1 ETH for every 100 DAO tokens.
Why does ETC exist?
It is the original chain kept by those who opposed reversing the hack.
Related Calculators
Related Tokens
Related Articles
For educational and informational purposes only. Not financial, investment, tax or legal advice. Figures are approximate and historical; crypto assets are volatile and you may lose capital. Do your own research.