Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> That's obviously the point, though. You are trading one set of risks for a completely different set of risks.

But that's exactly the point.

People are not able to interpret "smart" contracts. For normal contracts most people can understand the contract and if there is a dispute you have laws and courts who can interpret in every case.

In case of "smart" contracts even the contract developers more often than not seem to not be able to understand all consequences.

So if we are trading one set of risks for another it kinda seems to me to be a a really shitty tradeoff.



Well, to be fair, people write legal contracts without fully understanding what they are writing all the time too. I do disagree that people understand them on most cases.

Things are better on consumer law because it assumes from the start that people are stupid and have no idea what they are doing. But other kinds of contracts have quite large security risks.


Yes, and when normal contracts don't (because they can't) anticipate every possible scenario, there is a meta layer on top of that to resolve edge cases.

In the case of a smart contract, it can even happen that both parties agree in how things should take place when there's a problem! But bad code doesn't work that way, and you can find yourself in a null state of indeterminacy without a built in layer to resolve that.

The entire evolution of legal jargon can be viewed as an attempt to provide a linguistic framework whereby ambiguity is minimized and edge cases are anticipated. But human interactions are chaotic and all outcomes or scenarios can never be predicted, hence the need for a layer of human judgement.

That layer is imperfect, sometimes wrong, sometimes biased, but still necessary. I don't see how smart contracts can work without that sort of layer, but with a human judgment layer then they're not really smart contracts in the way people want such contracts to function.

Trusting any smart contract of sufficient complexity is like trusting that a code base has absolutely zero bugs and zero unanticipated edge cases. I just don't see that as realistic.

If a programmer at a bank or exchanged should have coded ">=" then I want 1) for them to easily be able to act on their intentions instead of their mistake or 2) the ability to bring in a 3rd party to interpret and resolve the situation if #1 doesn't work out.


> Trusting any smart contract of sufficient complexity is like trusting that a code base has absolutely zero bugs and zero unanticipated edge cases. I just don't see that as realistic.

You can do this to some extent using formal verification. Most code doesn't get formally verified because it's kind of a pain to do, and you can usually fix bugs later, but smart contracts are the perfect candidate for it since they are (1) mission critical, (2) naturally limited in size and scope, and (3) cannot be fixed after the fact. You can write perfect code if you have the right tools and do it carefully.


Formal verification doesn’t help with bad assumptions that went into the design of the program.


That is absolutely true, but even legal contracts can't help you with bad assumptions that underpin the entire contract itself.


Yes, that's sort of what I mean though: you can't avoid mistakes like that, but with legal contracts there is mechanism to resolve that issue with hundreds of years of experience and benchmarks and mechanisms for figuring out how to hand these things. It's messy and imperfect, but there's no achieving perfection human affairs.

Smart contracts don't have a mechanism if this sort. If you have an issue with them as in this case with IRON, your best hope is that IRON will find a way to handle it that satisfies everyone (which may be hard) or that the normal legal system is able to resolve it.

Both of those kind of negate the purpose many people want smart contracts to have in being free of sovereign legal systems and, once implemented, automated without the need for human judgement that may be biased or bad etc, so no longer able to be trustless. At best they simply automate portions of a contract, which is still a very good thing, but not really what enthusiasts are hoping for.


But with legal contracts there is a baseline common sense of things that will not happen.


>You can write perfect code if you have the right tools and do it carefully.

Obviously you are not a programmer.


Is there something about formal verification of systems that I don't understand?


No automatic verification would flag misunderstood business logic


People make mistakes in their verification code the same way they make mistakes in their actual code.


There is something about this "business logic" that I don't understand:

>Because the TITAN price falls to 0 which we have unthought of, the contract will revert the redemption transaction.


> You can write perfect code if you have the right tools and do it carefully.

And you are DJB.


Regular contracts don't have a built in layer to resolve issues either. As you say, it's a meta later above this.

Laws still apply to things handled with smart contracts. You can't say "well sure the escrow contact did the wrong thing but it's code so you can't come after me for your money back".


I agree that right now the legal system still applies.

The problem is that lots of smart contract enthusiasts embrace them for the same reason they embrace crypto currency: they see it as a way to avoid government institutions that they do not want to have to work with or trust. In fact they want the entire contract to be trustless: agree to the terms, implement them in code, and and since the rest is automated you don't have to trust that the other party won't follow through.

I don't see how that can actually work in an automated fashion. Whether it's traditional government or some other legal system or analog, you need a resolution layer above contract layer, but at that point you've lost a lot if what enthusiasts want in smart contracts.


I trust the alarm on my phone to wake me up in the morning, even though it's been programmed by flawed human beings. It's possible to reach sufficient reliability despite our flaws and bugs.


"Sufficient Reliability" still needs mechanisms to resolve the rare issues that occur. A 5 9's system still needs resolutions for the 0.001% scenarios. In the case of your phone's alarm if your phone crashes, runs out of battery, app cache gets corrupted, whatever-- you can intervene with your human judgement to determine an appropriate resolution. What mechanism do smart contracts have for 0.001%?

Your phone's alarm is also not a critical transaction worth a person's life savings or the wealth of a country or a transaction involving life-critical supplies etc. The bar is a bit higher here, and even the most reliable systems ever designed have the ability to insert human judgement when the rare issue happens. Smart contracts are supposed to be appealing because they avoid the need for biased/imperfect judgement in favor of something "trustless", or at least that's the vision many see for them.

Contracts can also have hundreds or thousands of clauses, making "sufficient reliability" a much higher bar than an alarm clock. Especially because many of those clauses entail human concepts that would be extremely difficult to translate into code: What is the algorithm for determining "force majeur"? That's a pretty basic clause that appears in many contracts, but I don't know where you'd even begin to get a computer to understand & properly identify such events.

I don't see a pathway to sufficient reliability in smart contracts anywhere on the horizon, save for very simple cases. Even then, here we have IRON, which should have been relatively simple as these things go, but failed because the simple case of "Titan has no value" was not considered.


ex-lawyer here: I can confirm it is possible to write buggy conventional contracts; I have done so on numerous occasions. I have missed the odd ',', or simlar lexical slips, in a clause. Fortunately no rockets or stablecoins crashed as a result. And yes, a judge would resolve this to the sound of mocking laughter in the courtroom.


Isn't this why laywers' have to get indemnity insurance?


It is. Being sued for professional negligence is hurty & we earn by inflicting pain on others not getitng hurt ourselves. A static type checker/formal verifier for legal contracts would be worth serious money.


This is how ALL of Crypto works. A decentralized ledger means that you cannot call the CEO or CFO of the ledger and have a clearly fraudulent transfer revoked. That is the tradeoff.


Yes. Trading off hundreds of years of experience and judicial tradition and precedent for a brand new shiny (just trust us programmers) system.

If the former system were to be irretrievably corrupt, teetering on the edge of collapse, and the proposed replacement were capable of replacing it then it would be worthwhile.

The existing international financial system is corrupt, the judiciary in most of our world is complicit, but it is not on the edge of collapse (look how brilliantly it sailed through the 2008 crises. It used its political power to get the middle classes to bail out the super rich). The proposed replacement (cryptro currencies) has no support from cryptographers (I am not one) nor finance geeks (that I have been). It is even worse that that which it proposes to replace.

Additionally in most of the Western World we have the democratic institutions that can be put to use to fix the system. Economists are slowly coming around to recognising the catastrophic mess that the current system is, how it is sapping our vitality as a community, enriching the few (hi Unicorn founders - fly to Mars please) and impoverishing the middle classes.

We can fix this. But we have to give up on single fixes (like crypto). This requires modern system thinking....


> has no support from cryptographers

I am a PhD student in cryptography, and judging by the papers I've read there is plenty of support from cryptographers, many of whom are directly involved in research and development. Silvio Micali is practically a founder of modern cryptography (and Turing Award winner), and he co-created the blockchain Algorand. There is also plenty of opposition, as the subject elicits strong opinions, but the assertion that cryptocurrency has no support from cryptographers is just false.


True. The universally quantified statement "No cryptographers thing X" is almost certainly going to be false.

Hyperbole on my part, oops. Sorry about that.

I am not a cryptographer, but I do pay attention to cryptographers. Well, some cryptographers.

So thanks to your helpful comment I looked up Silvio Micali. He has rather faint endorsement, but endorsement it is.


In fact, I can think of nothing more profitable for a cryptographer than designing a better cryptocurrency.


The fundamentals are all wrong though. Money is, amoung other things, a web of trust. Trying to remove trust from it is taking away some of what makes it money.

I do not think there is a solution in this space that works economically or financially.

What we need is a unit of exchange that: holds its value reliably, allows a lot of transactions, has low over head, allows anonymous transactions.

A central bank could build a system that does the first four, but they have no incentive to do the last.


> It is even worse that that which it proposes to replace.

Aside from the vocal minority of BTC maxis that jerk off to the idea of making a crypto-revolution, no serious developer in crypto wants it to replace the existing systems and institutions. We "only" want to create an alternative for the times and places where the current institutions are insufficient or dysfunctional.


If the current financial system really can fix itself and become better than cryptocurrency through democracy, then I don't really get what it has to fear from cryptocurrency. Under that hypothetical, cryptocurrency would be inferior, nobody would use it and it would die out. Problem solves itself.

And as a member of the middle class, I personally think it's a feature that cryptocurrency can't be inflated to bail out the rich. If banks knew that they weren't going to get bailed out, they wouldn't have taken as many risks and we would have avoided the whole crisis in the first place.


Not sure big banks, brokers, etc. fear cryptocurrencies. They are already starting to happily make money of those and sell products around them. Banks worked happily in the past with decentralized/local currencies, for example.

The concern might be more on the policy and regulatory side of the world.


What I think a lot of people don't appreciate yet is that computationally decentralised systems can still have legal single points of failure.

Lots of chains have holding entities or foundations (nominally for governance, really to justify their premine or "reserves") and seem rather vulnerable, especially if they pay the core developers.

The CEO of that entity won't take your calls but they are absolutely exposed to the whims of the legal system in their founding jurisdiction.


Except when you can, e.g. the Ethereum DAO. Turns out crypto is just exchanging one shady cabal for an even shadier one.


No, not really. The Ethereum fork was successful because the majority of the users through absolutely decentralized consensus started following the forked chain.

Vitalik did not pass any legally binding decree to get people to comply, and the worst thing that happened to people who disagreed with the change? They got left to play with the other chain.


eh, for a regular financial contract you need lawyers and judges. There is plenty of counterintuitive law that burns people.

For this one you need programmers and computers.

On both cases, if you go in blind or wing it you might get burned.


Yep, and programmers only have a few decades instead of hundreds of years to have built up generational knowledge of pitfalls and best practices, and even then traditional systems get things wrong.

I'm not convinced that programmers and computers can bootstrap to that level of experience very quickly. I think a decade ago I was more optimistic on that possibility, but a decade of repeating history has made me a bit more pessimistic on that ability and cynical about the motives of most people involved.


most lucid comment yet.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: