In the DAO attack, the attacker transferred eth from the DAO (at 0xbb9bc244d798123fde783fcc1c72d3bb8c189413
) to the dark DAO they created (at 0x304a554a310c7e546dfe434669c62820b7d83490
). This dark DAO has exactly the same bytecode as the original DAO. Why didn't the attacker make it so their dark DAO could easily send them all the eth it contained? For example by just adding a function like this:
function withdraw() onlyOwner {
msg.sender.transfer(this.balance);
}
Is there some line in the DAO contract(s) that forces a split DAO to be exactly the same as the original DAO?