On 17 June, a hacker rocked the digital currency world by exploiting a security vulnerability in a non-hierarchical collective Ethereum investment fund, stealing $53m (£36m) in digital currency.
After a usual cyberattack, this would be the end of the story, with the victims left to grieve their losses. However, nothing is ever simple in the unique and quirky world of cryptocurrencies. Join IBTimes UK as we break down what happened in the Ethereum DAO attack, how it happened and what the consequences are.
What is Ethereum?
Ethereum is the name of a developer platform, where a large virtual network made up of multiple computers around the world make it simpler to build software programs, as the computers can encrypt data and check results without web developers needing to have a prior background in cryptography or mathematics.
The programs run smart contracts – i.e., the applications run exactly as programmed without any downtime or censorship, fraud or possible interference from third parties.
Ethereum uses a digital currency called Ether (ETH) – a variation of Bitcoin – to pay for transaction fees and computational services, and this currency is traded on cryptocurrency exchanges just like other virtual currencies.
What is The DAO?
The DAO, which stands for decentralised autonomous organisation, is essentially a large online collective, a crowdfunded investment fund where no decision can be taken without everybody agreeing to it. Users put in as much Ether as they want and receive DAO tokens. If people want to invest the money into certain projects, they need to submit proposals, and the members of the collective vote on whether the investment should be made.
So what exactly happened?
On 17 June, a hacker used a weakness in the DAO's code to drain 3.6 million ETH ($53m), essentially a third of the fund, into his account, within just a few hours. To prevent the hacker from withdrawing the tokens, converting them back into Ether and then withdrawing the digital currency as cash in the real world, Vitalik Buterin, a Russian programmer who co-founded Ethereum, decided to freeze the entire fund. This means that 25,000 members who hold DAO tokens cannot access them, for now.
To make matters even more interesting, on 18 June, the hacker posted a carefully-worded letter on Pastebin, stating that he deserved to keep the $35m and that the DAO had to release it to him.
Since the DAO is decentralised, there are no terms of conditions or governing laws, so the hacker said his law firm confirmed that his actions were fully compliant with US criminal and tort law, and therefore, by using the feature, he considers the 3.6 million ETH to be a "reward" from DAO (see: Legal experts examine the DAO attack and Ethereum fork).
"A soft or hard fork would amount to seizure of my legitimate and rightful Ether, claimed legally through the terms of a smart contract. Such fork would permanently and irrevocably ruin all confidence in not only Ethereum but also the in the field of smart contracts and blockchain technology. Many large Ethereum holders will dump their ether, and developers, researchers, and companies will leave Ethereum. Make no mistake: any fork, soft or hard, will further damage Ethereum and destroy its reputation and appeal," the hacker, who calls himself "The Attacker", wrote on Pastebin.
"I reserve all rights to take any and all legal action against any accomplices of illegitimate theft, freezing, or seizure of my legitimate ether, and am actively working with my law firm. Those accomplices will be receiving Cease and Desist notices in the mail shortly."
How did the attack work?
Whenever a member of the DAO decides they want to exit the investment scheme and get their Ether back, they do so by calling the function name splitDAO(). They need to also supply some of their own code with the transaction to tell the DAO how to transfer the tokens back into Ether in the user's account.
The hacker found a bug in the splitDAO() function, which meant when it called the recipient's code to transfer the Ether over, he could write the code in such a way that it kept calling the same function again just before completing the transaction.
This then led to a cycle of the transaction repeating itself over and over again, transferring the Ether over again and again. In theory, this means the hacker could initiate the splitDAO() function repeatedly until the entirety of the tokens stored on the DAO had been drained.
So what happens now?
While you would think that the sane, sensible thing to do would be to undo the hacker's transactions and return the Ether to all the users' accounts, this goes against the way decentralised cryptocurrencies are meant to work.
The only caveat is that when you decide to exit the investment fund, the DAO makes you wait 27 days before you can withdraw your money, so the hacker can't actually use the money for almost a month anyway. However, no one wants to be ripped off, which is why Buterin decided to make a "soft fork" to lock up all the Ether inside the DAO.
The problem is that the entire principle of cryptocurrencies is to get around the corruption inherent in human nature, whereby the DAO's code is the contract and cannot be reinterpreted by humans. A group of decentralised people called "miners" add transactions to the network by running the mining software on their computers, and it is designed so that no one person can make a decision without collective approval.
So by changing the code to prevent the theft, this causes a "fork" in the blockchain, so the miners who run the software as they have done in the past are on one blockchain, while the miners who update their software to make the hack impossible are essentially working on a completely different blockchain. And if at least 51% of all the miners do not agree to all update to the new software, the existing blockchain will be broken.
Cryptocurrency magazine Cryptocoins News says it has an exclusive interview with someone claiming to be the hacker, and this person claims he is willing to pay the miners one million Ether (about $12m) if they agree not to update to the newest version of the software.