Sascha Mattke sent me questions for what turned out to be a very nice article on smart contracts in the print version of Heise Technology Review, Oktober 2017 (published 14 September 2017): »Manche verstehen nicht, wofür es Gesetze gibt« (“Some don’t understand what laws are for”). It’s been a few months since it was published, so (with Sascha’s OK) I’m putting my original unedited answers in English to his emailed questions here for your amusement.
Smart contracts seem to be all the rage — could you define what they are at all?
The idea is to make some contractual arrangement — as in, one involving money — automated. The idea is to make some aspects of the law and business more efficient. Computerising things is obviously a useful idea, because human intervention is expensive.
But it gets complicated, because not everything that can be automated should be automated. The legal system — which can be thought of as legal code — and computer code don’t map very well to each other. So you’re trying to automate human intent, and we don’t have a computer that can read minds.
The trouble is that it’s easy to automate the easy bits, but most of the cost of this sort of system will be in handling the exceptions. What do you do when things go wrong?
The concept of “smart contract” includes the idea that the system is immutable — that it can’t be changed once it’s in place. The reason for this is so that it can’t be interfered with by outside forces. But this also means you can’t fix problems, you can’t fix bugs in your code and you can’t adapt to changes in circumstances.
Can you think of a real-world example where this concept is already put or being put to good use?
People interact with systems that automate social interactions or procedures all the time. It’s an obvious thing to do with any sort of data processing — if you can remove the human element, you can save money.
Usually these aren’t labeled “smart contracts”. Also, they don’t usually have the immutability guarantee. The social expectation is overwhelmingly that problems can and will be fixed, that a human can come in and fix a problem. Nobody accepts any automated system with no customer service, unless they’re more or less forced to.
The main present-day use of smart contracts is to run ICO tokens on Ethereum … which sounds amazingly limited, given all the hype about them, but it really is the most prominent use case for smart contracts.
And an example for bad use?
Again, there aren’t many system labeled “smart contract” where people are actually using it. There are lots of systems where you could say “well I suppose that’s a sort of smart contract” …
It’s important to remember that for twenty years, smart contracts were purely hypothetical. Nick Szabo came up with the idea and wrote hypothetical plans for it. I looked into this question for the book, and Ethereum turned out to be the first practical smart contracts platform that anyone used for anything. People tried doing smart contracts on Bitcoin, because of the immutability, and it didn’t work very well because the Bitcoin scripting language is quite limited. That’s part of why Vitalik Buterin started Ethereum, with full Turing-complete languages.
So I suppose we’d have to look at how people used Ethereum. Some of the ICO contracts are not good uses. The DAO hit every objection that smart contract sceptics had to the idea — you can’t fix bugs, you can’t adapt to circumstances, legal code doesn’t map well to computer code, the legal environment is unclear — but I think even the smart contract sceptics were surprised when they just threw away the immutability! That was the whole point of the system, that was the guarantee of market integrity! And they threw it away as soon as the big boys were in danger of losing their money.
Of course, the recent SEC ruling shows the other problem with The DAO — declaring yourself immune to securities law doesn’t make you immune to it. The SEC opinion detailed every violation they committed, and then said “we won’t prosecute this time” — but it’s obvious they will next time someone does something this clearly in violation.
What’s conceptually wrong about smart contracts?
I think it’s a failure to understand what laws are for, what legal systems are for. Nick Szabo is not actually at fault here, because he’s a computer scientist but he went and studied law, he understands how both systems work. So his proposals are usually more sensible, he advocates a limited role for automated contractual systems with the possibility of human intervention for extreme failures, and so on. I don’t think his systems would entirely work, but he did approach it with the right background.
But you see people proposing systems that are extreme computerisation of daily life. To literally replace judges and lawyers with computer code, as if all questions can be determined programmatically. The trouble is that in real legal systems, it’s always the worst questions that come to court. Something where there’s any dispute, and where human judgement can’t be avoided. This is the deep conceptual problem.
The more shallow problem with a lot of current proposals is that they want to automate things that need human judgement. You can’t smart contract the arrival of, say, a shipment of goods — you can have a computer decide if the shipment has arrived, but you can’t have it decide if it’s what you actually ordered, or if the goods are up to the agreed quality. In software testing, this is called the “oracle problem”, how to decide a condition without human intervention. Pretty much any smart contract proposal that doesn’t act purely on-blockchain is going to have this problem, because all the interesting uses need human judgement about the outside world.
One of the biggest issues seems to be conflict resolution/immutability — couldn’t this be addressed by an additional layer of logic in the contract, like a built-in court?
At some point you’re going to need a human making a decision, understanding all the facts at hand. That is, you need someone to be the judge. Legal contracts are about human intent, and what people meant when they signed the contract.
Code is law, as Lawrence Lessig said — aren’t smart contracts merely the natural consequence of this thinking?
That’s an interesting philosophical aspect, yes! I think the ideas arose separately. I mean, Lessig and Szabo were both around in the time of the early Internet, and they’d have drawn on a common pool of ideas. But I think they were working from opposite angles. Lessig was really talking about using code to get around oppressive laws. But yes, they are comparable ideas — where you have a written law, but you have what the code actually does, and what the code actually does wins. I do think rule of law has to win eventually, but I do like it on some of the occasions when rule of code wins. It’s all part of trying to muddle our way through to a workable system for society. All of this is difficult.
There’s a new kind of utility (Sonnen GmbH) in germany that uses customer’s battery for grid stabilisation, and they say this couldn’t be done without blockchain/smart contracts. Do you buy that?
I had to look into this one. It appears to be a trial run by IBM. I talk about this in the book a bit — if there’s a press story, see if it’s an IBM press release, they’re running trials for lots of systems that don’t really need a blockchain as such. It’s a permissioned blockchain, which means everyone on it is authorised to be there. A permissioned blockchain is another term for a really inefficient clustered database. Everything about this ultimately comes back to a central authority, and if this actually was useful beyond its pilot phase, they could immediately increase efficiency and cut costs by keeping all the data centrally, with whoever authorises people to join the blockchain taking on the role of central arbiter — because they’re doing that job already. IBM has put Hyperledger into this job to sell Hyperledger, not because the task requires a blockchain.
If the majority of concepts for smart contracts are nonsense/overkill, what real use cases do you see remaining?
I really can’t see a lot of use cases for the standard conception of a smart contract. Immutability means you can’t fix your mistakes, any interesting use case has the oracle problem, and a permissioned blockchain is functionally the same as a centralised database but way less efficient.
The actual use case for smart contracts remains ICOs. With those, the problem is mostly that they’re bad excuses to print your own money that is then traded as an unregistered security.
How interwoven are smart contracts with blockchain technology?
They originally weren’t. But as I said, when Bitcoin came along, people who’d heard of smart contracts thought, this has immutability, we can use this! And Nick Szabo was on the Cypherpunks list, where a lot of bitcoin ideas originated.
Of course, as I said Ethereum is the first practical smart contracts platform. So now they’re associated closely. But they really started as separate ideas.
If smart contracts would prevail anyhow, what legal/technical/institutional infrastructure would be needed to support them to function properly?
I’m not really sure. It’s possible there’s something to Szabo’s early ideas to automate limited aspects of law and business. But I think having a human in the loop, able to fix problems, is absolutely required. We can’t really have immutability.
Your subscriptions keep this site going. Sign up today!