4 ms·
Do you think that the vision is bad or just the implementation?
by tdaltonc 10y ago
Do you think that the vision is bad or just the implementation?
- nas 10y agoWriting bug free software is extremely difficult, as anyone who knows a little about software can tell you. When software bugs can cost people millions and your system is built on the idea of people writing lots of software contracts, there is a problem. I think the vision is bad. The idea of software enforced contracts is a neat idea and someday we will have it. Ethereum is not going to be it, IMHO. Their developers want to handwave the hard problems aside and brag about how innovative they are. E.g. call for research on tools to check for bugs in contracts, meanwhile their programming platform is absolutely dreadful for writing bug free code. A better vision would be to use all the software correctness research that been done over the last 20 years. Probably use a function language that makes reasoning easier. Maybe something like Lamports TLA+ to specify behavior. I would think you want a small set of contract templates that people can use. They would be as simple as possible and heavily reviewed. I have read the DAO is on the order of 1,000 lines of code. I'd be willing to bet money there are more bugs remaining to be found. More forks in the future?
- mannykannot 10y agoThe state of software verification is not yet there; if it were, there would be a lot of use - and corresponding job demand - in aerospace, finance and wherever security matters. Almost everyone who is enthusing about software-enforced contracts is implicitly assuming that someone else is going to do the verification, because they could not do it themselves even if they wanted to.
- InclinedPlane 10y agoBoth. The whole idea is stunningly naive in multiple different ways. First, because the idea of "the law" as some sort of operating system for society or even the concept of the law as a program is extremely dangerous and fraught with difficulties. And most legal systems in the world have built in systems to ensure that there are elements of flexibility through humans bringing subjective judgment to bear connecting the inflexible "programmatic" elements of the law, so that errors, bugs, incompleteness, paradoxes, etc. in the law do not have undue negative consequences on society. The idea of a completely programmatic system of law, even in contract law, should be monstrously frightening. This is the stuff of kafkaesque nightmares, of unfeeling and inflexible bureaucracy which has in it no room for humans or human life. To the extent that there are programmatic aspects of law that could be good, these must have a "safety valve" that allows them to be overriden and human judgment applied. Consider how often everyone has experienced a moment of frustration when trying to get some sort of customer service while hearing a clerk or service person say "sorry, the system just doesn't allow that". And indeed we've seen precisely what happens when you lock yourself into a contract system with zero human oversight, Ethereum proved that it did need oversight, and bolting it on after the fact is much more costly (if perhaps impossible) than building it in from the start. Second, there is a stunning naivety about logic and computing involved. One common misconception of developers with an immature understanding of computing is the idea that software is deterministic. In theory software can be deterministic, but largely in a way that is completely irrelevant quite often. It's deterministic the way dice are deterministic or fluid dynamics or computation of the mandlebrot set are. In practice it's not possible for humans to understand and reason about systems that might exhibit a stunning degree of complexity despite being very simply designed. Additionally, it ignores several well known fundamental problems in computer science, such as the halting problem and the problem of decidability. As well as several thorny problems in software engineering. Even if you work only within the space of "provably correct" software systems, that still doesn't save you because one of the most common kinds of software engineering errors is an omission at the design stage. Software that provably does exactly what you've specified, but when you've specified the wrong thing is unhelpful. The whole idea relies on behavior of both humans and software that are not only unrealistic but provably impossible. It requires that everyone write 100% perfect bug free code for every contract and to be able to read code and determine conclusively with minimal effort exactly what it does and also verify that it is 100% bug free. If any of that were possible the direct applications of being able to do such magical things in software development would vastly outstrip the use in contracts or cryptocurrency, by orders of magnitude. If we had the formula to make bug free software with minimal effort the world would be an utterly different place.
- Nullabillity 10y agoOn the other hand, as hard as auditing software is, auditing humans is just about impossible. Any kind of "human safety valve" is just as much (if not more) a vector for corruption as it is a bodge to avoid having to audit for bugs. If a trial depends on what judge you were (un)lucky enough to get then I'd consider that a far bigger flaw than the occasional misjudgement.
- InclinedPlane 10y agoWhich is why there are layers of accountability and protections. A system of appeals. A free press. Governor and presidential pardons, etc. Of course it's not perfect and of course it can, and has been, subject to tremendous corruption. But the idea that you can simply insert code based contracts into the maelstrom of human society and expect to avoid those problems is sheer fantasy. Indeed, you call attention to the possibility of "occasional misjudgment" here, in this thread, where the context is about the complete and utter failure of the entire system due to defects in the system. You're standing next to a barn with not only the doors wide open but that is actively burning to the ground and you're trying to tell people that using the barn is safe, and only subject to occasional misjudgment.
- Nullabillity 10y agoFor the record, I never invested anything into ETH. I'm more interested in the general concept than this specific approach. That said, human day-to-day oversight has also caused massive failures. Eliminating failures completely isn't an option, but the question is how to reduce them in the long run.
- mannykannot 10y ago>As hard as auditing software is, auditing humans is just about impossible. It is the other way around. Currently, there is no software being verified to the degree that anything but almost inconsequential smart contracts would require. Instead, we deal with software the way we handle contracts: when something goes wrong (which is quite common) we intervene.