7 ms·
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.
by takinola 8y ago
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?
- derefr 8y ago> 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.
- ttul 8y agoShow 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?
- antidesitter 8y ago> an actual agreement between parties to place nicely together What does this mean?
- derefr 8y agoAssume 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.
- landryraccoon 8y ago> 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.
- 8y ago
- sparkie 8y ago"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.
- derefr 8y agoI'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.
- xchaotic 8y agoSmart 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)
- derefr 8y agoI'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.
- opaque 8y ago> 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.
- msbarnett 8y agoThis 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
- posterboy 8y agoBullshit, 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.
- 8y ago
- Animats 8y agoIt'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 https://en.wikipedia.org/wiki/Decision_table
- chrisco255 8y agoYou 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.
- Animats 8y agoWhen you're talking about serious money, you do. Remember the DAO.
- sneak 8y agoThen 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.
- discovan 8y agoThis is a problem of lack of decentralization in Ethereum. This is not a problem of smart contract as a concept.
- discovan 8y agoContracts (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.