Code Is No Law, Law Is No Code

The feature was written by Alexander Boldachev, a philosopher, the member of Russia’s Futurology Association, and eGaaS analyst exclusively for ForkLog.

The advantages of blockchain are obvious: immutability of data, enhanced security and removal of intermediaries. The means to attain such advantages are also known: it’s a special cryptographic algorithm and decentralization. It seems that supplementing blockchain with smart contracts produces a perfect tool ensuring trusting relations between network parties without intermediaries.

However, something went wrong. After The DAO drama it has become obvious that the system built on the principle of ‘the code is the law’ lacks something substantial. Could it be, well, the law? Which is not the code.

Are Smart Contracts Really Smart?

First of all, it’s worth noting something that is obvious even to non-coders: so-called smart contracts aren’t that smart.

They’re not smarter than a dump tank: if water reaches the predetermined level, the orifice closes, and if someone pushes the button, the water flushes. Smart contract is but an algorithm running a series of standard operations with data, and is no different from any other script. I hope the idea is clear: if some algorithm written on a paper is turned into a code, it won’t make it any smarter.

The Problem of Ledger Immutability and Independence

The traditional requirement of immutability and independence of distributed ledgers is usually perceived too literally: we’ve got what we’ve got, don’t touch it.

Indeed, the technology guarantees safety of all transactions up until present moment: changing even a bit in the signed block is nearly impossible. However, nobody can prevent changing the state of ledger with subsequent transactions. However, it’s possible only if the procedure for said changes is stipulated by the laws of the network.

Say, there is a contract law that transacts tokens from account A to account B in case some stipulations are observed. Or, in other words, there is a ‘legal’ option of rectifying the consequences of a theft, i.e. returning the assets to the victim’s account.

Signing a rectifying contract law by more than a half of network members (who somehow confirmed they have a right to vote) could be a condition for launch of said contract law. Or, just to save time, they could assign just one member in advance, and entitle him or her to launch a different contract law that freezes the assets. One doesn’t have to be smart or use smart contracts. It requires a regular algorithm known since the dawn of civilization. It’s called ‘legislation.’

Notably, the application of contract laws as provided in the example above doesn’t violate immutability and independence of ledgers, nor it infringes decentralization. Neither record has been changed, after all. The problem was tackled by the network resources, i.e. dedicated contract laws. Still, any code has to be accompanied by a controlling law, and a system enabling its enforcement has to be in place to tackle the consequences of code errors.

Network Security

A code may ensure security only in the simplest possible cases when it provides for all possible cases of the parties’ behavior. When it comes to modelling some complex activities with a code, the security may be enforced only by a collective mind, i.e. a legislation system featuring both contract laws and people ensuring their creation and launch.

It raises a question of whether a human can make a mistake while changing a malevolent contract and suspending the account? Sure, they can. However, an erratic termination of a trouble contract is lesser evil than possible consequences of a failure to act. Presence of laws cancelling erratic decisions or launching a rectifying contract, as well as a law describing the procedure for changing the entitled person (all following a vote), could make the entire system viable.

Decentralization

The concept of decentralization could be considered from different points of view. Technically, it guarantees network reliability, i.e. keeps it working even if many nodes go offline. In terms of information, lack of a single place for data storage covers the issue of their trustworthiness. However, there’s another level here: it’s the governance level, i.e. the level of decision making and the responsibility it entails.

This level was ignored in Ethereum and, consequently, in The DAO. That’s why Ethereum had only two options: leave it as it is, or roll it back and start all over again.

So, decentralization isn’t that simple. It ensures trustworthiness and reliability, however, it lacks a centralized entity capable of instantly making a decision, which leaves the system vulnerable to random or deliberate errors.

Immutability of Code

Immutability of contract codes in Ethereum, just like decentralization, has two sides to it. Of course, it’s great that the code can’t be changed by either party, and is executed like a law. On the other hand, even a thoroughly written law could incorporate some errors. A software product could have bugs enabling its misuse. While legal errors could be rectified by a court, and the laws could have amendments, the problems with immutable contracts like those in Ethereum could be tackled only by rolling the system back.

Therefore, one has to assume that any contract can’t exist by itself, without a framework of laws or rules regulating its applicability and providing for its suspension and alteration. It’s only reasonable: there has to be a law that becomes enforceable in case of unforeseen circumstances for each not-so-smart contract. If solving the problem requires a human mind, it should be stipulated in the law. The system has to have a mechanism enabling a person to change the code.

Intermediaries

Certainly, one should pay attention to one of the main advantages of distributed ledgers, which is elimination of intermediaries. Of course, a notary who certifies a signature or availability of a document could be easily replaced with a code: sign it with a private key and seal it in the block. But what if the task is more complex? What if it involves property relations requiring that contracts are in strict compliance with laws?

In most cases, an intermediary who allegedly dissolves when you switch to distributed ledgers, is an intermediary between contract parties and the nation state, not between the parties. So, discussing removal of intermediaries and reducing transaction expenses seriously is possible only when the entire government system is blockchainized. And it should be a uniform international blockchain platform, not an intra-government ledger.

A Law Is a Law

So, any contract, just like any other socially significant action, can be implemented only in a legal environment. Any citizen, just like any distributed ledger network user, has to be aware of current legislation and heed it.

On the one hand, contract creators have to be sure their data are protected from counterfeiting and loss, and the algorithm is successfully executed. Still, on the other hand, they have to understand that in critical situations the law code will become enforceable to protect the interests of the system, and therefore, all its users. And it will involve a certain person who, according to the law, is entitled to make an immediate decision.

If there’s somebody using contract errors for their own benefit, they should know that a law eliminating consequences of unsanctioned actions will be enforced. It will not delete a part of the ledger or roll it back, but will use a series of new transactions. The ledger’s continuity will not be violated because the changes will be in accordance with the contract law available in the network.

Code is no law. It doesn’t solve problems. Just like people, it may only cause them. Law is no code as well. It’s just a way to use human mind to tackle problems and eliminate code errors.