To Fork of Not to Fork?
TheDAO incident has sparked a debate about how consensus in the Ethereum community should or should not work. Advocates of the Ethereum hard fork have been accused of trying to bail out theDAO for being to big to fail. According to critics, going back in history and reverting transactions kills the idea of an immutable blockchain, thus introducing censorship to a system that has promised to be censorship resistant. The question at hand: Why is Ethereum interfering with theDAO at all? Is there a too big to fail in crypto land?
Purists insist on the rule of code. The so called attacker they claim, was not attacker, but merely used the possibilities of the code to recursively send funds to his/her own address. Since theDAO code was referred to on the website as the only source of truth, the attacker was in fact not an attacker, and all the blame is with the people who wrote the code and promoted theDAO in the first place.
But is it really that simple? Putting aside potential finger pointing for a moment, there seems to be a lot of confusion about terminology & expectations.
How Smart are Smart Contracts?
Smart contracts can only be as smart as the people who developed & audited them. There is no inherent smartness to the contract other than the aspect of auto enforceability. A smart contract simply checks wether participants of a transactions comply with the rules pre-defined in the smart contract. If they do, a transaction is validated, if they don’t, the transaction is rejected. They are rather efficient than smart. Maybe we should start thinking of using the term auto enforceable contracts rather than smart contracts. It would be more accurate and less misleading.
Rule of Code
Can predefined complex smart contracts like DAOs withstand time? Can we really pre-define and pre-regulate all possible human interactions including potential attack vectors of bad actors with complex lines of code, or do we need to develop governance mechanisms for possible edge cases that are bound to happen, the more complex smart contracts get?
Getting rid of the middle man?
Sounds very revolutionary, and is true to some extent, but only some. In complex DAOs we will still need to find mechanisms of how to define/evaluate/integrate expert opinion. We might be able to get rid of command and control middle men, but we will still need smaller and more decentralized middle men who help us form expert opinions. Also, we might be replacing one middle man with a new one: the smart contract itself. Smart contracts in their currents state, are a black box that only an elite of specialized engineers understand. The promise of getting rid of the middle man imho is somehow broken. Unless we find easy visualization tools, unless we can make the inner workings of smart contracts more transparent, we are just replacing one middle man with the other and creating a new line of elite, the coders.
Smart Contracts as a Default State
DAOs are the most complex form of smart contracts, and can therefore only be a default states from which consensus happens, if and when a majority of community thinks it is necessary. We might need to rethink that code can solve it all. Code is not the answer to all questions. Blockchain is a socio, economic, technological revolution. Technology being only one of three pillars, and probably the least important one. We need to rethink the idea that all potential human conflict can be evaded by writing good code. People are people. Code can simplify transactions, but not magically erase human bias and interpersonal conflicts. Furthermore code does not (yet) write itself. It is prone to human error. We need to work on decentralized dispute settlement and governance mechanism around the smart contracts and blockchains to make decentralization happen.
Last but not least: Censorship
In a decentralized community like theDAO or Ethereum, no one single entity can make a descision without the majority of the community agreeing. So, if there is consensus about changing the current consensus, can this really be called censorship, or rather a community driven natural evolution of the code? Another question that still arises: how do community members form their decisions. How is a mass of non experts supposed to decide on expert issues if they don’t have relevant and necessary info? How can we make sure that not the loudest voice in the (chat)room wins the argument, but the most competent source? What we can learn from the last few weeks is that we as a community will need to work on these tools because they are not here yet. So far the focus was on building the blockchains and making smart contracts work, the rest was neglected. We will have to find ways to visualize decisions trees and expert opinion, to support adequate decentralized decision making. But in the meantime, the pressing questions at hand remains:
Should we hard fork?
Everyone will have to decide for themselves and the community will decide by consensus. Here is an (incomplete) list of links to opinion pieces published by different community experts in the last two weeks to help your decision making process. Feel free to submit links that you think should be included and I will add them.
The big theDAO heist FAQ, 19. Juni 2016
The big theDAO heist FAQ — Part II — The path forward, 28. Juni 2016
How we find common ground and settle our differences, June 22, 2016
The DOS Vector and Soft Fork for Miners, June 29, 2016
White Hat Siphoning has Occurred. What Now?, June 22, 2016
Detailed Explanation of Hard Fork & Petition on change.org
What We Can Learn From The DAO, June 21, 2016
Jack Du Rose
Why a post hard fork Ethereum will be more valuable, July 1, 2016
Proposed Hard Fork Specification, July 5, 2016