Lessons from The DAO Dilemma
#theDAO dilemma: if code=law, the dao legal, but the attack too: if code≠law, the attack illegal, but the DAO too
Eating and having at the same time
One interesting strand of the “the DAO discussion” dwelves around the issue if code is law or not. In a very straightforward sense, it isn’t, since when it comes to actual jurisprudence, the judges and other experts will see the law at least partially elsewhere. Another issue is whether (some) of the initiators of the DAO or any other DAO like entity want to create a situation where code is law. That is a wish that can be argued for with some merit: the law as it exists is a system that can and has been hacked, bent, made to obey the will of the rich and the powerful. Taking the human element out of the equation can provide predictability.
The discussion contains a nice paradox. If one wants to argue that “code is law” or at least that it should be such, and that is the way the DAO contract is/should be interpreted, then it follows that the attack was well within the parameters of what is “legal”, as the pastebin “open letter” argues. On the other hand, if one wants to say that the attacker’s actions broke the intent of the contract, and are illegal, then one is, a fortiori, also arguing that the original DAO contract could not have been the DAO code, but something beyond it. Whether that “something beyond” is a contract explained in English or something else, one is also pretty much pointing out the fact that the DAO itself failed to follow the securities law. One can not have it both ways: saying that the DAO is “legal” but the attack not, or saying that the attack is “illegal” but the DAO not.
The DAO contract was indeed communicated also in plain English. This means that one viewpoint is to see the code simply as a tool for implementing that plain English contract. From the opposite perspective, it can be claimed that the code is the contract, and the plain English text exists only in order to help the non-code-literate to understand the code-contract. This possibility to see either the code or the English description as the contract and then the code or the description, repectively, as the explanation, is relevant with regard to interpreting what was the intent of the people setting up the contract. Is it expressed in the code or the English text?
Code is code
The attack and the bug that made it possible show that whether code is law or not, it certainly is code. And code that wants to do complex things easily contains hard-to-spot bugs. The code itself does not have to be complex, it is enough that what it intends to do is complex. There are numerous examples of text-books of logic that have been used for years with benefit, before people notice that the axiomatization contaisn a hidden contradiction — the case of Russell’s paradox is maybethe most famous. It is extremely likely (though, of course, not provably necessary) that any human created code that wants to do complex things will contain “bugs”, will do things it was not supposed or foreseen to do. Failing to execute is one of these possibilities. It hard to see what the interpretation of “code is law” is supposed to be in a situation of a code that does not execute, or functions in ways beyond human analysis. So, taken to an extreme the doctrine becomes moot. “Law”, like justice, is a human thing.
On the other hand, it is hard to see why people who want to conduct business in a “coded” manner through predefined smart contracts should not be allowed to do so. Consumer protection is one thing, but it shouldn’t make impossible automated business between consenting adults. Hopefully one of the lasting lessons of the DAO crisis will be that there is no “one-size-fits-all” model, not on the side of traditional business and not on the side of blockchain business. Rather than make overarching and universal structures, in an unknown territory it is better to investigate, send small teams here and there, test, iterate. It would be very surprising if we hit on “the” right model for doing anything straight away, or even during the first years of iteration. Rather than “the” DAO, we need many little daos.