RE: My rational basis for being pro-fork is that to be never-fork or anti-fork has much worse long term potential consequences.
I found your piece to be incredibly insightful. I would like to add the following critique.
A blockchain is pure interpretation of free speech, it cannot act, therefore it cannot violate the NAP nor kill people.
That said, the value placed upon the interpretation of free speech is based upon the perception of people. If a bug were found that created unlimited bitcoin, eth, or steem, everyone would in turn place very little value on the token.
What we can conclude is that people place value on tokens they trust. They trust tokens that do not steal from them.
When you have a simple blockchain like Bitcoin, theft is easier to identify. When you have a more complex smart contract, the definition of theft gets more subjective.
Without people blockchains have no value. Without value blockchains have no power. Without power blockchains cannot harm anyone.
I see your point by calling it tokens. There is definitely a free speech argument which can be made which is why I'm not saying people cannot express themselves in the market through transactions. I just cannot make sense of the reasoning people have for making the blockchain sacred and attaching primary or mandatory principles like immutability to it yet also somehow people believe it will not evolve into something harmful?
The only way to make sure something doesn't evolve into something harmful is to co-evolve with it. Humans co-evolved with cats and dogs. Humans and intelligent agents also have to co-evolve. In this case it would be humans and smart contracts who have to co-evolve.
One of my concerns with the human rights scenario is that it may be possible someday in the future for a blockchain to enslave people by smart contracts. I admit it is just a hypothetical scenario but it's not technologically impossible that in a world of ubiquitous computing, smart contracts everywhere, that some "evil" person can design a smart contract which seeks to find ways to enslave all of humanity. I would not put it past some individual or group of individuals to attempt something like that in the future which is why I put forth the human rights scenario.
I agree - when a smart contract runs amok you don't need too violate the blockchain by reversing time (i.e. hard-forking). You just dump the token.
That's a very important difference between a robot and a blockchain.
Why is the blockchain sacred? I see "blockchain" as nothing more than a data structure. A programmer knows there are many data structures but we don't seem to treat any of the other data structures in this way. If we called the blockchain a database then we don't usually say we can never delete anything from our database even if it's hurting the long term utility value of the database itself. So why is a blockchain something sacred which must be immutable at all costs?
By the way I never called the "blockchain" anything more than a data structure. I called the smart contracts the robots or "intelligent agents" which utilize the data structure. If we cannot shut down a smart contract because of blockchain immutability then this is far different from what you have to deal with on a mere cryptocurrency. A global computer must have a way to shut down rogue processes or what is the long term value proposition? Who do you imagine will use amoral Ethereum?
For me blockchain being sacred is the essence of Satoshi's contribution.
As Charles Hoskinson put it bluntly:
If we put humans back as the ultimate decision makers, all that's left of the blockchain concept is an innovative way to reach a consensus (plus censorship resistance). But the main problem remains unsolved: the unreliability of human nature.
So yes, for me blockchain is much more than a data structure. It is the foundation of a completely new approach to organize a human society. It might turn out to be worse than the current status quo, but at least it is substantially different, so there is a chance the result will be different. On the other hand, what you propose is not substantially different, so I expect that by following your approach we will eventually end up with an automated version of the current political system.
This is fine if you're talking about Bitcoin. Ethereum is not Bitcoin. Why should Ethereum use the blockchain in the same way as Bitcoin if it's not Bitcoin? Also this highlights a difference between hard computing and soft computing, hard coding and soft coding. You cannot effectively using hard computing to try to engineer the perfect protocol and you cannot hard code a set of rules which never change until the end of time and expect the system to evolve as humans change as a species.
A blockchain can provide coercion resistant consensus. This is actually incredibly valuable for humanity. Human beings are always in the loop with Proof of Stake and Ethereum intends to go Proof of Stake. So how exactly are you going to compare Ethereum to Bitcoin as if they are the same species?
You assume human nature is fixed or that it cannot be evolved, augmented or changed. Cyborg nature will not necessarily resemble what you think of as human nature in 2016. We already have cyborgization happening and in the future people may have implants, BCI, intelligent agents which help them make decisions, and in that context you cannot say human nature will be the same to say that the blockchain frozen for all time by the ideals of Satoshi will be what is best in 5 or 10 years time when next technologies change human nature which is not fixed. This is why I argued for co-evolution because it's not the hard computing approach, because it recognizes that the meaning of human, and the nature of the human is subject to continuous change.
To me the blockchain is just a data structure. The distributed hash table is also a data structure. So what? Both have changed society. The distributed hash table allowed for Bittorrent. Bubble sort is an algorithm but we don't hear people talking about the intentions and principles of the bubble sort algorithm. Programmers take the data structures and algorithms they need to design something new and improved.
Bitcoin took what was out there and combined it in a way to create something very valuable which is censorship resistant transactions. For Bitcoin this censorship resistance is the primary property separating it from other digital currencies like Paypal. Ethereum never was designed to be a digital currency and Ether was never treated as money. Ethereum was designed to be a smart contract platform for the creation of DACs/DAOs and if it can't do that then it's no better than Litecoin.
Dash is a better pure cryptocurrency than Ethereum or Bitcoin so really if people want a blockchain for that then why not use Dash? I just don't see why blockchain the data structure should forever be sacred just because Satoshi invented it in 2008. I don't see that kind of treatment for any other data structure or algorithm anywhere. Show me another example of a sacred data structure please.
References
To go into the distinction a bit between hard and soft computing. If you are doing hard computing then you will try to engineer a protocol which by some math formula or some other fixed set of rules can find the optimal solution without dealing with the imprecise, or possibility, or approximation.
My point is that you cannot have governance at all without accepting there will be some degree of imprecision, possibility, approximation, if you wish to have a form of governance which respects free will. You certainly can have governance by blockchain where it's precise such as for example with The Borg, where everyone is brain chipped, and where no one has free will anymore. In that situation the AI would control everyone so there would be a 100% agreement on every decision.
Otherwise you ultimately are going to have some level of disagreement which means you have to rely on soft computing which is evolutionary computing. Steem is based on soft computing because it uses an evolutionary algorithm with a blockchain data structure. Steem is more able to adapt and evolve than Ethereum is at this time even though Ethereum has smart contracts because Steem can make decisions which are in the best interest of it's community by imprecise governance methods. Prediction markets, swarm intelligence, human based evolutionary computation, none of it is precise. All of it is approximation and the market itself is not precise and is just an approximation of the current sentiment.
It brings so much more to the table than mere "automation". It brings all of the benefits of soft computing with some of the benefits of hard computing. Some parts of the platform can be hard coded or hard computing, such as the amount of tokens never under any circumstances going beyond the cap or ever inflating beyond the mathematically determined rate. On that I would agree with the hard computing / hard coding crowd.
But on governance you simply cannot do it with fully autonomous hard coding. Not only governance but swarm intelligence, secure distributed computation, evolutionary algorithms, handling Big Data or the Internet of Things, you simply can't do it effectively under the hard coding paradigm. Bitcoin will not be able to do it because Bitcoin has to stay Bitcoin which is precisely why it sacrifices evolvability in order to follow the fully autonomous hard computing paradigm. For a censorship resistant cryptocurrency function the hard computing paradigm is just fine because Bitcoin isn't expected to replace corporations as a social organization, or evolve into new forms of governance, or allow for digital institutions, or allow for DAOs, DACs, DCOs, etc.
How about we try and think about it like this, imagine that society itself is just a computer. Imagine all thinkers (human and machine) are computers. These computers contribute computation to society, humans in the form of human computation and machines in the form of machine computation. Now if we look at something like Ethereum it is possible to do distributed computation, on a distributed social super computer. I called it a social super computer because human beings are part of the computer itself.
When a human being acts as an oracle, or contributes a solution through human computation, they become an active part of the computer itself. A decision of yes or no from the human computers in the system is nothing more than a solution to a problem posed to the human parts of the system. Some problems can only ever by solved in the best interests of the human stakeholders by the human stakeholders. To think you can somehow have something hard coded which can solve all possible problems and evolve in all possible ways is just impossible.
Also if you get the relationship between human computation and machine computation wrong then you can end up with hostile AI. An AI could for example solve the problem amorally, through ruthless mathematics, by simply exterminating all human beings and all life. Because if nothing is alive then nothing can be left to disagree. There is a reason why many security experts warn against Turing complete smart contracts and there is also a reason why many AI experts and philosophers warn against the dangers of runaway AI.
It seems to me that you want the blockchain to act as an arrow of time. I can respect that perspective of linear time being a purpose of a blockchain but again this doesn't mean for the purposes of a computer or the universe that it works this way.
While you do not change the past by erasing the past out of history (the past would still exist), what you'd be doing is creating a parallel universe or mirror universe where the undesired events simply did not happen. The old universe would still exist because information cannot be created or destroyed in practical reality but there would simply be another alternative universe where perhaps Judgment Day never happened which people can switch onto by means of fork. I don't see why we shouldn't always maintain that principle as that principle seems of greater priority to a community of people than immutable blockchains which can easily be used by people in another community who stick only to chains with those kinds of blockchains.
The level of risk from an immutable blockchain data structure combined with the rise of AI or even perhaps superintelligence is a factor in my thinking on this issue. I do not believe the technology of 2016 is going to be what we will be dealing with in 2026. People who support immutable blockchain today might think it was the biggest mistake in human history in 10 years.
Ethereum can do whatever they want. But if they make hard-forking part of their business, I lose interest in it because it brings nothing new to the table except automation.
I never said rules cannot change. All I say is that rules should not change retroactively - no time reversal.
The essential part of human nature has always been the same: power is constantly abused.
For me the main difference is that Bitcoin cannot be undone whereas PayPal can.
That's the point - there is nothing of similar importance, in terms of potential impact on human interactions. MaidSafe might have a similar impact but it's still too early to tell if it succeeds.
You continue to misinterpret my approach. I'm not saying that everything has to be hard-coded and prevented from evolving. Human input is valuable and a blockchain needs it to be able to evolve. All I say is that once a decision is made, its effects should never be undone. That's an axiom.
Why did Slockit deploy the DAO the way they did? Why did so many people put their money in it without thinking too much? The answer is simple: because they knew damn well that if things go wrong all of it can be undone. Would you employ Mr. Tual to write and deploy some crucial spacecraft software for you? Would you fly an aircraft built by his company?
Again, you mix up different concepts. Blockchain is not AI. It will never be able to kill people. Blockchain can easily be stopped by just dumping the token and bearing the cost. All that a blockchain is capable to do, is force people to make responsible decisions and bear the consequences of bad decisions. This a mindset which is very unfamiliar in the corporate world and they will surely call it stupid.
Blockchain is technology combined with a specific mindset. If you remove the mindset bit you are left with a consensus tool - quite innovative but not truly revolutionary. It's like learning all the techniques of karate or judo but ignoring the underlying mindset and tradition. You can stil be an effective fighter, I agree, but you will never achieve anything significant.
Just put the contracts in a database, create a foundation to operate database servers, and state in the bylaws that token holders get to vote on foundation decisions. This would be far simpler and far more efficient than all this blockchain nonsense.
The purpose of blockchains, and really their only useful purpose, was and is to create something that is autonomous and not controllable. That doesn't make it necessarily a good thing, but a controllable blockchain does nothing that a foundation-controlled database server can't do, thus is pointless.
@innuendo
Most states have something like this. If someone is falsely accused (because some other people social engineer the justice system), then over time with DNA evidence or something similar the person can be released. In some cases the government will even reward this person with money for the time they spent away from their family. The ability to correct mistakes exists in most governments. The ability to correct injustice is very important for a community and it's no doubt that The DAO being exploited is an injustice on the communiy at least and at worst it could be an attack on Ethereum through the fact that most smart contracts are buggy and will be buggy going into the future.
I see at best the smart contracts are like colonies or states but are not able to be completely separated from Ethereum itself. If a smart contract becomes a threat to Ethereum itself, as in the blockchain, as in the community behind Ethereum, as in the integrity and security of the platform, then of course I would say maybe it's best to shut it down to protect the rest of Ethereum from being infected. Just as you would shut down a virus or worm which threatens to infect the rest of the network. Ideally smart contract developers should all be talented and all produce secure code which cannot be exploited by zero day but it's possible that hackers are simply more talented and this is normal because generally in information security the attackers have all the advantages against the defenders.
You make a valid point that being autonomous might be an ambition of The DAO. Unfortunately they failed. Now we do not want their failure to negatively effect the growth or evolution of Ethereum. If the hacker is allowed to keep the ETH then he can use it in Proof of Stake which could doom Ethereum from an evolutionary perspective.
It can also allow the hacker to do further actions with all of his ETH to manipulate the market, or to poison the network with transactions he stole from The DAO. Any of these will make headlines and possibly destroy Ethereum long term. We have to remember that the hacker owns around 15% of the tokens which in a Proof of Stake system is too much for a clearly hostile entity to have.
Due to the current systemic risk and the likely risks that can come in the future I would say hard fork as much as necessary to protect the network from attack. It is possible that coordinated attacks, hacks, exploits, can be launched by nation states actors or from script kiddies with no possible means of determining the which it came from but we would know the effect will be negative. If the attacker is allowed to keep the money (if there is no soft fork) then it sets a precedent that anyone who can hack a smart contract can get rich and this is something Ethereum as a platform is not able to withstand at this time because it's not mature or secure.
Not forking allows a precedent to be set in the mind of the general public that "smart contracts are not secure" or even worse the precedent that "smart contracts are even less secure than what I currently use". If smart contracts cannot be marketed as more secure to the general public then it will never catch on. Just like Bitcoin is never going to catch on if it's not seen as more secure than credit cards. So any time Bitcoin wallets get remotely drained by some anonymous entity, this will slow the adoption of Bitcoin.
Bitcoin cannot reverse these transactions without effecting every transaction but Ethereum can reverse the transaction without effecting any other transactions on the network. So I am not against reversing that particular transaction if the consensus is that some hacker stole from thousands or millions of Bitcoin users. This would be particularly true if Bitcoin were switching to Proof of Stake because then there is no way you can leave in the hands of the adversary that much stake, it would welcome a hostile takeover.
@innuendo That is why a formal spec and formal verification should have been mandatory. I guess we can blame Solidity for making it into a situation where we can never really know if it was a bug or a feature. All we can do is ask the people who developed the smart contract for a plain English answer as to what their intentions were because we have no formal means of identifying it.
So far it appears that most of the people involved at the most intimate levels think it's a bug. Slock.it and the original programmers are treating it as if it's a bug. But I do see your point and why this confusion exists and I think this confusion would never exist if there were a formal spec but then if it were formally verified then these sorts of possible bugs could have been caught through that process.
(max reply depth)
@dana-edwards it is not a question of sacred. You are inserting something into my comment that I did not say. My comment addresses utility. The issue is not whether the database is distributed or not, as there are numerous methods of replication and synchronization that can be used. The issue is whether there is central control. A foundation that owns a set of replicated databases is functionally equivalent to a blockchain which is not autonomous and immutable, except that the former is more efficient, and indeed may even gain in efficiency when difficult problems such as the DAO arise, since it will have a clear governance process and a clear path to resolving disputes via the existing legal system. It makes no difference whether this foundation block-chain "data structure" happens to be implemented with Graphine (which might or might not be a reasonable option, I don't know enough about the Graphine code to say) or some other technology stack.
If Ethereum wants to be a database controlled by a membership organization with people voting on whether to reverse transactions, then that might very well be okay, except that it doesn't advance technology in any useful way over what has been done for decades.
@dana-edwards - please notice the important distinction between amending the law and changing the existing outcome of the law. It's not the same.
What you propose is to have some sort of a higher law which can trump the law expressed in a smart contract. Or in other words, just as standard contract is an obligation enforced by a court of law, you treat a smart contract as obligation enforced by the blockchain consensus. But notice the word autonomous in the DAO name - it means "having the freedom to govern itself or control its own affairs" or "having the freedom to act independently". How can a smart contract be autonomous if its outcome is dependent on a blockchain consensus and can be altered by this external consensus?
And when you fork it's not centralized control. It's decentralized control. It's distributed authority using the same consensus mechanisms that protects everything else.
So if you are saying mining is not decentralized and that the consensus mechanism is not decentralized then why hasn't there been a 51% attack? Maybe because it's not economically feasible to attack that way. On the other hand when you have poorly written smart contracts writen in a language not exactly designed for correct by construction mission critical applications then you open up an alternative attack vector that the very same interested parties who would have attacked by 51% attack can target.
Instead of for example a state sponsored team of hackers spending a fortune on trying to 51% attack all they have to do in this case spend the time to analyze the common flaws in Ethereum smart contracts and the design flaws in Ethereum itself. Once they know both the design flaws and the common flaws programmers make in their vulnerability analysis and research then they can simply spend time developing many unknown "zero-day" exploits.
These exploits could either be sold on the black market for other hackers to exploit (this would cover their tracks the most) or they could use these exploits with the permission of governments to destroy Ethereum by reducing the ability of the market to trust the smart contracts. Suppose for example the same sort of effort that were put into hacking Iranian nuclear facilities with Stuxnet were put into hacking Ethereum?
Ethereum would die a death of 1000 cuts because no one would know which smart contract is safe to put money in and which isn't. Smart contracts would be drained or made defective seemlingly at random, or perhaps deliberately timed to influence the market such as to gain from manipulating. Of course after every smart contract is exploited there will be fud in the forum not to ever fork, and to continue putting as much money as you want into smart contracts because the whole platform is working as it's supposed to.
The point here? Instead of state sponsored hackers or officials having to confiscate physically it would be possible to confiscate or shut down remotely. If you can shut down a smart contract without permission how is that not censorship? If a website is shut down by hackers or shut down by a nation state it's still censorship. So Ethereum with the failure of The DAO cannot claim to be suitable for the purpose it's advertised for and that purpose is for reliable (trusted) smart contracts.
"If Ethereum wants to be a database controlled by a membership organization with people voting on whether to reverse transactions, then that might very well be okay, except that it doesn't advance technology in any useful way over what has been done for decades."
That isn't how the fork works in Ethereum. In Bitcoin a fork like that would require reversing legitimate transactions which is why it was deemed politically impossible but also not fair for the people who made legitimate transactions at the same time. The fork proposed for Ethereum is to be targeted specifically at the illegitimate transactions only. Illegitimate because those transactions broke the expected functionality of the smart contract and threaten the Ethereum network itself.
So the point of the fork is not to reverse any legitimate transactions. The point of the fork is to free the Ether from being in what can be described as an infinite tug of war between factions of hackers. This is like if an app on your computer is in an infinite loop and is draining resources unless you shut it down and restart it or delete it entirely.
So in essence you cannot say there is central control because the whole community gets to decide on a fork. You cannot say it reverses any legitimate transactions. All the soft fork does is block illegitimate transactions (similar to how Bitcoin blocked spam) and the hard fork reverses the effects of the illegitimate transaction. The transaction is illegitimate because it was an obvious exploit and if exploits cannot be reversed on Ethereum then when some government which I will not name gets upset at some smart contract there is always the risk that their hackers could exploit it in some unexpected way. No one will ever be able to have enough faith to put $150 million+ into a smart contract again and how much utility can Ethereum have if that is the case?
I guess you can see how vague this is. For one person something is "an obvious exploit", and for another it is not. In this case the majority needs to decide and each time such a decision is made there will be people who do not agree and they will dump the token.
Anyway, even if we made hard-forking a common practice (to prevent hacking incentive), this would mean constant straggle within the community and overall distraction over and over again.
Therefore I cannot see any sensibile way out for Ethereum. TauChain makes sense, Ethereum does not.