My thoughts on the debate currently occurring in the Ethereum community over The DAO hack
ethereum·@arhag·
0.000 HBDMy thoughts on the debate currently occurring in the Ethereum community over The DAO hack
I felt like sharing my opinions on the hardfork or no-hardfork debate happening in the Ethereum community now as a result of the hack on The DAO. I think the particular choice to make should depend on the values the Ethereum community wishes to continue with for their smart contract platform. I'm not actually part of that community and it is not my intention to push my values onto that community with this post. What I will say is that in a DApp or smart contract platform built and used by people sharing my values, this debate would ideally be a settled issue for the community well before any hack even occurred: agree to hardfork to fix bugs to match the intent behind DApps. In fact, that platform would ideally be designed from the beginning to easily handle the eventuality that all DApp code will have bugs that will require human consensus to fix with a hardfork. As you can probably tell from the above, the "iron will of immutable code" argument never really appealed to me. I think reducing ambiguity in contracts is important, and automating the execution of contracts where possible is useful and efficient. But it will never be possible to resolve all ambiguity in the _intent_ of the deal made by all parties of a contract, and it will never be feasible to perfectly translate that intent to a programming language. And I think living in a world where intent isn't considered at all in contract execution is a silly world given how infeasible it is to write code that perfectly executes what all parties wanted; it would just scare people away from using ["smart"](https://steemit.com/ethereum/@dantheman/ethereums-not-so-smart-contracts) contracts in the first place. So I think some sort of backup human-based dispute resolution process is necessary for a system to gain any serious traction. I'd prefer the "judge" for that process to be decentralized and also agreed to a priori by all the contract parties. In the case of [fully independent blockchains](https://steemit.com/steem/@dantheman/smart-contracts-for-investors--how-to-separate-myth-from-reality), the ultimate judge (ignoring any possible legal requirements/restrictions imposed) are the people using the blockchain. They choose which fork of the blockchain they wish to continue using (and therefore which is the one that retains the economic value in its core tokens). However, to make the process of reaching social consensus on a fork easier on them, they might just go along with the fork chosen by the dynamic decentralized group responsible for producing blocks and maintaining blockchain consensus (e.g. majority witnesses in DPoS systems, or majority miners in PoW systems). And in the case of a DPoS system, their views are in a sense being represented in that choice anyway, since they voted in the people in that dynamic decentralized group and can change their vote at any time if they don't like their decisions. The platform can also have more formal processes of gauging stakeholder preferences directly for more controversial (and less urgent) hardfork changes. In the case of a DApp running on a sidechain, the multisig authority holding the assets/tokens needed for the DApp could act as the judge. But they could also delegate judgement to some other dynamic group whose membership rules were codified (as a simpler program that should be less likely to have bugs) a priori for the DApp; and, if even the simpler delegated judge program had a severe bug, then the multisig asset custodian authority would act as the backup judge. These judges would be the ones to ultimately decide on the hardfork to carry on with, where the decision is based on the intent behind the contact/DApp they are executing. Their incentive to make the judgement in this manner is to keep a good reputation with users for future business as witnesses/custodians for sidechains (and perhaps also to avoid legal liabilities they would likely face if they were to blatantly disregard the common sense intent of the contract/DApp). Okay, but what do I think should be done in the particular case of Ethereum and The DAO? I don't know. On one hand, the only common understanding that existed before people entered into any Ethereum smart contract is that there would be no judges for dispute arbitration (e.g. in the case where the "smart" contract execution deviated from the intent of the contract). People bought into The DAO while seemingly subscribing to the (IMHO misguided) notion of the ["iron will of immutable code."](https://daohub.org/manifesto.html) Under this philosophy, it is wrong for any soft or hard forks to be used to thwart the "attacker" (attacker is in quotes because under this philosophy it is logically inconsistent to consider the person who exploited/activated the recursive-split vulnerability/feature to be an attacker or thief). So in that case, The DAO token holders just need to eat the loss. A white hat hacker could still try to exploit the same hack (and use other clever hacks like the stalker attack) to try to mitigate the damage by saving some of the funds and/or pressuring the "attacker" into cutting a deal to return some of the ETH. (Note: Even under this common understanding by the Ethereum community for entering into Ethereum smart contracts, it doesn't mean a court ruling would be aligned with this philosophy. Who knows what a court would rule if it actually came down to that. Also, I am not a lawyer and none of this is legal advice anyway.) On the other hand, people did (or should) know that the blockchain consensus rules means that the majority of miners get to decide on which fork to follow. So it is perfectly valid for them to all hardfork Ethereum to whatever they like. And people who disagree with that fork can also create their own Ethereum fork (perhaps the fork with the original rules) that maintains their values. But in that case they would need to tweak the consensus PoW algorithm to be different from the other fork and hope other miners don't try to take over their fork (or even better switch to PoS and not worry about those kinds of mining attacks, although it is too early to try to rush into a large technical change like that). Obviously it would be pretty bad for Ethereum's network effect and thus future success if there was such a large split in their user base. There is a strong incentive for the community to reach consensus and go one way or the other (hardfork to return ETH to The DAO token holders, or don't and find some other solution which likely involves The DAO token holders taking a huge loss). The only reason this should not be done is if there is truly a large and irreconcilable philosophical divide in the community on the nature of smart contracts and whether intent should matter, in which case it may be best to just split Ethereum according to those values now and get it over with before it leads to more problems later on. Now if the community does decide it is more important to stand together rather than split (which I believe they will), there is the big question of which side will win the debate (hardfork or no hardfork?). Who knows the answer to that, but what I can say as someone who doesn't have stake in that ecosystem is that it sure is interesting and fun to watch this debate unfold from the sidelines. My prediction is that they go through with the hardfork because that seems to be the position that influential and critical members (people like Vitalik, and many core devs and researchers) currently hold. And currently the (still nascent) project is too dependent on these people to risk losing them to a fork. Some might say this indicates that Ethereum isn't actually decentralized. My thoughts are that claim is a little bit unfair, but also not really incorrect. Decentralization isn't black and white. Ethereum certainly isn't completely centralized, but in these early stages of the technology it is normal to expect it to not be very (politically) decentralized either. Decentralization is a process that can happen over time.
👍 firstclass, steemed, itsascam, skywalker, arhag, steemroller, spaninv, stiletto, linouxis9, joseph, jocelyn, error, chocolatemilk, idol, anonimau5, ash, au1nethyb1, steemit200, tombstone, xanthine, dantheman, steempower, vato, trogdor, cass, idealist, stino-san, kaylinart, taoteh1221, benjojo, johnnyd, compumatrix, hedge-x, roadscape, steemid, innuendo, blocktrades, hcf27, xeroc, complexring, yefet, johnerfx, berkah, tinfoilfedora, easteagle13, pixellated, officialfuzzy, proctologic, james-show, tuck-fheman, dmitry, pheonike, bbqbear, bunny, onceuponatime, summon, changby, samupaha, bradly-saunders, modeprator, pstrident, press-release, aizensou, urdawg, newyo, berniesanders, samtoland, stealthtrader, gord0b, sevcsik, troll, bittrex.com, steemtest, bertrandlarsy, vkoreshkoff, alinasunshine, colli, animus, foma17, lukewarm, juneaugoldbuyer, hmfoucault, logic, gribgo, artem-sokoloff, valspeaks, zhuvazhuva, murh, vitz81, stels13d, kalimor, admin2017, love-spirit-nerd, emily-cook, chappers, mummyimperfect, zuheimi, tskeene, dnjsgkr11, panknil, fahrullah, wannis,