Minority Branches

What would happen if some minority of mining hash power and maybe a merchant or exchange decided to stay with, or move to, different consensus rules than everybody else?

Would there be two different flavors of Bitcoin? Would it cause massive disruptions to the Bitcoin economy? Would your coins be safe?

(spoiler alert if you’re in a hurry: no, no, and yes)

I’ll start with the assumption that there is a supermajority (two-thirds or more– comfortably over 50%) that wants one set of consensus rules, and a minority that wants another set of consensus rules. This analysis doesn’t work if there is an even split in opinion about the rules. I’m also assuming that there is a supermajority of both hash power and transaction creators (the ‘economic majority’) on the same side; the analysis is different if miners and exchanges/merchants/users disagree about what the rules should be.

So, if there is a split in the block chain, with one branch supported by a supermajority of economic and hash power and another branch supported by a minority, the branches will quickly become unequal in length. Let’s work through a scenario where there is an 80/20 split in hash power and assuming minimal changes to the consensus rules on both branches:

The majority branch will generate a block every 12.5 minutes for 17.5 days, until difficulty adjusts and it goes back to producing a block every ten minutes.

Miners on the minority branch will generate a block every 50 minutes for 70 days, until difficulty adjusts and that branch gets back to producing a block every ten minutes.

Miners have to wait 100 blocks before they can spend their newly minted coins, and that’s the first disincentive for miners on the minority branch: they will have to wait about three and a half days before moving those new coins to somebody willing to exchange them for goods or services or another currency. Miners on the majority branch can trade their new coins after less than a day.

The real question for the minority miners is will there be anybody willing to trade for those newly minted “minoritycoins”? And what is the price likely to be?

Trading safely on the minority branch is difficult, because right after the fork every transaction is valid on both branches since unspent coins before the fork are valid on both branches. “Pay me eleven minoritycoins” is the same as “Pay me eleven majoritycoins” if the transaction will be accepted into both branches. If minoritycoins are worth less than majoritycoins, then that is a big problem.

And minoritycoins will be worth much less than majoritycoins, because they are worse in every practical way. They take longer to confirm, fewer people accept them for payment, they are protected by less hash power, and they are much more difficult to transact safely.

That is the real disincentive for miners to stick with the minority branch; in the three days it takes for their newly minted minoritycoins to mature they are very likely to see the price they can get for those coins drop to almost zero.

If they just try hard enough…. #

If the minority makes some big changes to the consensus rules, then they could sidestep a lot of these problems. Resetting the difficulty will fix the problem of very slow-to-confirm transactions. Changing the proof-of-work would eliminate the risk (which I haven’t talked about) of the majority miners dedicating some hash power to attack the minority branch.

Changing the transaction format so transactions aren’t valid on both chains would eliminate the risk of accidentally sending eleven ‘majoritycoins’ (worth a few thousand dollars) to somebody when you really meant to send eleven ‘minoritycoins’ (which might be worth much less).

But either of the above would be a radical change– equivalent to creating an altcoin. There are plenty of those (even one that kinda-sorta ran the “start with the Bitcoin ledger” experiment), but their existence doesn’t disrupt the Bitcoin economy or pose any threat to people who hold Bitcoin.

A minority branch would be even less of a threat.


Now read this

A Guided Tour of the 2mb Fork

Increasing the block size limit from 1 million bytes to 2 million bytes sounds so simple: just change the “1” to a “2” in the source code and we’re done, right? If we didn’t care about a smooth upgrade, then it could be that simple. Just... Continue →