Smart Contracts & Language Barriers
Humans talk in human language and computer programs talk in computer language. The two are very different.
TLDR: Smart contracts are neither contracts nor smart. They’re computer programs that perform contracts. Humans talk in human language and computer programs talk in computer language. The two are very different - human language is contextual and meanings are often implicit. Computer programming languages are very explicit and have to context. Lawyers fight a lot over the meanings of words. Smart contracts add complexity because you have a computer language layer on top of human language. This makes things harder, but there are still some advantages.
Smart contracts are neither contracts nor smart. They’re programs that perform legal contracts. Normally, legal contracts are performed by humans. For example, when you trade, you can have an agreement: €1 for 1 coke. This agreement has to be performed by human action (handing over the coke). Now, a vending machine performs the same but without a human. Vending machines are a darling examples for explaining smart contracts because of this. Now think about a computer program that writes up the following logic: if you send me 1 eth now, I will send you 1.01 eth in a week. That’s an example of a smart contract. In parallel, it can have a paper contract that says the same thing, but in natural (human) language. The difference is that you can include the execution in the contract (it will happen automatically if the conditions are fulfilled), whereas on paper, you would need a human to 1) check whether 1 eth has been transferred now, b) transfer the 1.01 eth in one week.
In the broadest sense, smart contracts are just machines that self-execute the terms of a contract. By paper contracts I mean contracts that could be formulated on paper, such as your rental agreement, but also your everyday grocery shopping. We usually don’t think about this, but when we buy tomatoes at a farmers’ market we form an implicit contract: if you give me $2, I will give you 1kg of tomatoes. There is a more narrow sense of smart contracts, the web3 blockchain defi insert buzzword kind. But let’s talk more broadly first.
Let’s dig deeper into the vending machine example. It’s a case study that may be a blow to the naive crypto-anarchist. The naive crypto-anarchist position is that smart contracts are the future basis of law, that in an ideal technocratic society, we’d have programmers instead of lawyers. Their code would govern interactions traditionally governed by the entire legal sector. Here are a few statements reflecting this: “smart contracts would remove bureaucracy”, “smart contracts allow for military conflict to be codified, which would resolve them faster”, “a smart constitution would transform governments” (all of these quotes are from Lex Fridman, which is ironic given his first name).
The argument goes: what are traditional contracts if not a series of if-else statements? So are smart contracts, therefore, smart contracts will replace paper contracts. In a lease agreement, for instance: if you damaged the property, the damages will be subtracted from your deposit, else you will get back the full amount. Even criminal code kind of works has these if-else statements: if you murder someone and you’re not mentally ill, you’ll go to prison for 10 years.
Language
Implicit Terms
Let’s look at the vending machine and uncover what’s naive about this position. The contract itself is incredibly simple: you put in one euro, you get one coke. However, this doesn’t exist in a vacuum. There are volumes of implicit terms attached. These can be implicit because
language is implicit, and
implicit because they’re defined in more important legal code (e.g. criminal code).
Lets start with the first. Vending machines don’t require a paper contract, because they’re self-explanatory. Just like buying tomatoes at the farmers’ market.
Language-wise, even definitions are hard: what’s a euro, what’s a coke? Here is a list of implicit assumptions:
The euro is cash (it won’t accept a check)
You get the coke (or the same kind) you see through the glass
The coke is before its expiry date (duh)
The can is filled with coke (duh)
The transaction is almost immediate
The location of the transaction is the location of delivery
The list could go on and on. On top of that, a vending machine doesn’t think about euros or cokes. I has mechanisms that are good enough at detecting whether something is a euro and whether a coke was released. For instance:
100 eurocents = 1 euro (+ defining all the coin arithmetic)
if the scale detects something 7.5g±0.1g on its ⌀23.55mm dish, then accept it as a one euro coin
if the scale detects something 7.8g±0.1g on its ⌀24.55mm dish, then accept it as a 50 eurocent coin
etc.
The contract itself is also more complicated than our initial you put in one euro, you get one coke. Here some additional clauses to consider:
if there is no coke, then return the money
if more inserted, return the difference
if less is inserted, return what was inserted
etc.
You get the point. It’s more complex than it seems.
The naive crypto-anarchist could respond: so what? It’s just a matter of more code and writing up all these things. They would be wrong for most cases. I’ll try to explain why below.
Natural Language vs Programming
Why are we still talking about vending machines? Not because vending machines are complicated. It’s interesting because it shows how many implicit assumptions there are in our simple one-sentence contract one coke in exchange for one euro. But it gets worse.
Law uses natural language, computers use programming languages. The big difference is that meanings are fuzzy and highly contextual in natural language, but computers don’t get that. First, computers need mathematical precision and humans don’t. Humans form their understanding of meanings by looking at the world and seeing language being used. You point at a fish a few times and refer to it as a fish, everyone will roughly get what a fish. Later on, there will be debates about whether whales are fish or what the hell seahorses are (seriously, what the hell?). But it will work for 95% of the cases from the get-go.
In fact, precise definitions for ordinary things might not even be possible. Wittgenstein (clever lad who thought hard about language) convinced us with the following example: everyone can kinda tell what a game is (solitaire, chess and volleyball are but traffic, school and cats are not), but it’s impossible to give the word game a definition. Don’t believe me? Try. And then try to find counter-examples that are non-games but fit your definition or games that you’ve unwillingly excluded. I challenge you - try coming up with these during your next commute or at the bar (it’s a great opportunity to be an asshole because of the akshually moments you set up). Anyway, I guarantee you, it’s not possible (and I stake 1 eth on that claim). The point is this: we all get the concept of game, but no one can name a good definition.
Secondly, meaning in natural language is highly contextual. Here is an example. Two friends could ask you exactly the same question but you’ll give completely different responses, whilst remaining truthful. Imagine you have a tree and you painted its leaves red (you’re nuts). Alice is a landscape painter. Bob is a photosynthesis biologist. Both call you and ask you Do you know of any red trees in our town? To Alice, you’ll say yes and to Bob, you’ll say no. How can that be? After all, the world stayed the same and the question is the same. It’s because meaning is contextual. Clearly, you understood the context of the question. Alice is probably looking for something to paint and Bob wants to study the biology of red leaves, not that of painted leaves.
You can see where I’m going with this. When we write contracts we try to avoid such problems, but we can’t avoid them 100% of the time. That’s why we have legal disputes in the first place. They generally happen whenever there is room for interpretation. If the contract sets out something very clearly (e.g. you have 7 days to contest, and you contested on day 10), then there isn’t room for debate. It’s only when there is room for debate (e.g. you don’t pay for wear and tear - what is an acceptable level?). Here’s a real example and its about chickens, because chickens are cool:
In Frigaliment Importing Co. v. BNS International Sales Corp., the parties disagreed on the meaning of “chicken”. Their contract called for the delivery of "US Fresh Frozen Chicken, Grade A, Government Inspected, Eviscerated”. The buyer thought that “chicken” meant “a young chicken, suitable for broiling and frying.” The seller thought it meant “any bird of that genus.” The court considered dictionary definitions, the text of the contract, the parties’ negotiations (in a mixture of English and German), evidence of trade usage in the chicken-evisceration industry, USDA inspection standards, and prevailing market prices, only to conclude that there was evidence on both sides, so the plaintiff had failed to carry its burden of “showing that ‘chicken’ was used in the narrower rather than in the broader sense.” In short, “chicken” was ambiguous. - James Grimmelmann
Mathematical definitions are very different. There is no perfect triangle in the real world, but mathematically we can define one. Programming languages are very much like that.
However, what makes a smart contract meaningful is that human parties read the contract and try to foresee what would happen in various scenarios (what happens if someone doesn’t pay etc). You end up with another layer of complexity:
you negotiate in natural language (first layer)
then you have to write it the logic as a program (second layer), and then
you have to look at the program and compare whether it aligns with what you expect.
In other words:
Smart contracts do not eliminate ambiguity — they hide it. The meaning of a legal contract is a social fact. So too is the meaning of a smart contract. It does not depend directly on what people think it means when they read it, as a legal contract’s meaning does. Instead, it depends indirectly on what people think about the computer systems on which it runs. - James Grimmelmann
So from all of the above, we know that these things are true:
Paper contracts use natural language.
Smart contracts are programs and thus use computer language.
Computer language and natural language are very different.
To build a smart contract, you conceptualise its terms in natural language and then write a program that performs that. This adds another layer of complexity.
All of this means, that smart contracts do not replace contracts, but perform contracts. In other words, we still need contracts formulated in natural language. It doesn’t matter whether we conceptualise the contract terms on paper or verbally, and then set everything in stone by programming it. Smart contracts add complexity that wasn’t there. On the other hand smart contracts solve the problem of executing the contract. This means smart contracts are another pay-off to consider, not a silver bullet.
When is it worth it?
Thus the questions arise: For which cases is it worth to have self-execution despite the additional layer of complexity? Below are some variables to consider.
Worthwhile:
Simple mass contracts (thousands of users mean the upfront cost is spread out)
Extremely high security contracts (where there is no trust between businesses)
Broken institutions (e.g. non-enforceability due to dysfunctions like corruption or expensive legal cases)
Speed (when execution has to be immediate)
Overkill or worse than traditional contracts:
When a lot of context or expertise is required to make judgements
Non-mass low value contract (too expensive to engineer custom smart contract)
When courts function very well and are cheap
Verdict
The naive crypto-anarchist is merely fantasising when they talk about smart contract constitutions. Smart contracts don’t replace legal contracts, they perform them. Traditionally, legal contracts are performed by humans and when something goes wrong, a court decides who’s right, and then the police will sometimes enforce these decisions. So what you’re replacing is human action of the parties involved, courts and the police, but not contracts or lawyers. And instead you’re adding engineers who also have to have a good understanding of legal contracts, which sounds very expensive.
I hope the vending machine taught us a lesson: smart contracts are incredibly powerful but they’re neither smart nor contracts. Carefully looking at the mechanics at play, shows that the naive crypto-anarchist’s hopes are grossly misplaced. At the same time, there clearly is a land of opportunity for contracts that are massively used, simple, require speed or operate in legally broken environments.