With Gavin’s announcement of his support of the Bitcoin-XT project, it’s clear that the first Bitcoin Civil War is inevitable. There are a great deal of misconceptions about how this will occur and what will happen. Ignoring the political and economic consequences, the actual steps taken that will ignite this war are quite clear. While this applies to the proposals for making a larger block size, any potential hard fork to Bitcoin will have the same path.
Types of Forks
Forks fall into one of four categories, dependent on the overlap of the rules.
Intersecting Consensus Rules
In this case, some blocks are valid in both consensus rules, but others are only valid in one. In this case, there will be two independent chains that can occur. Miners can choose one of three sets of consensus rules to follow. They can mine the old rules, the new rules, or the intersection of the two rules. In this case, the easiest thing for miners to do is to require both consensus rules to be met, and mine in the middle. If the majority of miners use this ruleset, users cannot do anything to separate the mine. However, if the majority does not follow these rules, two chains will exist, independently, once the first miner mines the first block that only meets the new rules, but not the old ones.
In this case, the two forks follow completely different rules. Switching Bitcoin to Proof of Stake would result in a divergent fork. Blocks mined with Proof of Stake would never be accepted by Blocks mined with Proof of Work, and vice versa. Miners would choose a side, and users would have coins on both chains.
In this case, the new consensus rules are stricter than the old rules. Any block meeting the new rules will be valid by old nodes. However, blocks that are valid in the old rules may not be valid anymore. Once the majority of miners adopt the soft fork, users cannot ever “choose” the soft fork, as miners will always be able to create a longer valid chain. This has been used in the past without much controversy and are well documented. Miners can dictate stricter rules and users must follow them.
Backwards Compatible Hard Forks
In this case, the new consensus rules will support all previously allowed rules, but also allow additional flexibility. The 20MB proposal meets this criteria. Every block currently valid. However, once a block is mined that only meets the new rules, a fork occurs. If the majority of miners stick to the old rules, the new blocks will be orphaned, even by users who upgrade.
The Block Size Increase Fork
Increasing the valid block size falls into the Backwards Compatible Hard Fork category. This means, until the majority of miners are mining the new rules, what other users do or want is irrelevant. 1MB blocks will always outrun the 20MB blocks, thus orphaning any miners who decide to mine 20MB blocks.
Why Votes Don’t Matter
Many of the proposals for the fork include a voting mechanism for miners to signal that they are upgraded. However, miners very easily can lie about their intentions. A miner may wish to trick other miners into mining the fork, then continue to mine the small block sizes in an attempt to have less competition by having miners waste efforts on a fork that will be orphaned. Votes will be extremely hard to trust.
The First Shots
No matter what happens in terms of popular support or developer support, nothing can occur until the first miner decides to take sides. Eventually, some miner will have to decide that the time is right to mine a bigger block. He does so at great risk — if the other miners are not with him, he will be orphaned and lose his block reward. Continuing to mine 1MB or less blocks costs him nothing. No rational miner will take this step unless he is sure to win the battle.
Once that first block is mined, every miner must decide what to do. He can choose to follow this block, or he can choose to attempt to orphan this block. His risks are somewhat lessened — someone else made the first move and they felt comfortable doing so, so there is at least some real support for the fork. Either way, chances are likely that a few miners will attempt to orphan this block. Miners can choose to follow the large blocks or attempt to orphan. If they attempt to orphan, they do risk losing, as they are not sure how other miners will react. If they attempt to follow the new block, they also can lose, as their block could get orphaned very easily if the majority of miners do not support them.
If the next block found attempts to orphan the large block, miners will sense danger in mining larger blocks. Miners that mine small blocks on the longest chain have nothing to gain by mining big blocks, other than possibly slightly increased transaction fees, and everything to lose. If a second block is found on the large chain, even if it is small will signal even more support. Once it is clear that the majority of miners support the large chain, many will have less risk in mining on it, lessening the orphan risk. However, another key risk remains.
While non-mining users have no power to force larger block sizes, they have complete power in accepting them. So even when a majority of miners are on the larger-block fork, users may ignore those blocks. This kind of veto power is necessary to prevent a hijacking of the network by miners, making changes such as changing the block reward rules to their own benefit. Miners must risk mining blocks that will not be accepted by users. Miners are bound by economic pressures of what coins will produce the most value for their cost. If the users prefer small coins, then they will be forced into creating smaller blocks or else they will be mining a worthless altcoin. If users strongly prefer the larger lock, once the miners upgrade, miners will mostly mine the larger chain. However, holdout miners may continue to mine the old chain collecting rewards (at a slower rate until difficulty resets) as a gamble or to serve the minority of users who do not wish to follow the new rules. Both chains could potentially live on independently.
An alternative possibility is to force divergence. The consensus rules could be altered to a divergent fork, where users would specify that a certain block MUST be greater than 1 MB, forcing the hand of the miners. Blocks after that point could be allowed to be smaller, but this would force a fork at a known time. Miners would be forced to choose a side. I have not seen this proposed, although it certainly could make the break more smooth and less risky for miners by not forcing one to make the first move.
Due to the great risk the first miners to break consensus, don’t expect miners to readily adopt the new rules easily. They will only do so when it is clear that a majority of miners will follow them AND an economic majority will honor blocks they create. Regardless of your position on what should happen, this change will not go down easily.