Oracles, or why smart contracts still haven’t changed the world(blog.smartdec.net)
blog.smartdec.net
Oracles, or why smart contracts still haven’t changed the world
https://blog.smartdec.net/oracles-or-why-smart-contracts-still-havent-changed-the-world-69464999e1d3
69 comments
The smart contracts concept has an inescapable flaw: it's software. The problem is that software has bugs, ergo some smart contracts will have exploitable bugs. So what happens when someone triggers the contract, based not on the performance of the contract, but on a bug? Do you shrug and treat the software as the final arbiter or do you go to court and seek redress? If the former, then it may become profitable (and legal) to employ talented hackers to go around cracking contracts. If the latter, then why not just write the contract on paper from the start since courts have well established traditions for dealing with paper contracts?
It's bad software. "Smart contracts" should never have been general purpose byte-code programs. They should have been something much simpler and more declarative, like a decision table.[1] Those simple tables are readable and predictable. They can even be tested exhaustively.
Yes, someone will have a use case where this can't do (obscure thing) nobody really needs to do. The way to design this is to try to express common contract forms - buying, selling, lending, renting, betting, derivatives - and make sure you have the expressive power for that. Then stop.
A decision table would be an improvement over some current written contracts. A friend once asked me to read over a complex currency swap derivative contract, written in English and I found a clause that was the opposite of what it should have been.
(And no, layering another language layer on top of the byte code, and a proof system on top of that, is not the answer.)
[1] https://en.wikipedia.org/wiki/Decision_table
Yes, someone will have a use case where this can't do (obscure thing) nobody really needs to do. The way to design this is to try to express common contract forms - buying, selling, lending, renting, betting, derivatives - and make sure you have the expressive power for that. Then stop.
A decision table would be an improvement over some current written contracts. A friend once asked me to read over a complex currency swap derivative contract, written in English and I found a clause that was the opposite of what it should have been.
(And no, layering another language layer on top of the byte code, and a proof system on top of that, is not the answer.)
[1] https://en.wikipedia.org/wiki/Decision_table
You have no idea how smart contracts are going to be used and implemented. A platform that makes a bunch of assumptions is DOA. I think that the answer is something more akin to what Ethereum already does, you open source protocols like ERC20 (tokens) and most dapps use those to achieve that functionality. You don't limit yourself and by extension, innovation with non-Turing complete expressiveness.
When you're talking about serious money, you do. Remember the DAO.
> If the latter, then why not just write the contract on paper from the start since courts have well established traditions for dealing with paper contracts?
Presumably because paper contracts don't scale; nor do they arbitrate machine:machine interactions without human proxies on both sides.
Presumably because paper contracts don't scale; nor do they arbitrate machine:machine interactions without human proxies on both sides.
"paper" here could be used loosely to refer to traditional contracts enforced by the state, in any form. They can still be electronic, but the databases will obviously be administered by the state, rather than being immutable on a blockchain. They'll be more efficient, but given the historical record of government database systems, less secure.
I'd be fine with this for regulatory compliance.
But one nice thing about contracts (the objects of civil law) is that the state doesn't actually get involved in them except in the breach. You can create as many contracts as you like, as often as you like, with whomever you like, without any sort of filing cost or delay, and they will require no resources to maintain until someone on one side or the other thinks the contract has been violated.
I can't imagine the same being true if all contracts essentially worked like deeds, having to be notarized and filed at a government office (even if electronically) to have force, and needing to pay upkeep fees to keep them filed there lest their force lapse.
Also: a blockchain is nice because it allows people in different sovereign jurisdictions to create a contract. There's no legal contract I can make, as a US citizen, with e.g. a Cuban or Iranian citizen. But I can transact with them through a smart contract.
But one nice thing about contracts (the objects of civil law) is that the state doesn't actually get involved in them except in the breach. You can create as many contracts as you like, as often as you like, with whomever you like, without any sort of filing cost or delay, and they will require no resources to maintain until someone on one side or the other thinks the contract has been violated.
I can't imagine the same being true if all contracts essentially worked like deeds, having to be notarized and filed at a government office (even if electronically) to have force, and needing to pay upkeep fees to keep them filed there lest their force lapse.
Also: a blockchain is nice because it allows people in different sovereign jurisdictions to create a contract. There's no legal contract I can make, as a US citizen, with e.g. a Cuban or Iranian citizen. But I can transact with them through a smart contract.
Smart contract do not override existing law os if there's sanctions for say selling PS3s to Iranians, even if smart contract could let you do that, it wouldn't be legal. In any case the existing case law in the US and UK already has it that a contract does not have to written down to exist so if you're pretty sure things are going to go well - say mowing the lawn, you can go ahead and just enter the contract with nothing written down (an no need for smart contract either)
Actually, smart contract DOES override existing law - if the subject of the contract is fully on-chain. In that case you can engage all the courts and police in the state, still, they won't be able to undo your transaction. Obviously, this does not apply to the example with PS3.
I'm not really talking about overriding sanctions; just an absence of trade/treaty relations between two countries. You can't have an iterated prisoner's dilemma on an international level without an extradition treaty. (Well, you can, using the sort of arbitrary state-to-state gifts that international diplomatic incidents are resolved by, but that doesn't scale.)
> already has it that a contract does not have to written down to exist so if you're pretty sure things are going to go well - say mowing the lawn, you can go ahead and just enter the contract with nothing written down
Yeah, but there's a reason people do write contracts down rather than... not doing that, when they want to actually have them be enforced in the breach.
Personally, I don't even really want smart contracts to "do" anything on their own; all they would need to be useful is to be predicates—executable code running on a distributed computer that automatically detects a breach of contract, so that legal measures can be taken. That, by itself, is much more useful than a regular two-party written contract that devolves into "burn down their office to get out of the contract", or the regular three-party (you, them, a lawyer) written contract that costs $500/hr to facilitate.
> already has it that a contract does not have to written down to exist so if you're pretty sure things are going to go well - say mowing the lawn, you can go ahead and just enter the contract with nothing written down
Yeah, but there's a reason people do write contracts down rather than... not doing that, when they want to actually have them be enforced in the breach.
Personally, I don't even really want smart contracts to "do" anything on their own; all they would need to be useful is to be predicates—executable code running on a distributed computer that automatically detects a breach of contract, so that legal measures can be taken. That, by itself, is much more useful than a regular two-party written contract that devolves into "burn down their office to get out of the contract", or the regular three-party (you, them, a lawyer) written contract that costs $500/hr to facilitate.
Show me a few practical reasons you’d ever need a smart contract for this, instead of just some code and an actual agreement between parties to place nicely together?
Assume you have a two-sided markets of interacting agents who each only interact once, like buyers and sellers.
Without any middleman, this doesn't work, because the parties are in a prisoner's dilemma, rather than an iterated prisoner's dilemma—nobody can effectively punish the other party in a future transaction, so there's no incentive to not screw the other party over.
Without smart contracts, what you need here is a "marketplace owner"—a legal agent where both sides have a legal agreement with them. This changes the situation so both sides are playing an iterated prisoner's dilemma with the marketplace owner, who can punish a user on either side for what they did to a user on the other side in a previous one-off transaction.
But this marketplace-owner role is also known as a "middle man." Their role in punishing defection is valuable enough that the market doesn't disappear if they extract rent from both sides—and so they usually do. Ideally, we would have an alternative where everything still works out, but where rent cannot be extracted.
With smart contracts, the marketplace-owner role is performed by, essentially, the buyers and sellers all automatically voting on whether a given transaction was legitimate. The smart contract is just the specification both sides have agreed to, in a given case, for judging the legitimacy of a transaction; and the blockchain is just a database which all parties doing this auditing synchronize amongst themselves, containing copies of both 1. those specifications, and 2. all the data required to validate any new transaction against them (which, in the case of a ledger-like transaction, is usually "all the valid transactions executed so far").
There still needs to be a human-level legal recourse for disputes—but those disputes would only ever be disputes about the specification of transactional legitimacy being wrongly specified, which are much rarer than disputes of the form of "he defected!"/"no I didn't!", to the point that the service of arbitrating such disputes would not be seen, at a human level, as valuable enough to justify rent-extraction.
Without any middleman, this doesn't work, because the parties are in a prisoner's dilemma, rather than an iterated prisoner's dilemma—nobody can effectively punish the other party in a future transaction, so there's no incentive to not screw the other party over.
Without smart contracts, what you need here is a "marketplace owner"—a legal agent where both sides have a legal agreement with them. This changes the situation so both sides are playing an iterated prisoner's dilemma with the marketplace owner, who can punish a user on either side for what they did to a user on the other side in a previous one-off transaction.
But this marketplace-owner role is also known as a "middle man." Their role in punishing defection is valuable enough that the market doesn't disappear if they extract rent from both sides—and so they usually do. Ideally, we would have an alternative where everything still works out, but where rent cannot be extracted.
With smart contracts, the marketplace-owner role is performed by, essentially, the buyers and sellers all automatically voting on whether a given transaction was legitimate. The smart contract is just the specification both sides have agreed to, in a given case, for judging the legitimacy of a transaction; and the blockchain is just a database which all parties doing this auditing synchronize amongst themselves, containing copies of both 1. those specifications, and 2. all the data required to validate any new transaction against them (which, in the case of a ledger-like transaction, is usually "all the valid transactions executed so far").
There still needs to be a human-level legal recourse for disputes—but those disputes would only ever be disputes about the specification of transactional legitimacy being wrongly specified, which are much rarer than disputes of the form of "he defected!"/"no I didn't!", to the point that the service of arbitrating such disputes would not be seen, at a human level, as valuable enough to justify rent-extraction.
> Assume you have a two-sided markets of interacting agents who each only interact once, like buyers and sellers.
Don’t we already have this? Street markets and retail shops and one off websites and millions of other agents making up modern markets? It seems to work fine.
Don’t we already have this? Street markets and retail shops and one off websites and millions of other agents making up modern markets? It seems to work fine.
> Street markets and retail shops
In cities with police forces. Purchases at street-markets don't devolve into robbery because police forces disincentivize that. The municipality taxes you for that service, and so is effectively a middleman and rent extractor for these transactions.
Also, in cases where you've decided to trade using cash rather than to barter, you're being protected from your counterparty paying with counterfeit currency, by the state coming down rather harshly on counterfeiters, keeping counterfeit currency out of the market. That's a service they provide in exchange for state-level taxes. So, another middleman and rent extractor in your transaction.
> one off websites
When this works, it's because the payment processor (Stripe, PayPal) is acting as the middleman and rent-extractor.
Even without a payment processor, you can usually seek redress from your credit card company (another middleman and rent-extractor.)
Also, a search engine probably acted as a matchmaking agent to lead you to reputable services (and so is also acting as a rent-extractor in a round-about way, with sponsored ads and such.)
Without these parties in play, the Internet is not a safe place to transact. 99.99% of credit card input forms on the internet (by volume) are those of phishing domains. That's what a non-iterated prisoner's dilemma looks like.
In cities with police forces. Purchases at street-markets don't devolve into robbery because police forces disincentivize that. The municipality taxes you for that service, and so is effectively a middleman and rent extractor for these transactions.
Also, in cases where you've decided to trade using cash rather than to barter, you're being protected from your counterparty paying with counterfeit currency, by the state coming down rather harshly on counterfeiters, keeping counterfeit currency out of the market. That's a service they provide in exchange for state-level taxes. So, another middleman and rent extractor in your transaction.
> one off websites
When this works, it's because the payment processor (Stripe, PayPal) is acting as the middleman and rent-extractor.
Even without a payment processor, you can usually seek redress from your credit card company (another middleman and rent-extractor.)
Also, a search engine probably acted as a matchmaking agent to lead you to reputable services (and so is also acting as a rent-extractor in a round-about way, with sponsored ads and such.)
Without these parties in play, the Internet is not a safe place to transact. 99.99% of credit card input forms on the internet (by volume) are those of phishing domains. That's what a non-iterated prisoner's dilemma looks like.
Do I read this right - and this is a genuine question, not a rhetorical one - "smart contracts" as tool to not have to rely on the state? Because to me it seems tools like these are exactly the ones that need a strong state (or a strong mafia - when there is no state those with power create one for themselves). I admit I have a hard time understanding what your point actually is.
You read it about half-way right. Smart contracts make the state less involved, but they don't eliminate its involvement in a transaction altogether, any more than regular written contracts eliminate the state from a transaction.
The state, or any actor for that matter, can fill multiple roles in a transaction. Intermediating all transactions is a bad role for any actor to be in (from every other actor's perspective), because it's one prone to rent-extraction. Any time you hand money over to a second party through a third party, humans have enshrined the logic that the third party—if it's big and powerful enough—can demand a cut of that transaction.
In all the cases I mentioned, the rent that is being extracted is a cut of all regular transactions. Sales tax / VAT is rent; credit card fees are rent; payment-processor fees are rent; and all of these are percentages. That is why states, credit card companies, and payment processors all have billion- (or trillion-)dollar budgets.
Imagine we eliminate that intermediation. Transactions flow directly between buyer to seller, with nobody able to take a percentile cut of them. No rent is extracted from the original transaction.
Now, in the case where a transaction doesn't go well, we do still want some actor to arbitrate disputes over a transaction. But, given the way legal systems work, it's entirely possible to do that arbitration after the fact. That is the whole idea of civil court, after all.
Such arbitrations usually result in the need for a recompensatory transaction (i.e. a lien); and such transactions need to be intermediated (i.e. supervised) by a third-party, since the two parties have already proven that they aren't mutually trustworthy. So there is a transaction here from which you probably can't stop rent from being extracted.
But that's okay! Disputes happen very rarely, while regular transactions happen all the time. The total cut of small-claims court, probate court, etc. fees, is way smaller than the total revenue of sales tax. The total amount paid to retain an arbitration service, is way smaller than the total amount earned by operating an escrow service. Etc.
The state is essential! It just doesn't belong between two people. It belongs waiting behind two people, acting as the exception-handler which one or both parties run to to report the transaction as having failed from their perspective. Then the state can step in. Much less work for the state; but also, much less rent to extract.
The state, or any actor for that matter, can fill multiple roles in a transaction. Intermediating all transactions is a bad role for any actor to be in (from every other actor's perspective), because it's one prone to rent-extraction. Any time you hand money over to a second party through a third party, humans have enshrined the logic that the third party—if it's big and powerful enough—can demand a cut of that transaction.
In all the cases I mentioned, the rent that is being extracted is a cut of all regular transactions. Sales tax / VAT is rent; credit card fees are rent; payment-processor fees are rent; and all of these are percentages. That is why states, credit card companies, and payment processors all have billion- (or trillion-)dollar budgets.
Imagine we eliminate that intermediation. Transactions flow directly between buyer to seller, with nobody able to take a percentile cut of them. No rent is extracted from the original transaction.
Now, in the case where a transaction doesn't go well, we do still want some actor to arbitrate disputes over a transaction. But, given the way legal systems work, it's entirely possible to do that arbitration after the fact. That is the whole idea of civil court, after all.
Such arbitrations usually result in the need for a recompensatory transaction (i.e. a lien); and such transactions need to be intermediated (i.e. supervised) by a third-party, since the two parties have already proven that they aren't mutually trustworthy. So there is a transaction here from which you probably can't stop rent from being extracted.
But that's okay! Disputes happen very rarely, while regular transactions happen all the time. The total cut of small-claims court, probate court, etc. fees, is way smaller than the total revenue of sales tax. The total amount paid to retain an arbitration service, is way smaller than the total amount earned by operating an escrow service. Etc.
The state is essential! It just doesn't belong between two people. It belongs waiting behind two people, acting as the exception-handler which one or both parties run to to report the transaction as having failed from their perspective. Then the state can step in. Much less work for the state; but also, much less rent to extract.
This thread is fantastic for someone like me who never completely understood the point of smart contracts. Thanks for laying it out so well.
[deleted]
[deleted]
[deleted]
[deleted]
[deleted]
> an actual agreement between parties to place nicely together
What does this mean?
What does this mean?
Contracts (both smart and traditional) are first of all logic constructions. And thus:
1) this logic can be implemented with vulnerabilities, no matter in paper or software form;
2) this logic can be bad by design, allowing undesired behavior of contractors.
These are not problem of smart contracts only, but problems of any kind of contracts. They are much older than any software. And they need to be solved (at least partially) since people need contracts for the economy to function.
> then it may become profitable (and legal) to employ talented hackers to go around cracking contracts.
Replace 'hackers' with 'lawyers' or 'accountants' and that's already true in our present system.
Replace 'hackers' with 'lawyers' or 'accountants' and that's already true in our present system.
This is more myth than fact. Lawers, Judges, and Courts exist to interpret and enforce intent of contracts as much as written word. If Smart Contracts contain a bug that unintentionally allows a random third party to walk away with $50 million, you’re up shit creek. If you tried to do the same thing in a real court (“well judge, the contract unintentionally says that I can walk in and take this money, so you have to let me”), the Judge will tell you to fuck off. The intent of the agreement matters more than technicalities of the written word.
“Technicalities” in general are a lot less of a thing than TV shows would lead you to believe
“Technicalities” in general are a lot less of a thing than TV shows would lead you to believe
Bullshit, a contract is binding. The problem is that language is ambiguous. Code is rather not, although you need to run it to find out. Judges serve as interpreters.
The common moniker to9 not take a contract verbatim is not codified in law as such, I guess. And if it were, it would be ironically self defeating. I don't know US Law precisely, but Germany has BGB § 242 Leistung nach Treu und Glauben - liability by trust and obligation (with respect to the customs of trade).
Translating this title shows how deep the connection runs. "The spirit of the law" as you imply strikes me as something coined at least in roman times if not koine or older. The law is actually very strongly exploiting misunderstandings. The ruling theme is still that vulgar language is wrong, the obligation to interpret code is on the subjects and it is satisfied by the availability and ability of lawyers. The exploitation is giving the judicial branch an advantage that is unfair to the point that lawyers are likened to devils. The downside is that it gives lawyers (including judges) a hard time as well.
The problem with smart contracts remains the same, that limit on expressiveness extends to computer code, that cannot express questions of morality any better.
The common moniker to9 not take a contract verbatim is not codified in law as such, I guess. And if it were, it would be ironically self defeating. I don't know US Law precisely, but Germany has BGB § 242 Leistung nach Treu und Glauben - liability by trust and obligation (with respect to the customs of trade).
Translating this title shows how deep the connection runs. "The spirit of the law" as you imply strikes me as something coined at least in roman times if not koine or older. The law is actually very strongly exploiting misunderstandings. The ruling theme is still that vulgar language is wrong, the obligation to interpret code is on the subjects and it is satisfied by the availability and ability of lawyers. The exploitation is giving the judicial branch an advantage that is unfair to the point that lawyers are likened to devils. The downside is that it gives lawyers (including judges) a hard time as well.
The problem with smart contracts remains the same, that limit on expressiveness extends to computer code, that cannot express questions of morality any better.
Msbarnett is correct. In interpreting a contract a judge will seek to determine the intent of the parties, given all of the information available. Even if the contract language is unambiguous, a court will refuse to enforce it under certain circumstances. For example, if it would be unconscionable to do so. Or if one party was mistaken and the other side knew of the mistake. These are circumstances where one party is clearly unfairly taking advantage of the other, but there are others as well (e.g. mutual mistake).
Automated transactions may have useful applications, but seeking fairness is not one of them.
Automated transactions may have useful applications, but seeking fairness is not one of them.
There are very tight bounds and what you call "unconscionable" I read at first as "unconstitutional", and on second thought as "unbelievable" which is pretty much the opposite of "unambiguous", because of "ex falso quot libet" (from false assumptions follow arbitrary consequences). To a degree you are correct of course, a judge has to judge consciously and if a contract is deficient, the contract cannot guide a conscious decision, but only if awareness of the deficiency nullifies the whole contract. If you let a computer program make decisions, thats your conscious decision to do so.
The way programmatic code can improve on it by automated tools is burdened with the same level of complexity, if not higher than Natural Language. But Smart Contracts are, as the name implies, intended to be used for small, manageable bits of code. Never mind codes that are too big to handle for a single person, bugs from a single typo for example could still happen. There's simply two sides to that. Either strict enforcement is thought to promote improvements in code quality. Or lenient apologies hope to promote amicable values, as far as trust is concerned, e.g. if due diligence also implies to inform whether a likely mistake was intended or not.
If the other party knew of the mistake that may be a "Versteckter Einigungsmangel" (covered up, hidden; Agreement; lack of, deficiency - hidden deficiency of agreement). In that sense no smart contract would be enforcable, because the conscious decision is deferred - post hoc ergo propter hoc.
The deciding difference is, if there's an automatic arbitrage bot for example, and it's not aware of the mistake, the creator has no liability to check for mistakes, I suppose. Whereas if exploits are targeted at buggy programs, that's a different matter.
The deciding factor would be the custom of the trade. Custom comes from costume. So if a foolish script kiddy exploits a huge bank they will suit up and claim higher right from custom. Vice versa, a kid exploited by automatic gambling bots e.g. will be blamed for wearing a suit to big for it's size. /s
The way programmatic code can improve on it by automated tools is burdened with the same level of complexity, if not higher than Natural Language. But Smart Contracts are, as the name implies, intended to be used for small, manageable bits of code. Never mind codes that are too big to handle for a single person, bugs from a single typo for example could still happen. There's simply two sides to that. Either strict enforcement is thought to promote improvements in code quality. Or lenient apologies hope to promote amicable values, as far as trust is concerned, e.g. if due diligence also implies to inform whether a likely mistake was intended or not.
If the other party knew of the mistake that may be a "Versteckter Einigungsmangel" (covered up, hidden; Agreement; lack of, deficiency - hidden deficiency of agreement). In that sense no smart contract would be enforcable, because the conscious decision is deferred - post hoc ergo propter hoc.
The deciding difference is, if there's an automatic arbitrage bot for example, and it's not aware of the mistake, the creator has no liability to check for mistakes, I suppose. Whereas if exploits are targeted at buggy programs, that's a different matter.
The deciding factor would be the custom of the trade. Custom comes from costume. So if a foolish script kiddy exploits a huge bank they will suit up and claim higher right from custom. Vice versa, a kid exploited by automatic gambling bots e.g. will be blamed for wearing a suit to big for it's size. /s
[deleted]
The fact that a third party can benefit from flaws is somewhat unique to smart contracts. However, if you or your company are party to an "unprofitable" contract, it's both legal and sensible to ask a lawyer if it can be broken. The more talented the lawyer the more options they may find for you.
Furthermore, some areas of law seem more open to "Technicalities" than others. It's hard to believe that tax structures like https://www.investopedia.com/terms/d/double-irish-with-a-dut... were part of the intent of the law, though they are compatible with the word of it. The difference between avoidance and evasion often rests on a technicality.
Finding ways to subvert the intent whilst remaining within the 'rules', is the very essence of hacking. No one said the username input couldn't contain an SQL statement?
Furthermore, some areas of law seem more open to "Technicalities" than others. It's hard to believe that tax structures like https://www.investopedia.com/terms/d/double-irish-with-a-dut... were part of the intent of the law, though they are compatible with the word of it. The difference between avoidance and evasion often rests on a technicality.
Finding ways to subvert the intent whilst remaining within the 'rules', is the very essence of hacking. No one said the username input couldn't contain an SQL statement?
Then the creator of the smart contract platform reverts the change, provided it was a big enough amount of money for him to notice, and everyone follows him. It’s a major downgrade versus the existing system of contract law.
This is a problem of lack of decentralization in Ethereum. This is not a problem of smart contract as a concept.
Even if there were perfect, reliable oracles, ‘smart’ contracts still are terrible. When something unexpected happens, the contract is guaranteed to screw up, with no chance for human compromise.
People compare (smart contracts + no social insitutions) to (paper contracts + the entire legal and political system). But that’s not a fair comparison.
Start by imagining the exact system we have now: police, district attorneys, private attorneys, judges, appellate courts, senate, representatives, and executive... all of that in exactly the same configuration, except nothing is considered settled law until it is finalized by those people on the blockchain. No changes in law or consequences, just a replacement of the existing ad-how bookkeeping with blockchain-based bookkeeping.
That would seemingly function, given the current system functions, right? We would probably need some additional laws on how to deal with lost keys and such. But that would be resolved through existing structures. Someone starts impersonating a senator, the FBI investigates, there is a criminal trial, new keys are issued by the executive branch eventually.
Now imagine a slightly different setup, say... the same thing except no legislative branch. Non criminal law. Just the courts and the executive branch, and the executive branch is charged only with carrying out court orders that result from civil contract disputes.
Would that work? We don’t know. But in this blockchain world, people would be free to try that too.
Now imagine every possible variation between those two scenarios also being played out, in little communities who opt into them.
That’s the idea.
Start by imagining the exact system we have now: police, district attorneys, private attorneys, judges, appellate courts, senate, representatives, and executive... all of that in exactly the same configuration, except nothing is considered settled law until it is finalized by those people on the blockchain. No changes in law or consequences, just a replacement of the existing ad-how bookkeeping with blockchain-based bookkeeping.
That would seemingly function, given the current system functions, right? We would probably need some additional laws on how to deal with lost keys and such. But that would be resolved through existing structures. Someone starts impersonating a senator, the FBI investigates, there is a criminal trial, new keys are issued by the executive branch eventually.
Now imagine a slightly different setup, say... the same thing except no legislative branch. Non criminal law. Just the courts and the executive branch, and the executive branch is charged only with carrying out court orders that result from civil contract disputes.
Would that work? We don’t know. But in this blockchain world, people would be free to try that too.
Now imagine every possible variation between those two scenarios also being played out, in little communities who opt into them.
That’s the idea.
> except nothing is considered settled law until it is finalized by those people on the blockchain.
This seems like a really good idea. I wonder if someone has already done something like this on any of the systems out there i.e.\ a system where some nodes are designated as the Executive and have the power to change contracts in case of disputes.
This seems like a really good idea. I wonder if someone has already done something like this on any of the systems out there i.e.\ a system where some nodes are designated as the Executive and have the power to change contracts in case of disputes.
I admit I don't even understand what that is supposed to mean. He writes that laws(!) are not considered "law" until "the people on the blockchain" - whatever that means, agree to it? So the making of laws somehow, obscurely, depends on "the blockchain"? How? Why? It makes no sense to me. What exactly does that mean? A vote of the people over each law, by blockchain? That's the only interpretation I can think of, and it still makes no sense. To me, and I admit my brain is quite limited, every explanation involving "blockchain" sounds surreal at best. I actually took two technical/programming courses (on edX and somewhere else) on "blockchains" so I think I understand the technology, but I'm still puzzled each time somebody explains something that involves this thing. IT seems understanding the technology is of no use - at least to me - when trying to understand the proposed use cases. How exactly the world is supposed to be changed in these scenarios remains a mystery to me, all I read is "magic".
The language is ambiguous, your quote puts together parts of two separate clauses.
The people aren't on the block chain, the "law is finalized (by those people) on the blockchain".
So, throughout the day as a judge is making rulings, their clerk is signing transactions on probably an Ethereum dapp.
The people aren't on the block chain, the "law is finalized (by those people) on the blockchain".
So, throughout the day as a judge is making rulings, their clerk is signing transactions on probably an Ethereum dapp.
Well, yeah, and as I said, I don't understand any of it. The point, I mean. That does not mean that - if I had the power - I would prevent anyone else from going down that route. Quite the opposite, I'm an interested observer, but I wait with judgment until I see something at work in the real world that makes sense to me. So far all I ever see is [insert arbitrary problem here] and then "...and you can do that better with the blockchain" is added. Of course, I may not have the wiring necessary to understand it, just like I can play some kinds of music to some people and they just won't get it. I'll wait and see.
That's the biggest sticking-point, one contract party not performing. What's next? Are you talking contractual penalty, or can you compel the other party to perform?
In the Anglo-American legal sphere you usually settle for compensation, it's the only means at your disposal, whereas in continental Europe (Code civil or BGB) there are legal ways to compel performance as written. Price of strawberries went up, but someone bought strawberry futures cheaply? An American will settle for money, but a Frenchman or German will show up at the warehouse with the bailiff and seize the goods.
You'll find people who hate dealing with Americans. They squirm and won't perform if pressed, it's like nailing pudding to the wall! You have commitments yourself and don't want to scramble for strawberries, otherwise the bailiff will show up at your own offices.
You can say that Bitcoin is Anglo-American because they want Bitcoin to be independent of the real world, no law, just "smart contracts". No wonder that some people shake their heads.
In the Anglo-American legal sphere you usually settle for compensation, it's the only means at your disposal, whereas in continental Europe (Code civil or BGB) there are legal ways to compel performance as written. Price of strawberries went up, but someone bought strawberry futures cheaply? An American will settle for money, but a Frenchman or German will show up at the warehouse with the bailiff and seize the goods.
You'll find people who hate dealing with Americans. They squirm and won't perform if pressed, it's like nailing pudding to the wall! You have commitments yourself and don't want to scramble for strawberries, otherwise the bailiff will show up at your own offices.
You can say that Bitcoin is Anglo-American because they want Bitcoin to be independent of the real world, no law, just "smart contracts". No wonder that some people shake their heads.
> In the Anglo-American legal sphere you usually settle for compensation, it's the only means at your disposal, whereas in continental Europe (Code civil or BGB) there are legal ways to compel performance as written. Price of strawberries went up, but someone bought strawberry futures cheaply? An American will settle for money, but a Frenchman or German will show up at the warehouse with the bailiff and seize the goods.
Specific performance [0] does in fact exist in the U.S, so I'm not sure what you mean.
[0]: https://en.m.wikipedia.org/wiki/Specific_performance
Specific performance [0] does in fact exist in the U.S, so I'm not sure what you mean.
[0]: https://en.m.wikipedia.org/wiki/Specific_performance
From the Wikipedia article that you quoted: It is typically available in the sale of land, but otherwise is not generally available if damages are an appropriate alternative. Specific performance is almost never available for contracts of personal service
It's a problem, I can tell you. If you've been brought up in a world where people usually perform and you encounter an American who underperforms and then wants to haggle you are going to be angry. Right now I'm involved in a dispute with my former landlord who rented out substandard housing, and it looks as if my remedies are very limited. Moving is a great hassle and isn't cheap.
It's a problem, I can tell you. If you've been brought up in a world where people usually perform and you encounter an American who underperforms and then wants to haggle you are going to be angry. Right now I'm involved in a dispute with my former landlord who rented out substandard housing, and it looks as if my remedies are very limited. Moving is a great hassle and isn't cheap.
A smart contract can easily have a "both/two thirds(if a 3rd party is used as an unbiased arbiter) parties agree something went wrong, cancel the contract" function.
I mean, that’s just kind of argument against…computers?
Code is itself a compromise. Do this thing for me, and in exchange for not having to do the thing you lose flexibility.
Code is itself a compromise. Do this thing for me, and in exchange for not having to do the thing you lose flexibility.
> I mean, that’s just kind of argument against…computers?
No, it's an argument from programmers' common sense. Smart contracts are code, and we all know that any program more complex than hello world will contain bugs, due to both coding mistakes and errors in modeling the relevant aspects of reality. Given that, binding people with (immutable!) code seems like an extraordinarily bad idea.
No, it's an argument from programmers' common sense. Smart contracts are code, and we all know that any program more complex than hello world will contain bugs, due to both coding mistakes and errors in modeling the relevant aspects of reality. Given that, binding people with (immutable!) code seems like an extraordinarily bad idea.
I've never understood smart contracts as binding people to anything in particular. People can cash out of the cryptosystem and go do whatever. Smart contracts are binding against machine agents, who have no alternative economy to participate in.
Contracts (smart or not) that aren’t ultimately binding some people to some behavior are pointless. Computers do not (yet) have their own independent desires and economy.
If it's exclusive to machine agents there are plenty of consensus-oriented protocols already in existence that could accomplish the same goal without relying on a blockchain. Machine agents are already bound by the code that executes and models them, all you'd be doing is adding a layer of consensus-driven redundancy for security reasons (both technical and social).
> there are plenty of consensus-oriented protocols already in existence that could accomplish the same goal without relying on a blockchain
Assume:
1. a distributed system where the consensus algorithm is state-dependent (in the sense that an SQL RDBMS that exposes the ability to insert rules/triggers has state-dependent consensus—different MVCC states will see different transactions as valid/invalid);
2. malicious machine-agents (bot oracles) supplying arbitrary input into the distributed system;
3. the distributed system being open-membership, such that malicious people are running auditing nodes (and so you can't really do Raft consensus);
4. the distributed system being large enough that you can't really do Paxos consensus in any efficient way.
Is there any other solution to this problem, than to use the consensus algorithm of:
1. have many nodes redundantly, eagerly audit a block of new inputs;
2. on each step, choose of those blocks essentially by lottery (specifically, a lottery no individual node on the distributed system can predict or cheaply craft an input to win);
3. allow anyone who wants to, to configure their node to fully verify past blocks, such that enough nodes doing this will create "herd immunity", diverging the system away from maliciously-crafted blocks.
Step 2 of the algorithm requires Proof-of-Work (so far as we know); step 3 of the algorithm requires an accessible chain of signed proofs to audit. Together, those spell "blockchain."
Assume:
1. a distributed system where the consensus algorithm is state-dependent (in the sense that an SQL RDBMS that exposes the ability to insert rules/triggers has state-dependent consensus—different MVCC states will see different transactions as valid/invalid);
2. malicious machine-agents (bot oracles) supplying arbitrary input into the distributed system;
3. the distributed system being open-membership, such that malicious people are running auditing nodes (and so you can't really do Raft consensus);
4. the distributed system being large enough that you can't really do Paxos consensus in any efficient way.
Is there any other solution to this problem, than to use the consensus algorithm of:
1. have many nodes redundantly, eagerly audit a block of new inputs;
2. on each step, choose of those blocks essentially by lottery (specifically, a lottery no individual node on the distributed system can predict or cheaply craft an input to win);
3. allow anyone who wants to, to configure their node to fully verify past blocks, such that enough nodes doing this will create "herd immunity", diverging the system away from maliciously-crafted blocks.
Step 2 of the algorithm requires Proof-of-Work (so far as we know); step 3 of the algorithm requires an accessible chain of signed proofs to audit. Together, those spell "blockchain."
Real-world applications rarely require all the assumptions that are necessary for blockchain to be the best solution. For instance, some real-world systems will not be distributed; others will be running under common ownership or under ownership of people who trust each other mutually, etc.
There's this adage[0], that "organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations". It's usually meant negatively, but in this case one can draw a positive conclusion - just like organizations don't need the blockchain to efficiently do their businesses, automated systems designed by those organizations may not need the blockchain either.
--
[0] - https://en.wikipedia.org/wiki/Conway%27s_law
There's this adage[0], that "organizations which design systems ... are constrained to produce designs which are copies of the communication structures of these organizations". It's usually meant negatively, but in this case one can draw a positive conclusion - just like organizations don't need the blockchain to efficiently do their businesses, automated systems designed by those organizations may not need the blockchain either.
--
[0] - https://en.wikipedia.org/wiki/Conway%27s_law
Sure, I don't disagree that many "blockchains" have no need to be such.
There is, in my mind, justification for there existing at least one distributed computation substrate where machine-agents can basically play a https://en.wikipedia.org/wiki/Nomic together, each asserting rules into the system, and then moving data (including data representing physical assets, and new rules) around according to the thusfar-established ruleset. Basically, an extensible distributed stock market where different negotiable synthesized instruments, each with their own rules, can be brought into being and traded, without needing to get buy-in from anybody, by just throwing them on there and seeing if anybody is interested.
(You know, the thing that there was enough pent-up demand for that the very first even-somewhat-viable distributed computation substrate, Ethereum, was forced into this shape despite not being very well-suited for the job, having been designed for entirely different kinds of computation.)
That's pretty much the only good case for a smart-contract blockchain as such that I know of, though.
There is, in my mind, justification for there existing at least one distributed computation substrate where machine-agents can basically play a https://en.wikipedia.org/wiki/Nomic together, each asserting rules into the system, and then moving data (including data representing physical assets, and new rules) around according to the thusfar-established ruleset. Basically, an extensible distributed stock market where different negotiable synthesized instruments, each with their own rules, can be brought into being and traded, without needing to get buy-in from anybody, by just throwing them on there and seeing if anybody is interested.
(You know, the thing that there was enough pent-up demand for that the very first even-somewhat-viable distributed computation substrate, Ethereum, was forced into this shape despite not being very well-suited for the job, having been designed for entirely different kinds of computation.)
That's pretty much the only good case for a smart-contract blockchain as such that I know of, though.
Thanks for introducing me to Nomic games. I think it would benefit those interested in improving on current smart contract implementations to put away the computer for a few days, and just map out the value stream and logical(and often illogical) behavior of the humans, including whatever steps can be taken to supercede the code, in the physical world. I wonder if Nick Szabo had any interactions in this space before coming up with the first ideas for implementing smart contracts. For those interested in the history of smart contracts, check out https://en.m.wikipedia.org/wiki/Smart Contract .Szabo proposes that smart contract infrastructure can be implemented by replicated asset registries and contract execution using cryptographic hash chains and Byzantine fault tolerant replication. Askemos implemented this approach in 2002 using Scheme later adding SQLite as contract script language. The precursor to smart contracts was Ian Griggs idea on Ricardian Contracts https://en.m.wikipedia.org/wiki/Ricardian_contract
If any (No)SQL database contains a mistake, you can either fix the mistake or change the program working with the data to either ignore or override the mistake. Smart contracts are running on an immutable database, the blockchain. If anything is landing there because of an error in the contract, you will never get the mistake out. It's engraved forever.
Updating a smart contract should never happen because once you can update it, you can change its contents and its rules in a way that might benefit only one side. Even if you create rules to update the contract, finding 100% consensus (everything below 100% is unacceptable if you are explicitly using smart contracts to disallow cheating) to update the contract takes time in which more mistakes might happen and make the whole contract unusable.
Updating a smart contract should never happen because once you can update it, you can change its contents and its rules in a way that might benefit only one side. Even if you create rules to update the contract, finding 100% consensus (everything below 100% is unacceptable if you are explicitly using smart contracts to disallow cheating) to update the contract takes time in which more mistakes might happen and make the whole contract unusable.
If Satoshi had thought that a selected set of entities was an adequate replacement for the central entity for control over the money system, he would never have invented Bitcoin. The driving force behind Bitcoin was that it doesn't matter how many entities you have. Every participant needs to be treated as an equal party. Blockchains with "master nodes" are completely missing the wood for the trees.
It really is a shame that we've got so many people trying to do smart contracts "on the blockchain," when everything that they're attempting to offer was previously possible before Bitcoin because their solutions ultimately require a central entity or selected set of entities to work.
It really is a shame that we've got so many people trying to do smart contracts "on the blockchain," when everything that they're attempting to offer was previously possible before Bitcoin because their solutions ultimately require a central entity or selected set of entities to work.
Satoshi isn't God and designed for one extremal case for his experiment. The whole spectrum from decentralization to centralization is valuable to someone.
I just wonder how many people have heard of say, Secure Multi-Party Computation, before they come to the conclusion that they need to print their own money. Yao pioneered many interesting concepts which have basically been swept under the rug because nobody is interested in something that isn't "blockchain."
All blockchains are valuable to someone - the creator. They're cash cows. They start with the premise that they need a blockchain (so they can print money), and work backwards - what can we apply the blockchain to in order to convince people to buy our token. How many cycles of pump and dumps we can go through before people realize that it isn't going to work.
If everyone can and does print their own tokens, what are your tokens going to be worth?
All blockchains are valuable to someone - the creator. They're cash cows. They start with the premise that they need a blockchain (so they can print money), and work backwards - what can we apply the blockchain to in order to convince people to buy our token. How many cycles of pump and dumps we can go through before people realize that it isn't going to work.
If everyone can and does print their own tokens, what are your tokens going to be worth?
Bitcoin was more about reducing transaction costs by sacrificing the ability to undo transactions than anything else. That failed, but the world had plenty of currency’s Bitcoin was supposed to be an alternative and cheaper banking system.
Don't many contracts rely on something to be verified in the real world? If I sign a contract with you to deliver 100kg of rice, and you claim I delivered wheat instead, how can an algo decide that?
Via external sources, the blockchain cannot decide this independently and this breaks the decentralization factor. Typical solutions is to use external oracles with judges and penalty/rewards schemes.
I think it is worth to take a look to MakerDAO and how they handle external oracles to create the DAI stable coin.
I think it is worth to take a look to MakerDAO and how they handle external oracles to create the DAI stable coin.
I mean, answering this question is most of the article.
Oracles break decentralization. I can only imagine a relative secure oracle, for example a weather sensor, as a set of devices/robots left on a remote place and hiding from people/animals while signing data transactions. A lot of thinking should be added to this to remain undetected and sending signals from a remote place. This is the relative equivalent of having the most secure computer in the world in a closed placed and unconnected.
Beyond this, before smart contracts change the world we need to cryptocurrencies be useful and change the world. That is the simplest smart contract case.
Beyond this, before smart contracts change the world we need to cryptocurrencies be useful and change the world. That is the simplest smart contract case.
I could easily be missing the boat with smart contracts, but to me they seem like a solution waiting for a problem. Perhaps for some smaller domain of transactions such as paying for computing resources (rendering, numerical analysis, etc), buying digital resources, or as an alternative to a traditional escrow. Other than that, I don't see what society is really missing out on by not having them.
- to me they seem like a solution waiting for a problem
I feel exactly the same. However, SC are a very interesting technology. I prefer to study it now, to be ready when the humanity is OK with electronic money (cryptocurrencies) and come to electronic contracts.
I feel exactly the same. However, SC are a very interesting technology. I prefer to study it now, to be ready when the humanity is OK with electronic money (cryptocurrencies) and come to electronic contracts.
chain.link - decentralized oracles