"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.