Why Etherum Should Fork to Save the DAO

in #ethereum9 years ago

Blockchain tech is just a solution to the Byzantine General's Problem. It's utility is that it allows people who don't trust each other to nonetheless reach consensus on the state of the network/ledger. But, it doesn't prohibit people who do trust each other from acting in a coordinated way (that is, colluding) to either protect the viability of the network itself or to attack it. When done to attack the network, such collusion is commonly called a "51% attack". When done to support it, it's commonly called a "fork".

For me, the question is which threatens the future viability of the blockchain most--reversing a series of transactions that resulted from a hacker exploiting an obvious coding error, thereby prohibiting a thief from stealing lots of coins or 2) insisting that "code is law" and that no transaction, not even those that result from obvious and extremely costly mistakes, should ever be reversed.

I argue that refusing to reverse via a fork, and thereby refusing to honor the original expectations of the DAO participants and developers, does the more damage to the network than forking would. If this particular exploit had been known with certainty to every DAO participant in advance, how many of them would have actually put money into the DAO? Easy answer: Few to none. And, if such hidden exploits are likely to exist in the future and participants have absolutely no recourse, how many are likely to invest in the future? Fewer. Much fewer.

Insisting that "code is law" and refusing to correct via soft or hard forks what we now know was obviously a coding error is essentially to insist that every single smart contract in the future will serve as a "trap for the unwary", with the "unwary" being essentially anyone who can't read code for themselves (and even a large portion of those who can). Note that taking this approach creates a perverse incentive for unethical smart contract developers to "build in" obfuscated backdoors that the developer himself/herself eventually intends to exploit.

Even if we assume naively that all developers will act in good faith, the fact is that virtually ALL software has SOME exploitable bugs, even audited software and even open source software. Smart contracts are ultimately just software, software that cannot be edited, and every one of them that is sufficiently complex will likely be buggy.

If the Ethereum community's position is going to be that there is never any recourse for buggy software because "code is law", even buggy code, then it's future growth and success relies upon expectations of the impossible: That programmers will suddenly begin to consistently write complex code that is bug free, or that the market will suddenly get much, much better at knowing in advance which software is buggy and which is not. Neither of these are likely absent major innovation.

In short, my contention is that market participants will respect and value that the Ethereum community independently chose to prevent a thief from undermining every single DAO participant's original expectations to the thief's great advantage. Reversing things via a fork will instill confidence in the system, leading to continued growth and investment. Failing to remedy the situation will result in the opposite: A permanent loss of confidence and decreased growth and investment.

Does this mean that we will have a hard or soft fork every time we discover a bug in a smart contract? Obviously that won't be possible once there are thousands or millions of smart contracts running. And, in some cases, it will be much less clear whether or not the software in question was in fact "buggy" or instead functioning as intended. Even so, just because the Ethereum community won't always be able to intervene to fix an error doesn't mean that it should not do so in this instance where the facts are clear, the error is obvious, and the amount at stake is large.

Disclosure: I do hold some ether, but I'm not a participant in the DAO.

Sort:  

I wonder if the mining pools and exchanges are in favour of the fork.

Pro-tip: vote for your own posts. It may seem a bit strange at first, but it's a good practice.

I wrote this on an opposing post, just thought I would get the dialog open by posting here...

I am a Ethereum token holder, and more so, a DAO token holder, and i think the best thing for the network is to take the loss on the chin, and move on. This was not the view I held on Friday, but after listening to all parties involved, I made a u-turn on the argument.

First of all, I am in favour of a soft fork. Locking down all DAO related transactions whilst the community has time to figure out the best way to move forward is a good thing, and should yield the right result for everyone in the long term. Knee jerk reaction from the Ethereum Foundation, and DAO token holders was, the hacker has stolen funds from The DAO and this shouldn't be allowed to stand. This is however not the case, the DAO is structured in such a way that the Hacker was purely being rewarded for his activities, well within the rules set out by the DAO contract code.

"The terms of The DAO Creation are set forth in the smart contract code existing on the Ethereum blockchain at 0xbb9bc244d798123fde783fcc1c72d3bb8c189413. Nothing in this explanation of terms or in any other document or communication may modify or add any additional obligations or guarantees beyond those set forth in The DAO’s code. Any and all explanatory terms or descriptions are merely offered for educational purposes and do not supercede or modify the express terms of The DAO’s code set forth on the blockchain; to the extent you believe there to be any conflict or discrepancy between the descriptions offered here and the functionality of The DAO’s code at 0xbb9bc244d798123fde783fcc1c72d3bb8c189413, The DAO’s code controls and sets forth all terms of The DAO Creation."

Quoted from https://daohub.org/explainer.html

The reason I think the soft fork should be implemented is that the Ethereum foundation did back the project, and many people invested far more Ethereum than they would of otherwise. The DAO code was independently tested by security firms, and token holders in my opinion had good reason to feel at ease investing in the project. If the soft fork is adopted, I think that the Hacker should be offered a sizeable bug bounty in this period in exchange for returning the funds to the DAO. The hacker is not a 'terrorist' and has mearly exploited an opportunity which was explicitly fair as set out by the DAO code.

If this proposal is not accepted, then the child DAO holding the hackers funds should be frozen until (if ever) someone devises a way of retrieving the funds without using a hard fork. a single entity gaining 4% of the Ethereum market cap is really bad for market confidence in Ethereum, but so is any precedent set that protects smart contract code mistakes with a full refund. This is exactly the kind of scenario decentralised networks are trying to avoid, and anyone who was against 'the bankers bailouts', should be against this too.

Good thoughts. Thanks for sharing. Your position seems to hinge largely upon the terms of the DAO and its statement that the code would control. While a valid statement, it ignores two key points that I made in my original post: (1). That the terms of the DAO can't and don't supersede the "terms" of Ethereum in general, which can and does allow miners to collude to fork, and even reverse transactions, when doing so protects the network, and (2) everyone knew this going in. In Blockchains, miners rule, and miner collusion can be either good or bad depending upon its purpose and result.

I can only repeat the question already asked by others: why do you bother to use a blockchain then? Everything you describe can be achieved with the standard centralized technology and a multi-sig account.

Unlike centralized technology, blockchains are highly censorship resistant. Not censorship proof (since miners can collude), but highly censorship resistant. They are resistant because: (1) getting different miners with different political and economic agendas to collude is difficult and costly, (2) minors are only likely to collude when doing so obviously supports the network and token value and not when doing so undermines them (game theory 101), and (3) a sufficient number of miners generally cannot be legally compelled to collude.

The DAO situation provides a perfect example. Miners will only fork if they believe doing so supports network and token value and is worth the cost. And even if authorities wanted to compel miners to make DAO participants whole via a fork, they couldn't (both as a practical matter and as a legal matter).

blockchains are highly censorship resistant

My dream is to make blockchain censorship resistant both from the outside and the inside - there should be no way a majority could blacklist a single person and shut him up. As long as you play by the rules hard-coded in the blockchain, nobody, even the majority should be able to exclude you. This is how I understand being censorship resistant.

Tauchain will be different. They say there will be no bugs, which is quite some statement in my opinion. But regarding ethereum and any other blockchain, I agree with your reasoning!

Yes. Maybe Turing completeness IS the problem.