About a week ago, the Ethereum network forked to recover funds from a malfunctioning application dubbed "The DAO". The DAO was the worlds first decentralized autonomous organization (DAO), it had gathered $150 million in capital, and was the shape of companies to come.



The DAO was an inspiring project, but it turned out to have a bug in its code, which allowed stakeholders to withdraw the same asset multiple times. This bug introduced a feature that was exploited by a group or an individual who used it to steal around 1/4th of the funds in The DAO, 3.6 million ETH worth around $50 million.



The bug was made possible by how smart-contracts have a default function, which is used to tell the contract what to do when it receives funds. When stakeholders withdrew assets from "The DAO", they could use a smart-contract as their withdraw address, and then have that contract pre-programmed to call the withdraw function again and again and again. The DAO would then process the next withdraw before finishing the previous one. The balance of the stakeholder was only corrected after their assets had been withdrawn, and so the recursive call would call the function before the balance correction could happen, and do so over and over again.



This reentrancy vulnerability was widely known amongst expert ethereum developers, and is per design a feature to the Ethereum ecosystem as reentrancy enables contracts to talk back and forth. It is unknown exactly why "The DAO project" included the feature to withdraw multiple times, and it was most probably because the project was rushed as a result of the extremely rapid growth of the ethereum computer. Standard development procedures had not yet developed, and The DAO took risks which in the end may have been positive as they publicised the risks of reentrancy bugs, they popularised the idea of decentralized autonomous organizations (DAOs), and the ethereum technology as a whole. Failure as an option may have in fact accelerated the evolution of Ethereum.



Back to the application rescue fork. Withdrawn funds in The DAO were locked in a child DAO for a few weeks, a design pattern that was conceived to protect against reentrancy problems but that also made the system much more complex, and probably led to the DAO-heist bug being undiscovered. The "child DAOs" were a creative solution that added lots of extra work to anyone who wanted to audit the DAO code.



Because the stolen funds were locked in the child DAO system, there was enough time to deploy an application rescue fork which introduced a protocol change that forcibly moved the funds from the child DAO. This application rescue version of Ethereum is now live, and it remains to be seen if this new social contract will be accepted by the ETH-holders.



The fork was planned and executed without a clear consensus from those who actually control Ethereum, ETH-holders, miners, influential developers and thought leaders, etc. Only around 5% of all Ether participated on carbonvote.com. There were a few polls on Twitter too etc, and a change.is petition. The fork was deployed anyway, and this led to a split-chain event, with two Ethereum computers existing simultaneously.







What we are seeing now with the ETC/ETH split is that the market self-organises to show what chain people agree to use, and the miners follow the $$$. That is now an ongoing process, ETC has 1/8 the hash power and 1/8 the $$$. Those who want to can choose the risk-free alternative of keeping duplicate copies on both chains, and Ethereum can find consensus through the market trading assets back and forth until one chain wins.



This is an efficient consensus process with zero risk if you keep the duplicate copies of your stake, and those who want to gamble can do so, and they get rewarded for doing the work of reaching consensus.







Assuming this “consensus-through-split" process is a zero-sum game that leads to one chain being the winner and the death of the other, then this could be seen as part of a selection process for how blockchain protocols evolve, it could be seen as part of the ethereum protocol itself, and those who want to play it safe can keep double copies, relax, and lean back while the protocol does its work.



If this split is seen as a natural consensus-reaching process and as an asset to the community, then as long as all transactions are relayed, non-contract nonces will increment equally on both chains which allows continuous relay of transactions, many types of contract state-changes will lead to mirrored changes on both chains, and many types of dApps could probably continue to run.







What we need for consensus-through-split to work is to have clients that relay transactions, and a practice of pausing dApps that are vulnerable to the split-phase of this consensus process.



TL;DR: The ETH/ETC split is part of a consensus-reaching process that is perhaps better than stake-vote like http://carbonvote.com, since consensus-through-split pays people for doing the work of voting with their stake. If we trust that the market is a form of collective intelligence, then we just need to let it do its work.