Finding DAOism

Kenneth Ng
Blockchain Education Network
5 min readJun 28, 2016

The Decentralized Autonomous Organization, known as the DAO, is an elegantly flawed Ethereum application that we were all so furiously captivated by. In less than a month, it had become the largest crowdfunding campaign in history at over $150M USD with more than 11,000 investors involved. There it sat upon a pedestal as the glimmering Ethereum unicorn full of decentralized promises and democratic dreams. Finally everyone involved had a fair and genuine voice in the outcome of all the proposals they wanted to be a part of. Even if they did not, everything was transparent and readily auditable. It is completely understandable how enamored we were by the promise of the DAO. However, it does not forgive us from being so blinded by the beauty before the madness.

Although ample time has passed since the exploitation child DAO was created, the wound is still very fresh as ether is currently still[1] being siphoned (~4AM EST 6/22/2016). To be very clear, what happened to the DAO was not a hack, glitch, or anything that is not allowed to happen. In fact, the smart contract code is fairly rigid in regards to what would be executed should the payout be called multiple times. RJ Catalano from Eris does an amazing job at explaining and pointing out the exact lines of code at the heart of this exploit[2].

Props to RJ for bringing our attention to these notorious lines of code

In summary, what happened exactly was a dual address recursive call that reused the same vote tokens to send ether. Essentially the self-proclaimed “attacker,”[3] would drain ether but before the balance could register as being withdrawn, it would call another drain thereby never truly completing the transaction so it was allowed to continue draining. The only reason the drainage stopped was because they chose to do so.

At this point, it is no secret that the code is inherently flawed but it is just not enough to be up in arms after the fact. The DAO, unlike the Kardashians[4] will not get better with time. Instead, we are uncovering that there are many flaws in a lot of other smart contract-centric apps, thus making them[5] oxymoronic. As an open-source community that believes in transparency and accountability, we must continue to strive for a better grip on applications such as the DAO. Several vulnerabilities were first made public on May 27th by Dino Mark, Vlad Zamfir, and Emin Gün Sirer in a full paper[6] calling for a “Temporary Moratorium on ‘The DAO.’” Additionally, several days later, Emin mentioned on GitHub[7] to the DAO security team that he had found an exploit that could “empty out the DAO.”

It is rather ironic that a platform created to allow communities to push out truly democratic agendas, is unable to achieve any sort of homeostatic relationship in order to recover itself. Instead, given the graces[8] of the attacker, we use the 27 day withdrawal hold[9] of the child DAO to discuss the best option moving forward. Vitalik and the Ethereum team have proposed the following:

1) Leave everything as is, just move on

2) Soft fork: freeze the stolen assets

3) Hard fork: return all stolen assets

My personal opinion on which would be best is unimportant. Rather, as blockchain and cryptocurrency enthusiasts, our community is in the absolute prime position to recoup from this slip up. Code is just words with specific syntax before it is deployed. We cannot allow petty transgressions to ruin a genuinely promising application. The DAO is not Ethereum, and Ethereum is not the DAO. This should not deter anyone from continuing to use the platform. Rather, we should find solace and motivation through this breach. As we continue moving forward, most application codes will remain open source thus widely available for public criticism. Neither our egos nor our haste should impede us from enhancing our own platforms, as we all do it to fix problems we see in the world. Otherwise, why else are we here? At our current impasse, there is no right or wrong way to handle the situation. There will be naysayers that complain human judgement should no longer be involved with the broken code, and others will complain of foul play.

Regardless of the criticism and the outcome, it is imperative that we do not simply forget this happened. Despite how enchanting that new application or platform may be, there can always be room for errors and exploits. We must either incentivize discovery, disincentivize exploitation, or even a marriage of both. The next step we take as a community is extremely crucial, not just for us on the frontlines, but also in the critical eyes of the world.

[1] Although the amount is almost nothing, 1x10–8, it proves that the possibility is still there

[2] RJ Catalano’s blog post can be found here: https://eng.erisindustries.com/programming/2016/06/18/lessons-learned-dao/ It’s honestly a great read both on a technical level, but also on a personal level because his voice is so apparent in the writing.

[3] According to this exclusive interview in a slack chat: https://www.cryptocoinsnews.com/exclusive-full-interview-transcript-alleged-dao-attacker/ as well as this pastebin: http://pastebin.com/CcGUBgDG

[4] Kourtney is my favorite Kardashian, Kendall [Jenner] is a very close second

[5] Ethereum’s official list of apps vulnerable to smart contract exploitation: https://www.reddit.com/r/ethereum/comments/4omdlf/to_kickstart_the_building_safer_smart_contracts/

[6] The full paper can be found here: https://docs.google.com/document/d/10kTyCmGPhvZy94F7VWyS-dQ4lsBacR2dUgGTtV98C40/edit#heading=h.e437su2ytbf9

[7] Here is link to the notorious twitter exchange between Emin and Stephan Tual who have now blocked one another on twitter like middle school kids: https://twitter.com/ofnumbers/status/745065731868393472

[8] To be honest, the draining only stopped because Vitalik published a blast on the Ethereum blog about potentially hard forking so by stopping short of draining almost half the ether in the DAO, it may lessen the chances for a hard fork

[9] July 14th is the 27th day

--

--