Development version of the DAO reentrancy exploit, deployed June 13, 2016, two days before the attack. Distinct 1886-byte build with a my_balance getter.
Historical Significance
This is the earliest known on-chain iteration of the code that drained The DAO. Deployed on June 13, 2016, four days before the June 17 attack, it is direct evidence that the exploit was developed and tested on Ethereum mainnet ahead of time rather than assembled in the moment. It was deployed from a separate address, 0x1c64baab..., and shares the author's distinctive WRONG event and constuctor fail string with the final drain contracts.
The attack this code carried out on June 17, 2016 removed about 3.6 million ether and led to the July 20, 2016 hard fork that split the network into Ethereum and Ethereum Classic.
References:
Context
The DAO was a decentralized venture fund launched in April and May 2016 by slock.it, whose crowdsale gathered more than 12.7 million ether, the largest crowdfunding event created up to that point. Its splitDAO reward path sent ether before clearing the caller's token balance, the ordering flaw that made reentrancy possible.
This contract belongs to the days immediately before the attack, when the exploit was being prepared. The presence of a working, deployed earlier build on June 13 shows that the vulnerability had been identified and turned into functioning attack code before it was used at scale on June 17. After the attack, the White Hat Group reused the same exploit to rescue remaining funds, and the July 20, 2016 hard fork moved recovered ether to a WithdrawDAO contract for redemption.
Token Information
Key Facts
Description
An earlier development build of the contract later used to drain The DAO. It was deployed on June 13, 2016, four days before the attack, from 0x1c64baabc6d34767b84bebabafe0fa11872bd1bc, an address distinct from the two externally owned accounts that deployed and operated the final drain contracts.
This build has a distinct 1886-byte runtime and does not match the five byte-identical contracts used in the attack. It carries the same recursive splitDAO structure and the same WRONG event that logs the misspelled string constuctor fail, which ties it to the same author. It also exposes two functions absent from the final version: a getter named my_balance (selector 0xf8167eb8, the only identifier from this contract family that appears in a public signature database), and a four argument variant of splitDAO (selector 0xa9ab39ab) where the final version uses a five argument setup function. These differences indicate an earlier iteration of the exploit that was later refined.
This record is documented from bytecode analysis and decompilation. Unlike the five final contracts, an exact source reconstruction of this earlier build has not been produced.
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Homestead Era
The first planned hard fork. Removed the canary contract, adjusted gas costs.
Bytecode Overview
External Links
Related contracts
Development version of the DAO reentrancy exploit, deployed June 13, 2016, two days before the attack. Distinct 1886-byte build with a my_balance getter.
0x137f33...8af200June 13, 2016Reentrancy contract from the June 17, 2016 DAO attack. Its owner triggered recursive splitDAO calls to drain The DAO. Exact structural source reconstruction.
0xc0ee9d...d47b89June 15, 2016DAO drain contract deployed by the attacker EOA on June 15, 2016. Byte-identical to the primary reentrancy exploit. Structural reconstruction.
0xf835a0...977cc4June 15, 2016Second-wave DAO drain contract deployed June 17, 2016 during the attack. Byte-identical to the primary reentrancy exploit. Structural reconstruction.
0xca04d2...6f2cb3June 17, 2016Second-wave DAO drain contract deployed June 17, 2016 during the attack. Byte-identical to the primary reentrancy exploit. Structural reconstruction.
0x44d9ed...ce575dJune 17, 2016DAO reentrancy exploit redeployed June 19, 2016, after the attack. Byte-identical to the drain contracts but never configured. Structural reconstruction.
0xbe3e6a...76aa82June 20, 2016