“Are smart contracts agreed upon,
or are they more a way of saying,
‘This is how I function. If you want to interact
with me, you [must] follow these rules’?”
Gabriel, I think part of the challenge here is, the words
“smart contract” is very confusing for many people.
The [term] “smart contract” leads people to believe
that this is somehow a [legal] contract, as in…
“The undersigned, Andreas Antonopoulos, agree upon
presentation of a receipt for the delivery of oranges…
to pay three dollars to Gabriel Gomez,” etc. that
they have [those] contractual elements to them.
They are called ‘smart contracts,’ but effectively
they are [neither] smart [nor] contracts.
I like to remind people that smart
contracts are actually dumb programs.
They are programs [with conditions] like ‘if the
input is three and the date is [x], then do this.’
These little programs are not particularly smart at all.
They will follow rules exactly as written in the software.
If you don’t account for all possible inputs that
might enter your smart contract, you can have bugs.
You can have problems, unanticipated situations.
You can also not account for anything that is happening
in the real world. We talked about the oracle problem.
For example, in the past people
suggested that you could have…
smart contracts control the renting out of apartments,
automatically collect payments and manage insurance.
You [could] rent an apartment in the form of Airbnb,
a known company for private apartment rentals.
The question I always ask in those cases is:
in the smart contract, how [would] you
account for the fact that, one morning,
the guests found someone drowned
in the pool, floating face down?
Life has exceptions. You [probably won’t] write
[a clause] in the smart contract [about] what happens…
with the insurance payment if someone drowns in the
pool, trashes the house, sets it on fire, or whatever else.
in the real world.
Of course, once you have smart contracts like that
which are successful, these problems tend to arise.
So Gabriel, to answer your question,
smart contracts are not really agreed upon.
They are software programs and someone wrote that.
In many cases, for different types of applications
you might want to engage in on the Ethereum network,
there is more than one option.
For example, if you wanted to build a token and
make it compatible with the ERC-20 [standard],
or you wanted to do a crowd sale, there are
twenty-five different implementations.
The only [stage] where you can say you “agreed”
[to something] is when you choose to use…
one of those twenty implementations; you are effectively
agreeing to the rules written in that contract [standard].
You [should] understand how it [will] execute.
The truth is, most people don’t know
how that contract [will] execute.
They have not read the code; even if
they had read the code, very few people…
understand all the possibilities and potential
vulnerabilities that can arise in software.
A perfect example of that is the DAO [from 2016].
A lot of people invested money in the DAO.
They thought they knew what the
DAO could and couldn’t do, [but only]…
a tiny minority of the people who put
money into it actually read the code.
Even those people who read the code didn’t understand
the very subtle reentrancy bug that lead to a [huge] loss.
Again, you don’t really agree to a contract.
You choose which software to run, you run the software,
and hopefully you understand
how that software [will] work.
In reality, you depend on other people…
[who have tested] that software [with] large
amounts of money and for long periods of time.
Most of the security and understanding of what
the smart contract will do, comes from maturity,
from running [this contract] thousands of times, for
long periods of time, with lots of money at stake,
people trying to attack it and fail.
If it is still stable and does exactly what you think
it will do, then you can put a bit more trust in it.
It [will] follow the consensus rules and run as written,
but it is very difficult to know what “as written” means.
“What is your opinion of human-readable,
legally binding smart contracts?”
Well, there is a big problem with reconciling how we do
real-world law versus what smart contract code does.
English and any other human
language is ambiguous, vague.
It is very difficult, if not impossible, to write
something in English that has only one interpretation.
The entire basis of law is about interpretation.
Over time and after particular tests, legal
contracts have matured [to the point where]…
everybody knows why there is a
comma [in certain parts of] a clause.
Probably [due to] a long legal case where someone got
sued over the exact meaning of that Oxford comma.
Every single word you see in an English legal contract,
[with] a basis in English common law, usually
has a meaning that is very well established.
The question of what the word “person” means, what
the word “sale” means, what the word “value” means.
These words have been tested
by centuries of legal wrangling.
The reason we want smart contracts to operate
[as] code, in languages such as Solidity or Yyper,
is because that programming language can be made
much more precise and less ambiguous than English.
That is the advantage of smart contracts.
Making them human readable is a problem.
If humans are able to read them, they may [more easily]
assume that what they are reading means [one thing]…
in English or another other [human] language,
but the code actually does something else.
Reconciling those two — what you think it [will] do versus
what it [will] actually do — is a hellishly difficult problem.
Whether a smart contract was legally binding…
Making a contract or software program legally
binding isn’t that interesting, important, or difficult.
You can write a paper contract that connects
to a code contract in the blockchain,
to bind yourself to it with another person.
But in all of these cases,
if there is a discrepancy between what the code did
and what you think you signed up for, you [will still]…
take someone to court, even if the payment has
already been made irreversible on a blockchain.
The judge can [order it to be reversed].
If they can’t seize the ether from you,
because you are an awesome cypherpunk who hid it
so well, they will take everything else you own,
or throw you in a cage and continue
to take everything else you [may] earn.
Unless smart contracts are executed between
entirely anonymous people who have perfect OPSEC,
manage to never reveal their identity, and interact
entirely in virtual items without access to the real world,
there will always be interference from the law.
People live within jurisdictions
and this is one of the challenges.
[Gestet made] a great point: [words like] “person,”
“sale,” and “value” are [not only] ambiguous…
and have been legally challenged,
[but] they are still challenged today.
They will never be completely unambiguous.
We have thousands and thousands of cases that tell us
what can and cannot be considered a person.
Many of those have enough precedent behind them
to have weight, but we are changing society [every day].
Does a self-driving car count as
a “person” in the [contract] code?
Does Alexa [count as a “person” in commercial law] if
she places an order for you online? We don’t know yet.
These things [will] lead to more challenges, more
definitions about what exactly [those words] mean,
and when you can use those terms.
So yes, the ambiguity that exists in human language and
the interpretation that exists in law, these are not bugs.
These are the features of the legal system.
That is how the legal system works.