> As a reminder, smart contracts are created using code. Code can contain bugs or may not perform as intended. Be sure to analyze and agree upon all possible edge cases when coming up with the conditions and outcomes of the smart contract.
Predicting all possible edge cases of a piece of software has been proven to be very hard in the past (there have been software bugs that literally killed people).
Why would I ever agree to let software ALONE enforce a contract? And if there is a human process to override the outcome of the contract, what advantage does it have over a "dumb contract".
I just find the whole idea of computers enforcing law very unsettling.
Smart contracts allow you to completely shortcut intermediaries and their fees in the case where everything goes right or can be checked objectively by an algorithm (ex price of a commodity on a particular platform at a particular time).
With a multisig escrow account, if you and your counterpart both agree to transfer the funds, or both agree to unlock the funds, there is essentially no fee to give away to anyone else. If something goes wrong and you don't agree anymore, well then you can involve authorities from the real world.
but the issue at hand is the case where the multisig contract has a bug and one party (or even a third party) can trigger a transfer of funds or render the funds inaccessible.
> Just do a symbolic execution of the code and prove that your intended behavior holds.
So... Introduce a human to the process? This is the exact issue we're talking about.
> A multisig contract is an utterly trivial program. It is easy to prove correct.
Even if it is, we're not just talking about multisigs. This process should scale up to more advanced smart contracts or this whole "innovation" is just replacing escrows, which is a greatly diminished innovation from the actual claim of smart contracts.
What if somebody hacks into your bank and steals your escrow account?
Presumably, in both cases the solution is the same -- law enforcement and a lawsuit.
The goal isn't some perfectly perfect decentralized system, the goal is something that doesn't have the monstrous overhead of something like, e.g., real estate deals today.
> Why would I ever agree to let software ALONE enforce a contract? And if there is a human process to override the outcome of the contract, what advantage does it have over a "dumb contract".
The cost of enforcing and collecting on a smart contract is much cheaper. Depending on the dollar amount and use case I can see the advantage.
There may be standardized contracts for certain things, I don't know. If I'm wrong and there are no good use cases for smart contracts, they won't be used. It seems reasonable that they will find a use case, though.
Crypto and smart contracts have been around for awhile, and have certainly had enough hype and money thrown at them. So why aren't there any serious uses of these things yet?
How long did it take online travel booking, or ordering books from Amazon, to have a clear and growing market once the basic concept had been developed? How long did it take Instagram to get users? How about Stripe?
Why do people keep talking about how in the future we "will" do this and that other thing with blockchain, but years go by and we're not doing it?
Is it possible that the use case comes first and building out the tech comes second?
I'm not sure why you're being downvoted. I think this is a very reasonable projection. The technology isn't just going to stagnate, it's going to continue to evolve until it finds a useful place in the world. Having insured financial intermediaries executing smart contracts isn't a far fetched idea to me.
I would imagine you would use it when a human is unable to enforce a contract - for instance when there is no other party who is capable of enforcing it or who the parties agree should enforce it (because it would be too costly or for lack of trust, for instance).
Perhaps this occurs when dealing with individuals who are in different countries and the matter is too small? or perhaps while engaging in illegal activities?
The blockchain cannot enforce properly where external, real-world events are involved, and the hard part of contract law is not figuring out when to transfer money. It's figuring out when things aren't going as intended, it's figuring out when conditions might be unlawful, or when they just shouldn't be applicable in a given situation.
1. A blockchain-based smart contract algorithm can very much check the price of a particular commodity on a particular exchange (fully automated enforcement).
2. Parties can meet up and resolve the contract themselves (semi-automated enforcement that saves escrow fees).
> 1. A blockchain-based smart contract algorithm can very much check the price of a particular commodity on a particular exchange (fully automated enforcement).
Introducing trust issues with that exchange and what it decides to report to the smart contract that day. And that's the very simplest of circumstances, one data point from one source.
> 2. Parties can meet up and resolve the contract themselves (semi-automated enforcement that saves escrow fees).
So resort to non-smart way of resolving the issue, only the dynamic has likely already been changed as an automated system may have transferred funds already.
Computers are not enforcing law, I think this is just a misunderstanding on how blockchain systems work. They rely on consensus of majority of nodes, that are operated by humans. So in effect software written by small team of people is running on nodes operated by people. Ultimately the entire system is controlled by people, as DAO "hack" clearly shows.
It's a misunderstanding that's actively promoted by blockchain enthusiasts.
A lot of people still believe that inerrable smart contracts are possible and desirable. Hundreds of millions of ICO money has been collected by blockchain projects that basically promise to do away with software bugs by using [academic language X | proof verification system Y | magic beans].
Why would you ever agree to pay legal or transaction fees greater than $0.30? It makes a new class of agreements possible where settling in court is not practical. It also brings increased transparency.
If you could get insured for software agreements using off the shelf open source software that already worked for lots of other people why not go for it? How is that worse than custom agreement and settlement via chains of private 3rd parties with opaque fee structures.
> Predicting all possible edge cases of a piece of software has been proven to be very hard in the past (there have been software bugs that literally killed people).
This is what formal verification is for. But seemingly the current Smart Contract ecosystem doesn't care...
The contract equivalent of a software bug is called a residual, an area of research Oliver Hart earned a Nobel in economics for, and subsequently applied as a model for understanding smart contracts and their shortfalls.
You are correct, it would be madness to let software alone manage a legal contract, which Hart showed was impossible to free of residuals. A smart contract can be seen as an abstraction from the legal contract underpinning it in order to self-execute where residuals do not arise.
The devil in the details resides of course in the specific contract implementations.
Smart contracts aren't for enforcing law, they're for making notary and escrow work cheaper and more automatic. The current costs for this are ridiculous.
That said, nobody actually cares for doing anything useful with blockchain in 2018. The verbiage is just a smokescreen for good old pump-and-dump speculation.
Predicting all possible edge cases of a piece of software has been proven to be very hard in the past (there have been software bugs that literally killed people).
Why would I ever agree to let software ALONE enforce a contract? And if there is a human process to override the outcome of the contract, what advantage does it have over a "dumb contract".
I just find the whole idea of computers enforcing law very unsettling.