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?
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.
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.
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.
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.
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.
I'm just N=1, but if the trend continues then I see it not growing beyond a hardcore self-interested group of people.
US fiat failed and was only rescued through ad hoc legislation. US fiat would not exist today if new rules (unknown at the time of failure) were not defined to essentially rollback prior transactions.
Now take Ethereum: suddenly changes to the transaction history needed to be made which violates the one law of cryptocurrency that's been shoved down my throat ever since Bitcoin hit mainstream media. So with no process set (because it should not have been needed in the first place), a sudden reversal of intent for one arbitrary contract, and no way to have the original intent stay binding, Ethereum made its choice. It didn't even have a legislative process, just an authoritative one guised as a democratic vote. The way that choice went down shatters all trust. If US Treasury suddenly decided it didn't need to follow any US legislation and redistributed wealth across the world, trust in USD would equally be shattered. I'm not a gambling man, but at this point in time my money stays in USD.
I don't think I made your point, though. The laws that were passed to rescue the previously failed rules were utterly unknown at the time the failure was occurring. Instead of those rules being followed through (resulting in the complete destruction of debt-currency), a political elite was able to force a rescue of the failed actors. Wealth was redistributed across the world as USD should have ceased to exist and all debt vanished, but was allowed to be propped up at the whims of technocrats (Fed buyers).
> I do not want to be subjected to the whims of an unregulated group operating under unknown rules[...]
I read it as "operating under unknown rules", so I don't mean the laws as currently written but the legislative process used to change the laws so they can be fixed (this was my intended meaning). I agree with you fully: the rules can, do and will fail and the next set of rules are utterly unknown now. But rulemakers are currently operating under known rules: the legislative process. Always have been through all the US fiat changes.
The lack of trust in the legislative process is what makes cryptocurrencies attractive. I infer (possibly incorrectly) you also share a healthy mistrust in the legislative process, just as I do. But Ethereum never laid out a formal process governing these sorts of changes (not a legislative, authoritative, nor democratic one) so the implication to the whole world was that none would ever be needed (because cryptocurrency) and people trusted that this fact would be respected. With this DAO reversal, Ethereum has broken that assumption many people hold, and lost that trust. This is why the OP in the article is upset: the process that resulted was an authoritative one disguised as a democratic vote in his or her eyes. And I am inclined to agree.
Edit to remove typo "as as" to "as".
The bailout of USD can also be described as an authoritative one disguised as a democratic vote. Congresspeople were told the world would end if they did not vote for the legislation they were handed.
This is the last time I'll attempt to make this point.
Congressional elections are typically decided by ~25% of citizens. Not very far from the 5% rate you are claiming. Sampled approval rates have been as low as 11%. The most recent rate I've found is 16%.
Your point is about minimal discrepancies and misses (for me) the much, much larger picture.
You are pretty much guaranteed that, modulo some events, any US president from any party will honor their predecessors' decisions, pacts, treaties, etc. And you can be assured that the whole nation will follow them, because of of the Rule of Law!
What you've just witnessed in Ethereum is a bunch of rich, moderately intelligent, technocratic and very technologically literate (but not necessarily well educated ("who would want a government when you have code bah!")) visionaries and mostly speculators crying to get their money back by abandoning the very characteristic (immutability) that distinguished them from traditional systems of governance! They had a modus operandi that "Code is Law", and they've now turned against it. "Code is Law unless X". Why have that when you can just have plain and simple "Law"?
[citation needed]
Here is one Paulson quote:
>You could just see it. We could see it and it was one of the most frustrating--when I look at the things I could have done better, there were a lot of them and they come out in the book, but the communications challenges were huge. I mean, I sat there when the capital markets froze, before we went to Congress, and the money markets weren't working, and I just tried to think about how to explain this. Because I knew--I was seeing major, blue-chip industrial companies that were having trouble raising financing, so I knew with $3.4 trillion of money market funds, and with everything that was just getting ready to break apart, that if the system had collapsed there'd be thousands and thousands and thousands of mainstream industrial companies--middle-sized companies, large companies--that wouldn't be able to raise their short-term funding, finance their inventories, pay their people. People wouldn't have been able to pay their bills. This would have rippled through the economy. We would then have had--well, today we have over 10% unemployment. That's terrible. And that's after everything we've done. If the system had collapsed, when we were on the brink, unemployement easily could have been at the 25% level that we saw at the Great Depression, and the value destruction--much greater than we've had in terms of home prices and in terms of people's savings accounts and stock portfolios and so on.
>https://www.amazon.com/Brink-Inside-Collapse-Global-Financia...
And Bernanke: >He said that bailout was necessary because “we knew that the collapse of the firm would potentially destroy or at least paralyze the global financial system with tremendously bad consequences for everybody.”
>http://www.centraljersey.com/news/princeton-former-fed-chair...
Also, where's the "rolling back of prior transactions"?
>Also, where's the "rolling back of prior transactions"?
AIG's CDS/O's should have basically all failed, per the rules of the system. These were just papered over. "Pre-emptive rollback" might suit better.
You can't roll back something that hasn't happened! That's not how causality works! :)
Ethereum failed, as they decided smart contracts aren't a great idea, so they're now going to involve humans when they feel like it. The whole premise of Ethereum was the opposite of what they're doing.
In practice they found out (and showed the public) the kind of consequences everyone was expecting; and so we have a successful experiment giving some evidence on whether smart contracts w/o overrides are a good idea - apparently, it's not; and now based on this we can build better systems that properly account for the risks that DAO had.