I think the fundamental problem here is an economic one. Make three assumptions:
1) most contracts worth implementing in Ethereum are fairly complex
2) even given great developers, bugs are inevitable in complex code
3) the budget of the contract-makers' security team MUST be smaller than that of the hackers
You quickly see that if the chance of a bug is nonzero, "smart contracts" don't make economic sense. If you have a $100k contract, and you spend $5k on security (which would absolutely destroy most companies' margins by the way) you'll be facing hackers that are EACH willing to spend up to $90k or so. Let's say all the experts in this example world are $200/hr. You spent 25 expert-hours on security. But you're being hacked by people who spent 450 expert-hours on hacking you.
With that in mind, would YOU want to use a smart contract? Spend 5% of the contract value instantly on security, and risk losing 105%? This isn't a normal loss by the way, where you can prosecute someone or sue somebody. No, this is the instant, digital theft of the entire value of the contract, to an anonymous digital address where it will be quickly blended in with hundreds of millions of dollars of similar thefts a month.
> This isn't a normal loss by the way, where you can prosecute someone or sue somebody. No, this is the instant, digital theft of the entire value of the contract, to an anonymous digital address where it will be quickly blended in with hundreds of millions of dollars of similar thefts a month.
Also worth pointing out that a non-trivial number of people would say that no theft at all has occurred, as the smart contracts are supposed to be the final authority, and if you can convince a smart contract to give up its value to an attacker then that's perfectly fine as that's how the contract was written. Ethereum Classic is a good example of this.
Well, what's the point of having a smart contract if it's not the final authority? We already have contracts that require highly paid humans to judge whether they've been broken or not. To me at least Etherium was dead the moment they chose to fork because they felt a contract was "hacked".
Because "code as law" also requires you to accept "bug as law" or even worse "exploit as law".
That's OK for now as the _real_ money being put into crypto-currency is understood to be a speculative thrill-ride. People who put actual _real_ money into this stuff know it could vaporize at any time for completely insane reasons. Its basically a bunch of people playing with funny money and having loud arguments about absurdly complex rules.
If, somehow, this stuff is to make it into the real world and start interacting with money, institutions, courts and the livelihoods of regular people, it will have to be VERY different from what it is now. That means you can't have smug, over-confident programmers writing clever shit-code and proclaiming it to be "law" and the "final authority".
> If, somehow, this stuff is to make it into the real world [...] it will have to be VERY different from what it is now.
Either that, or the nature of expectations in the real world will have to change, kind of like they did in the 90s when, after a few technological iterations, real people decided that shopping online was not so batshit crazy after all; or like people did in the late aughts when they decided that sharing every damn thing they were doing, and taking pictures of their tacos, was how one conducted oneself socially.
A lot of people are talking like the hacking risk applies equally to all forms of cryptocurrency, but I really don't think that's the case. Smart contracts in Ethereum have a much larger attack surface than, say, a simple Bitcoin purchase to cold storage.
> Because "code as law" also requires you to accept "bug as law" or even worse "exploit as law".
You're not answering adrianN's question. You're saying why one wouldn't want the contract to be the final authority. But adrianN pointed out that we already have contracts which aren't the final authority. They're asking why the code-based ones are better, given that you still don't want them to be the final authority. (I'm with adrianN; I don't see the point.)
> Well, what's the point of having a smart contract if it's not the final authority?
I think this is a common misunderstanding of Ethereum and blockchains in general. The current Ethereum blockchain is authoritative only as long as a majority of it users consider it to be authoritative. The same applies to Bitcoin. No single person decided to fork Ethereum after the DAO was hacked, it was decided by a quorum of Ethereum users. The original fork still exists as Ethereum Classic and if you believe that the "contract is king" then you are still free to continue using that fork along with everyone else who shares that view.
You say "To me at least Ethereum was dead the moment they chose to fork" and that is probably the view of many Ethereum users. I'm certain many Ethereum holders chose to divest their positions and move their assets elsewhere. That is a big loss for the currency but obviously enough people still believe it to be worth something and so it survives.
Because of their distributed nature, cryptocurrencies can be thought of more as living organisms fed by the collective computing power of their users. They don't need to be perfect to survive, only to be slightly fitter than their competitors.
You are making the argument that if, say, you've made a bunch of ethereum through means that the majority of miners don't like, they can just fork the currency and take your coins from you, and that's totally fine.
I don't know enough about Ethereum to know whether or not that is technically possible, but I believe it's technically possible with Bitcoin. I think the common misconception of these technologies is that trust is eliminated. It's not, it's simply distributed - you have to trust that the majority miners will find it in their own interests not to steal money from your wallet. I am not saying one way or another whether this state of affairs is 'fine', just pointing out the reality.
The code had implications that the writers didn't intend. Those implications involved attackers being able to take/steal a large amount of ETH under its terms. But those writers got the entire network to fork and give them back their money in direct contravention of the terms of the code/contract.
Other than the 'totally fine' part that accurately describes the situation with basically all cryptocurrentcies. How many coins you have is stored in a distributed ledger which can be arbitrarily modified with a majority of computing power.
I'm not sure it was a "common understanding" that the network would make special exceptions for "the code is the contract, and nothing else" only when the most influential people wrote bad code.
> cryptocurrencies can be thought of more as living organisms fed by the collective computing power of their users
Mm, I like this image. It completes something for me...
The world is filling up with these autonomous information organisms, who eat computing power. They also need other care, to go for walks, etc. If we humans want to survive in the information age, we will need to take shelter in one, draw a salary from the care of it.
The whole point of smart contracts is that lawyers' (and judges) opinions are not relevant. As soon as you need them and they have some power to make the thing go one way or the other the whole smart contract concept has failed.
You really just simply do not get it. Just like the law can not define Pi to be 3 the law should not be able to influence the outcome of a smart contract if smart contracts work at all because that is how it is intended to work, smart contracts are supposed to be the entirety of the agreement, no outside interpretation should make a difference nor could it make a difference.
This is where the Ethereum crowd has - in my eyes at least - already failed with how the handled the previous hack, the concept is as currently implemented fundamentally flawed.
I can see the dilemma (get the money back or kill Ethereum) must have been a tough one but if they really wanted Ethereum to be taken serious they should have chalked that up to their education fund and call it a day.
> the law should not be able to influence the outcome of a smart contract
You don't seem to understand how the law works. The problem isn't a judge trying to interfere with any of the technical features of the contract. A judge would rule on the legality of the contract as the law sees it[1]. You will be able to argue that the code is the final authority. You will probably also have to show why the other party knew and understood that risk. Depending on the situation, the judge, how each side argues their case, etc, the judge might even agree and dismiss the case.
However, a judge could, for example, rule that an important part of the contract is unconscionable, illegal, etc, and order YOU - not the contract, not the blockchain, not the software - to return the other party's money, or release the other party from their contractual obligations, or to change any particular detail of the contract's terms. The judge won't rule against the contract, they will rule against you, and it's up to you to figure out how to follow the judges order=. If the judge decides to throw the book at you for some reason, the judge isn't going to be interested in why you think about immutable contracts, or what you think the contract means. They could simply throw you in jail (or fine you $1000/day) for contempt until you follow the judge's orders.
It's generally a very bad idea to ignore a judge's orders. IN some situations, this can make immutability a serious liability.
[1] What was the offer? Was there a deliberately misleading or unconscionable clause in the contract? Were the terms understood and accepted? Did each party uphold their obligations under the contract? etc (this type of question will be asked regardless of how the contract is implemented)
This all assumes that you know your counterparty, which isn't necessarily the case.
You could simply reduce your argument to 'in situations where you use a smart contract where a normal contract would suffice a judge has their usual powers'.
But that wasn't the point I was making. Smart contracts will most likely be used in all kinds of situations where a judge does not have their normal powers, hence the reliance on a smart contract to begin with.
If you can rely on the courts you don't need a smart contract.
Even if you can rely on the courts, smart contracts could still make themselves useful, since the costs for enforcement are lower. Until your interpretation of the contract and its implementation disagree, which is when you start your costly litigation spree, assuming you have an idea of who to sue.
Whether or not you (or anyone else) think the law should influence the outcome of smart contracts...it certainly does.
So far a few states (US) have passed laws regarding "blockchains", "smart contracts" and the like. For example, seeking to avoid any legal uncertainty surrounding blockchain transactions and smart contracts relating to certain digital assets, Arizona passed HB 2417, the following on point:
- A very specific definition of “blockchain technology” as a “distributed, decentralized, shared and replicated ledger, which may be public or private, permissioned or permissionless, or driven by tokenized crypto economics or tokenless” and provides that the “data on the ledger is protected with cryptography, is immutable and auditable and provides an uncensored truth.”
-A definition of “smart contracts” as an “event driven program, with state, that runs on a distributed, decentralized, shared and replicated ledger that can take custody over and instruct transfer of assets on that ledger.”
Other states in various stages of legislation on point include: Maine, Illinois, Nevada, Delaware and Vermont.
interesting notes: Arizona also passed a seperate law restricting the use of blockchain as "fire arm tracking technology", likely a pro gun rights lobbying effort. Delaware will likely be codifying by statute the right to issue stock on blockchains. Courts have begun accepting blockchain entries as business records under the rules of evidence.
This whole notion of smart contracts being exempt from judicial review is crazy. I mean if I sign a regular contract to go sky diving and "waive all rights to sue in the instance of negligence" and they forget to pack my shute and die, the contract is express and speaks for itself but guess what, it's unenforceable, no one can contracts away negligence (no matter what the contract/smart contract says). Murder for hire; no competes in California, these things do not go from illegal/unenforceable contractually to legal because they are outside the jurisdiction of the courts.
Wow, that's the best definition I have heard for Smart Contract (and maybe for Block Chain).
I never thought a legal definition would be clearer than every "common" definition I have read. It's like the author of every blog post I've seen titled "What is Ethereum?" has no idea what title they used.
I guess that just shows how hype makes it hard to get to the truth.
For all the hate that lawyers and judges receive, they are as good as mathematicians at coming up with (or at least recognizing and choosing) concise and simple definitions.
It's not about whether or not it should, I'd be happier living in a world where they can be, but since the whole goal is that it can't and there are people working really hard on trying to achieve that goal it would be more realistic to adjust to the eventuality that it will at some point be done.
The biggest stick that governments have is that they could make it illegal for their constituents to engage in smart contracts with some kind of very large penalty.
But other than that I don't really see what could be done about it once they are a fact.
Just like laws of nature do not care about what a judge thinks math does not either. Trying to overrule smart contracts from the bench is if they actually work roughly akin to outlawing math.
And yes, murder for hire is a serious potential problem, but murders for hire already happen in the world as we have it today so the existence of smart contracts is not going to be an enabler in this respect, hiring someone to kill for you is illegal, whether you use a smart contract or a verbal agreement is not really relevant to that, it's the act that is illegal, not the means of codifying the arrangement.
Smart contracts are not laws of nature, they are contracts. I totally agree you could come up with a few examples where enforceability would be a practical impossibility, but that's also the case with standard contracts.
Just like the Arizona law I cited restricting use of smart contracts for "fire arm tracking", the law could restrict smart contracts in all sorts of ways to protect the public. Examples:
-drafters of smart contracts must be licensed and bonded/insured
-parties to smart contracts must purchase insurance to coverage sufficient to cover losses in full
-criminal liability when marketing materials are inconsistent with the smart contract itself (see: DAO)
-just like many contracts, deeds, trusts must/can be filed with the state...the states could require the same of smart contracts
Now I understand such laws undermine the purpose/intent of many smart contract opponents, but my point is judges/legislature are not powerless insofar as the laws of nature.
> Smart contracts are not laws of nature, they are contracts.
No, they are software. And the participants to such a contract have agreed that the execution of that software is the entirety of their transaction. If one of the parties changes their mind after the fact they will have to convince a judge first that even though they initially agreed that the execution of the contract was the entirety of the agreement that now this is no longer the case and that what they said was un-ambiguous before is now ambiguous and needs overriding.
So now you have a fairly complex situation:
- you will have to convince the judge that you entered into that contract and now wish to back out of the defining clause on something that is not classed as 'regret' (which is never a reason to annul a contract)
- you will have to find a way to communicate the judge what relief you feel will compensate you at a level that the judge will be able to enforce (this could be very difficult)
- and on top of that you will have all the usual issues you have to deal with in a lawsuit possibly complicated by your counterparty being anonymous and/or in an entirely different jurisdiction
States don't really matter here, smart contracts are software and are global, that changes their nature in a material way which will make it hard (possibly impossible) for a judge to enforce them one way or the other.
You just described how the adjudication of all contracts works. Smart contracts are no more above the law than paper contracts are.
> And the participants to such a contract have agreed that the execution of that software is the entirety of their transaction.
How would such an agreement be communicated or enforced? The same thing happens with paper contracts: when you sign on the dotted line, it's understood that the contract encompasses the entirety of your transaction. However, there always remains the possibility of appealing to the judicial system later to argue that the contract is void/unenforceable.
You're saying no amount of evidence could show someone intended to abide in a way other than how the smart contract says they must abide, because their intention is part and parcel of what the smart contract says. True.
Your partner in this conversation is saying: You might have agreed to something illegal. It's not that the smart contract drifted from the contract's intention, it's that you weren't allowed to agree to that contract in the first place. And they're right: in such a case, the courts won't give an F what conclusions the smart contract comes to. Also true.
> the participants to such a contract have agreed that the execution of that software is the entirety of their transaction
This is where the law could disagree with you. If you and I agree that you are my slave, that agreement is null and void. Similarly, the law does not automatically recognise the supremacy of smart contracts just because the parties thereto said so. If a dispute arose, damages could certainly be ordered by a court of law.
It sounds like you're both in agreement that it doesn't seem realistic. What jacquesm is explaining is that the intention of "smart contracts" is to work entirely outside the existing legal system. There is no need for adjudication of any contract by a court because the contract is the law and the court.
Put in X out comes Y,every time. No room for interpretation, just pure beautiful math. That was the idea anyway, for some reason it seems they decided to implement some of these contracts in a not particularly rigorous way.
Jacques is talking about the theory and premise behind the smart contracts, and you Marco are talking about the people interacting with the smart contracts. People who of course are existing under the scope of our present legal systems.
As long as real people can be hauled before a real court
I think this is the crux of the misunderstanding. Because actions can be taken in these crypto-systems more or less anonymously, it is not obvious that you can "haul some one before a real court" should they wrong you in some way, and in those cases when you have parties interacting in these systems anonymously, the laws of the crypto-systems are the extent of the laws they are operating under. Provided extensive investigative effort isn't undertaken to unmask anyone operating anonymously.
> it is not obvious that you can "haul some one before a real court" should they wrong you in some way... the laws of the crypto-systems are the extent of the laws they are operating under
Tell that to Ross Ulbricht. Anonymity is not a guarantee of immunity from the long arm and unforgiving memory of the law. Especially in the United States.
You still don't get it. The law will not have anything to say about smart contracts because the law will not be able to enforce a contract one way or another depending on some judge but it will simply execute and that's the end of that.
This so that some guy in China or India and some guy in the United States can agree on terms without having to haggle over whose legal jurisdiction will kick in if and when there is a dispute about the contract.
Until we get a world government and until judges are able to order millions of nodes all over the world to do a hard fork there is no way around a smart contract environment that actually works. But we don't have that at the present, Ethereum as far as I'm concerned was DOA because of DAO.
However a smart contract between you and me may execute, a court can still order me to give you money, or order me to enter into a different smart contract. And if I don't comply, they will eventually hold me in contempt and at some point seize my property by force and throw me in jail if I resist.
The authority of the state ultimately rests on its ability to resort to violence to enforce its will. No smart contract can change that.
Assuming you live in a certain subset of countries, sure that could happen (take a look at what happens when an American sues a Chinese citizen). But it defeats the purpose of a smart contract.
If everyone agrees that smart contracts will pay out when they are fufilled. But only if they are fufilled in the specific way each party believes they should be (as opposed to what the code actually says)--then there is no point in smart contracts.
A potential solution is some form of very explicit disclaimer that states you are agreeing X should be paid when the code in contract Y executes, not when the condition you believe the code in contract Y tests for is met.
Of course a court could still ignore the disclaimer.
The problem is that, for better or for worse, people do not have full freedom of contract by law. There are volumes upon volumes of laws and regulations limiting the kind of financial contracts, for example, that you are allowed to enter into. Every bank has a massive compliance department dedicated to making sure that they abide by those rules.
You can't just ignore these rules by making a system that executes contracts automatically. The judge will simply order you to make the other party whole. Then, if the law allows it, he might hit you with a massive fine for breaking the rules.
> However a smart contract between you or me may execute, a court can still order me to give you money,
Just like that judge that ordered the DAO hack to be reversed?
> or order me to enter into a different smart contract.
No, a judge will never order anybody to enter into a different smart contract just like they don't order people into regular contracts today.
> And if I don't comply, they will eventually hold me in contempt and at some point seize my property by force and throw me in jail if I resist.
Judges have a lot of power, but they can't enforce their views on people not in their jurisdiction without the cooperation of judges and governments in other countries. This is one of the major drivers behind the development of smart contracts. I think that for those situations where 'dumb' contracts suffice they will continue to be used and the courts will continue to have their power. But precisely for those situations where the courts do not have such power smart contracts are a potential solution.
> The authority of the state ultimately rests on its exclusive right to resort to violence to enforce its will. No smart contract can change that.
Not too much larger, considering that every major company and country has large amounts of assets and other financial interests that are subject to US jurisdiction. The government of Argentina recently learned that the hard way when American courts forced them to honor their sovereign debt, or have their US-based assets seized to pay them. The same applies if you want to do business in India, China, or Europe. Submit to their judgments or see your assets and interests in their jurisdiction confiscated or destroyed. Another recent example of this is French courts applying the "right to be forgotten" extraterritorially.
>No, a judge will never order anybody to enter into a different smart contract just like they don't order people into regular contracts today.
They certainly do, in effect. A court judgment very often creates new obligations between the parties. And if entering a new smart contract is the only way to right some legal wrong, then they can order that too. An American court, at least, can order just about anything it needs to in order to enforce its judgments.
Look, once more: I'm not saying smart contracts work at present. But if they work then judges would be without tools to do anything about it, that's a matter of definition, if you choose to define a smart contract in a way that does not agree with how the rest of the world views them then that's fine with me but it voids the discussion. Any contract that has all the outward aspects of being a smart contract but that allows a judge (or anybody else for that matter) to influence the outcome once it is activated is by definition a failed smart contract.
so the scope of smart contract in your definition can only cover areas not already governed by traditional regulatory system / laws. Imho that doesn't cover a lot.
or laws will have to be adapted to grant values to them. But then it isn't much different from today's contracts.
> so the scope of smart contract in your definition can only cover areas not already governed by traditional regulatory system / laws.
Correct, if you don't need a smart contract using one won't give you any advantages.
> Imho that doesn't cover a lot.
We're going to have to disagree on that.
> or laws will have to be adapted to grant values to them.
Absent a global government I don't see how that could be done.
> But then it isn't much different from today's contracts.
Well, it is, but not for most normal transactions.
if smart contracts can really be made to work they will be an enabler much like the laser, we didn't really have an application for those either when they were first invented.
But people are already getting creative with them and the DAO is a nice example of what could be done if smart contracts can be reliably built and executed.
I don't think this will happen in the near future because writing a regular contract is hard enough, a smart contract has to be perfect for it to be of value because any bugs will be beyond the regular safe-guards ability to be fixed, you will most likely simply lose your money or your goods without recourse.
> > or laws will have to be adapted to grant values to them.
> Absent a global government I don't see how that could be done.
What's so hard about the judge forcing you to form a new smart contract?
I have zero difficulty imagining a situation where a judge brings me in and says "Now unlock your laptop and sign this Ethereum contract that undoes the previous one".
not a lawyer, but i don't think you need a global government to have legislation covering contracts between two companies from different countries. I suppose the contract decides which juridiction will apply in case of trouble.
But if i understand your point, you see smart contracts just as some kind of tool that could be used in place of regular ones, whenever all the corner cases can be determined in advance and coded against, right ?
In which case we could have state decide which type of smart contract are legal under their juridiction and which aren't. If that's what you mean, that could be interesting indeed. I don't see how that would be applicable in practice : everything can be hacked or tricked, or fall apart, and human always are needed at some point in any autonomous system i know of.
> Any contract that has all the outward aspects of being a smart contract but that allows a judge (or anybody else for that matter) to influence the outcome once it is activated is by definition a failed smart contract.
I think the crux of your argument with Marco is that he is viewing the "outcome" in a larger scope than you are. You seem to be focusing on the "outcome" as only the output of the smart contract, while the is viewing the "outcome" as the real-world consequences of the entire situation, as embedded in our political and legal systems.
Correct me if I'm wrong, but I think it's also worth pointing out that from the point of view of judges, people losing money on ETH are really losing abstract Internet points. Even if it all happened in the same jurisdiction, would a judge be willing to consider that a theft has happened?
I don't think that's the material issue, but it is definitely possible that a judge would consider the matter too abstract to make a ruling over. But as a plaintiff or a defendant in such a case I really would not want to base my case on that.
Considering that the US government has decreed that Bitcoin is an asset and capital gains taxes are due when they are sold/spent, I'm inclined to answer yes.
>This so that some guy in China or India and some guy in the United States can agree on terms without having to haggle over whose legal jurisdiction will kick in
>there is no way around a smart contract environment that actually works.
What about the present system where people develop trusting relationships in business and elsewhere and deal with the occasional anomalies and breaches of trust as they arise, but in the big picture they're not really a deal breaker because they are relatively rare and we humans are wired for socially harmonious behaviour and mutually beneficial actions. Is that a way around it? It seems to have been working decently well thus far in terms of facilitating extensive commercial networks around the world.
We don't, but that won't stop it from happening and it is usually better to enter those situations informed rather than arguing from what world it would be nicer to live in.
When the automobile entered mass production the world changed. You could have of course argued that this made the world a worse place to live in (which it did in many respects) but the reality was that once invented people apparently wanted automobiles and that demand ended up being satisfied. If enough people want smart contracts they will be a fact of life, knowing their limitations, how to deal with them and whether or not you should enter into one is important knowledge. No amount of sticking your head in the sand will reverse the course of history, smart contracts will happen, or they won't and if they do it will pay off to know about them. Right now they're on the edge of being useful, in a few more years we will know for sure whether or not they were a fad or a harbinger of a novelty whose impact will be hard to predict.
I don't like them but I do believe they will happen and I also believe that they will alter our societies in material ways.
The "contract execution" can't touch anything in the real world. People do that. Maybe a "smart contract" says Joe Hacker is entitled to reside in 168 Park Avenue. Maybe everyone on the Ethereum blockchain agrees that Joe is entitled to reside in 168 Park Avenue. If a judge rules that it's Bob's house and Joe has no right to be there, that's gonna trump all of that, if only because the judge has more people with guns to call on.
The contract execution is only going to work if all parties bound by it agree that the execution is the full extent of their agreement.
For instance, if two people who have no business to reside in 168 Park Avenue make up a contract in 'the real world' that the other can go and occupy 168 Park Avenue then they will find - probably not to their surprise - that their agreement will not work, regardless of which medium it is conveyed on.
Smart contracts are a tool for those situations where you believe present day law is going to leave you stranded or in a situation that is legally ambiguous. I do not believe their strength lies in areas that are already properly governed by existing law.
Now you could argue that that is all of society as we know it right now, but in international commerce there are quite a few legally gray areas that are now patched over with mechanisms such as escrow and various other instruments. But those are only 'worth it' when the transaction amounts are larger than a certain minimum.
So, in short, you are absolutely right, if you use a smart contract in a situation where a regular contract would suffice it will not change anything. All the parties to the contract are known, the whole thing has immediately verifiable effects in the real world and 'might makes right'.
But in situations where the participants would like to remain anonymous, in situations where both parties would for reasons known to them rather avoid dealing with lawyers, the law and associated mechanisms smart contracts could become an enabling device.
That's not entirely true. The law can make crypto currencies illegal and put them outside the banking system. The US government did this with online gambling payment systems like NetellerC which severely crippled that industry. They also could potentially charge the founding developers and ICOs. Basically if the law makes it too difficult and non-convertible to real currencies and mainstream goods and services then they can exert the necessary influence that will either kill it or force change via the major actors.
Under the current situation, it's more like the more countries make such laws, the less relevant the respective cryptocurrency will be in international commerce. Last I checked, state-backed fiat currencies were still more important than anything crypto.
And while it's hard to outlaw progress, it's also very hard to identify progress before it happens, and even then you can never be sure whether people won't go back to the previous system.
I agree with you. If the point of a smart contract is that "code is law" and "judges doesn't make decision, the protocol does", that surely sounds like naive hacker thinking.
If that's not the point of smart contracts then what is a smart contract? How is it different from that thing which we call just "contract"?
So either the smart contracts are just contracts, or they are product of naive hacker thinking.
I think the point is that they bundle together the agreement with the actual execution of the agreement. The execution is performed by public code that everyone can audit and verify for themselves.
No, the adorable naive hacker thinking is that one could actually write a contract that has no room for interpretation (see DAO). There is a very good reason we have judges and lawyers, which is that being 100% un-ambiguous is impossible, and smart contracts are no exception to this rule, only there every ambiguity will allow either one of the contracting parties or an outsider to make off with the loot.
So for now nobody appears to be willing to stand by 'the code is the law'.
> The whole point of smart contracts is that lawyers' (and judges) opinions are not relevant.
To the extent that that's true, the idea is simply wrong.
I would argue that it is quite possible to see smart contracts as having potential practical value without taking that ideological position on their role, however.
Lawyer/programmer here (US law). It's an interesting problem.
Let's assume offer, acceptance, capacity, legality for a transaction.
So question to me is, when do we have a contract (do we have a contract?) and what IS the contract. For this usually (not always) look to the so called "meeting of the minds."
If we define the meeting of the minds as the EXACT actual code, it's hard to argue that using a bug in the code is a breach. Simplistic example: I write a lease that says if I sell the house me or the buyer can terminate the lease on 30 days notice. You do not do any diligence on that lease. When I sell the house and the buyer terminates, you're out of luck.
If we define the meeting of minds as "you are promising to do thing X for me, and you propose to do it with a smart contract", then if there is a bug in the contract, that might be a breach on behalf of the person offering to do thing X. Simplistic example: Your website says if I send ETH to address "0xExample" you offer a service that will send it back in 6 months. If 0xExample is hacked and money wasn't returned, well, you could argue that there was a breach of a contract to return your money.
No idea how a Court might come out, and being the law, it depends on shades of grey, other factors, skill of lawyers, etc.
I frankly can't wait until this shit gets litigated.
Regarding smart contracts and other inventions of cryptocurrency: I think, most of all, the crypto market is absolutely vicious, in a way that both capital markets and technology companies haven't seen(in the public eye) for many, many years. As of right now there's still some faith left that Ethereum is going to go places because firms keep trying to use the technology on the basis of hype. Unlike with most overhyped and half-baked tech, though, the failures do not get shoved in the back room for some hapless dev or ops team to deal with. This is like if Apple and Google had daily columns on the front page showing every bug or support issue that they experienced in the past 24 hours.
And that's been true right from the beginning with Bitcoin: scams, schemes, heists, data loss - the headlines scream blood all the time. We've never had that kind of "mean time to disaster" in technology before. The status quo was that something would fail, but the failure would never quite get back to the individual or company that produced it. They would spin it away, and no careers would be harmed. But the likes of Solidity produces a meat-grinder, a blind destroyer of any who dare enter calling themselves rockstar.
I think it's kind of awesome and beautiful, in that sense. It will induce a maturation throughout the economy to adapt to this new pressure. But like adolescence, it can be an ugly work in progress, and I don't expect Ethereum itself to be a survivor at this rate.
This is like if Apple and Google had daily columns on the front page showing every bug or support issue that they experienced in the past 24 hours.
Things is, with Apple and Google there is a rather low ratio of spectacular failures to output of products that are in many cases, rather effing amazing. Whereas with the cryptocurrencies unfortunately, the spectacular failures be they in the form of scams, schemes, or heists, more or less are the story.
It's not like these recurrent tales of avarice, greed, or just plain seediness are crowding out the print space for the tales of all the amazing things cryptocurrencies are bringing about, there's room to tell that story to, but where is it.
At this point it's getting harder and harder to locate where there is that glint of hidden potential in cryptos in the face of all the malice and fuckups.
Because it is unfettered completely innovative ruthlessly competitive free market. Boom and bust cycles from the era of industrial revolution tied to a capped deflationary currency (gold) that saw some of the fastest and most astounding speed of technological advancement in recorded human history. It's creative chaos is, personally, liberating.
Your logic doesn't add up. Attackers are only willing spend $90k if there's a 90 percent chance they can exploit a bug in the contract to extract the entire $100k value.
Clearly if TWO hackers both spend $90k and only one extracts the value, the other one has lost their entire $90k - unless there's a way to be sure you are the one who will win that, your expected return on the $90k is only $50k if there are two parties trying to hack the contract.
The interesting bit is yes - the immediate loss. But a loss of unmarked cash is similarly instant.
Assuming by "safer form" you mean a bank account (since that's what "most folk" use instead of physical cash), it's hard to know how safer it is. In the early 90s, my country's government froze almost all the money on everybody's bank accounts with no warning; obviously, whatever physical cash you had in hand wasn't affected by the freeze (though it lost its value fast, due to the inflation).
On the other hand, recently another country changed its note design, and made the older design no longer valid. Whatever physical cash you had in hand instantly lost its value, while whatever value you had in bank accounts was automatically converted.
As you can see, sometimes cash is safer, sometimes bank accounts are safer.
> But a loss of unmarked cash is similarly instant.
True, there isn't a global list of where every bank note is.
I've already lost a tiny amount of BTC just by testing a bit with short keys. Can you imagine what the world would be like if every time you left your wallet for 10 seconds, it vanished?
Just in case lordnacho's meaning here isn't clear to anyone.
testing a bit with short keys.
He's put some bitcoin into wallets with keys/passwords that don't meet very high security standards.
I've already lost a tiny amount of BTC
He's then lost that bitcoin because there are programs running running around the clock to programatically empty any wallets with passwords that don't meet very high standards of security.
Thus,
Can you imagine what the world would be like if every time you left your wallet for 10 seconds, it vanished?
But this is the "trustless" world you signed up for right?
A more accurate analogy would be that your money vanished from a public locker with combination 0-0-0.
Nobody complains about the shortage of address space provided by 256 bits. This guy was experimenting, and being lazy during his experiments, so at the very least he should have known what to expect after the first loss.
It still violates the optimistic premise of blockchain advocates that it helps us move to a world where trust is baked into the systems.
If you live under the assumption that you're perpetually under attack unless you rigorously protect yourself, it's not really the example of trust we're promising to non-technically adept folks.
> A more accurate analogy would be that your money vanished from a public locker with combination 0-0-0.
And it's a pleasant world where every time you do that, you get robbed.
> Nobody complains about the shortage of address space provided by 256 bits. This guy was experimenting, and being lazy during his experiments, so at the very least he should have known what to expect after the first loss.
This is totally beside the point.
There's a social cost to constantly having to watch what you do. If you're robbed any time you're on the street, you'll have to spend time learning self defence and you'll have to buy appropriate tools such as locks. You'll also have to teach your friends about this, and you'll need friends. And your attitude to strangers will change.
I mostly see your point, except your argument seems to be missing the important fact that the payoff for the hackers is not guaranteed. To say someone is willing to spend up to 90% of the potential payoff without a guarantee that they will be paid out is missing a fundamental aspect of the economic equation here.
The scenario you gave should be fairly similar to any application outside of Ethereum that deals with money ie. a banking app, except for the fact that, like you mentioned, you can't prosecute someone.
Except it's made up numbers, and the the valuation's are actually much lower - the cost to find an exploit is not a linear investment of time and money, but a parallel one. Thousands of potential hackers are targeting you, and only have to succeed once to bankrupt you (the payoff is also non-linear - any given exploit probably works more then once).
Is formal verification of contracts feasible? Is anyone working on it?
Also, here's a possibly crazy idea: could one create bug bounties for algorithms (or even arbitrary software) on the Ethereum blockchain by writing the algorithm into a contract such that if you somehow break it you receive the bounty?
An example of this would be the massive implicit bounty currently placed on the crypto algorithms (SHA256, ECDSA/Secp256k1, etc) underpinning cryptocurrencies (of course, if those were broken the value of the cryptocurrency would plummet instantly)
Yoichi Hirai and others are working on completing proof assistant support for EVM, meaning you will be able to prove program properties using logical pre/post-conditions with machine checked proofs.
There are already useful tools for symbolic execution, and I have a hunch that this kind of verification will be important along with model checking.
The specification of EVM in HOL exists already [1] and can be used to prove correctness of EVM code already. EVM is pretty low-level, though; the same can't be done for Solidity code. Yoichi has a page that outlines his thinking about what Ethereum's formal verification needs are [2].
What I would like to see is a verified high-level smart contract language layered on top of the Ethereum stack, allowing non-logicians to put together contracts that mean what they think they mean. See [3].
Yes, but I'm suggesting designing explicit bug bounties. The point of a bug bounty is to offer a smaller sum of money than would be lost if the vulnerability were exploited maliciously.
Cryptocurrencies are serving as bug bounties for their crypto primitives, but that only benefits other users of those primitives.
Also start with the platform - is it easier or harder to hack? C++ code has caused millions and millions of unintentional bugs. If Solidity was built more like C++ and unlike something like Rust, then it should have a large part of the blame.
The Ethereum developers create Solidity with the goal to make it "super easy" for developers to create dapps. Security wasn't the #1 priority. And now the ecosystem will pay for that design decision. Whether the decision still ends up being a net positive in the long term, it remains to be seen.
However, keep in mind that Ethereum as a platform is still in its very early days, with not even 0.01% of the population using it. If $30 million can be stolen just like that, what happens when 10% of the population uses it and there are trillions of dollars invested in it? (assuming it will be the "next internet" or whatever)
I mean some of these things have bugs still, but generally when you have something of fixed scope then there are less bugs over time. Especially if you're restricting your scope to something simple
Those 3 examples that are both relatively simple and more than 40 years old are unlikely to convince people that something new and complex is worth the risk.
And 40 years ago they were actually able to convince people that this new thing was worth the risk and that's why we're having this conversation today.
Early adopters are simply early, they will most likely lose their shirt but some of them will end up making you wish that you too were an early adopter.
Less well-known, not only is the selection of the pivot element important, but also the selection of which side you use recursion:
"[...] it always recurses on the first sub-partition, and iterates on the second sub-partition; but instead, it should always recurse on the smaller sub-partition, and iterate on the larger sub-partition [...] our attack constructs an input array of N elements that causes qsort() to recurse N/4 times." https://www.qualys.com/2017/06/19/stack-clash/stack-clash.tx...
> I mean some of these things have bugs still, but generally when you have something of fixed scope then there are less bugs over time. Especially if you're restricting your scope to something simple
I'm guessing that smart contracts tend to be relatively short and simple? I mean I would never bet on an entire web/mobile app being bug free because the surface to attack is enormous but e.g. a sorting algorithm or something small in scope can be formally verified to be bug free as long as your specification is accurate.
I grant your point, but disagree with your framing of the problem.
I think a good analogy here is to compare to American settlers. You're going to have a few waves: the explorers who move into totally uncharted territory and take on significant risk by using smart contracts. These are kinda crazy people who love the innovation, and I'd argue this is the majority of people in the space right now.
Eventually there will be the settlers, who start finding early uses for this technology that can significantly lower costs. Basically collecting on low-hanging fruit. J.P. Morgan, many finance companies, some savvy governments will step in to capitalize on easy wins.
Then there will be the long tail of normal uses. By the time the average company invests in smart contracts, there will be very well-understood battle-tested templates and toolchains for creating smart contracts, as well as consulting firms that are specialized in writing them for you with provable security guarantees.
Right now it's early. Your average company should not use smart contracts, that's a no-brainer. But someday the economics are going to make it a no-brainer for certain things, like incorporation, or issuing shares, or doing payroll, or complying with import/export regulations, or doing corporate taxes, or whatever it is that ends up more efficient through blockchains.
> Basically collecting on low-hanging fruit. J.P. Morgan, many finance companies, some savvy governments will step in to capitalize on easy wins.
You think a lack of technology is what's keeping these giants back from innovating? There's a reason many banks still have mainframes powering large portions of their internals. Lack of new tech is not holding them back.
> There's a reason many banks still have mainframes powering large portions of their internals.
There are many reasons. Institutional inertia for one, a lack of sufficiently knowledgeable people another. Banks are not innovating because you can't get around them anyway. And personally I don't mind, I'd much rather have my $ parked with an entity that moves slowly and predictably than with some 'move fast and break stuff' outfit that gives me a heartattack 3 times per year by showing me a $0 balance and no support department to call.
Serious question: How can smart contracts create the "proper" trustless environment for most workplace contracts?
For example, stock option agreements are usually pretty straightforward... until a termination date has to be decided on. How does the termination get put into the contract?
Though I suppose smart contracts could exist as an automation mechansim , but there's a "wrapper contract" that provides "real deal" legal protection against abuse?
Bringing trustworthy real-world data into a blockchain in a decentralized manner is a known and important challenge that is being worked on by several projects like Augur. The prevailing answer is to incentivise humans to insert it correctly by appropriately aligning rewards for doing so, and making it difficult not to do so (schelling points). That's what the Augur project is really about, the prediction market they are building is just the first application of that system.
They can't do that on their own - interaction with the physical world requires a trusted party to decide/verify if a particular real world condition has been met or not.
Coincidentally, that's (part of) the role our court system plays in contract disputes; but there are other existing systems e.g. arbitration.
When you sign a legal contract, you are also likely to spend a non-negligible fraction of the contract to lawyers so that they review it thoroughly. Think of the legal costs of fund raising or the time spent negotiating and reviewing a contract for a large deal.
Some things that are at stake on the lawyers side are their competence (can they actually make sure the contract is "secure" ?), their reputation (track record of competence established over time) and some insurance mechanism (if things go wrong can you get something back from their insurance).
All of the above seem to be missing in the case of "smart-contracts".
I'm not sure premise 1 is true. The most useful smart contracts so far are tokens and multisigs, and those are definitely simple enough to do right (if you don't make a major blunder like the Parity team did).
> if you don't make a major blunder like the Parity team
...Which was founded by the very person who developed the smart contract language Solidity. Which goes to show how difficult it is to write 100% bug-free smart contracts.
One way to help mitigate that is by tiering releases. Rather than deploying an app that can potentially accept millions of dollars on day 1, it can be purposely limited to lower amounts and slowly increased over time as the codebase is iterated and time-tested. Apps that have been around for decades with few changes are significantly safer than new apps. Of course this is not perfect (ie heartbleed) but I think this methodology will become standard in ethereum.
In the real world, contract law is written to not just take contracts at face value, but to also let judges take external factors into account. This includes customs, the parties intentions, whether they are acting in good faith, etc.
This is precisely because it was deemed impractical to write contracts that could be 'computationally' interpreted line by line. Seems like the etherium is slowly rediscovering this fact the hard way.
1) most contracts worth implementing in Ethereum are fairly complex
2) even given great developers, bugs are inevitable in complex code
3) the budget of the contract-makers' security team MUST be smaller than that of the hackers
You quickly see that if the chance of a bug is nonzero, "smart contracts" don't make economic sense. If you have a $100k contract, and you spend $5k on security (which would absolutely destroy most companies' margins by the way) you'll be facing hackers that are EACH willing to spend up to $90k or so. Let's say all the experts in this example world are $200/hr. You spent 25 expert-hours on security. But you're being hacked by people who spent 450 expert-hours on hacking you.
With that in mind, would YOU want to use a smart contract? Spend 5% of the contract value instantly on security, and risk losing 105%? This isn't a normal loss by the way, where you can prosecute someone or sue somebody. No, this is the instant, digital theft of the entire value of the contract, to an anonymous digital address where it will be quickly blended in with hundreds of millions of dollars of similar thefts a month.