#1 BTC $80,499.54 -0.17% #2 ETH $2,341.99 -1.24% #3 USDT $0.9991 +0.01% #4 BNB $735.15 -0.20% #5 XRP $1.29 +0.38% #6 USDC $1.00 +0.02% #7 SOL $101.54 -0.58% #8 TRX $0.3290 -0.20% #9 STETH $2,330.79 -1.86% #10 ZEC $1,197.59 +2.37%

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

EventDate / block
DAO creation opensApr 30, 2016
Exploit beginsJun 17, 2016
Hard forkBlock 1,920,000, Jul 20, 2016
ETC listed on PoloniexJul 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