There was part of the discussion with Mike Hearn on Epicenter Bitcoin last week that I haven't seen discussed. I cut out the relevant 2 or 3 minutes:
https://youtu.be/DB9goUDBAR0Here is part of what he said:
Do we really have the majority we think we do? ... There's nothing like measuring it for real. The worst case scenario is the majority ... the economic majority ... is in favor but the hash power, the mining majority is not. That would be a very messy situation for bitcoin.
There've been concerns raised by mining pools in China where a lot of mining has been going on that their connectivity has been extremely poor compared to the rest of the internet for a bunch of reasons. If the needs of the wider global bitcoin community start diverging from what miners in China want, then who wins? The answer is the economic majority wins, right, the wider community wins, but it would require a bit of a technical mess to sort everything out in that case.
... If we imagine this kind of worst case scenario happening, they would ignore the longest chain. Doesn't matter that it's the longest if it's ... um ... uh ... you know ... well, let me rephrase that.
... If miners were building a longer chain than the 20 Meg chain, then the client would keep switching back to it and keep ending up with this bigger and bigger backlog. At that point what we would have to do is like checkpoint blocks into both the full nodes and the SPV wallets. So that's a much larger and more complicated upgrade to force it onto the "larger" chain, right.
In the worst case scenario if the miners and the rest of the bitcoin community end up in some kind of full-fledged war, that would basically wreck bitcoin.
I keep reading that the fork wouldn't take place until "90%" of nodes and/or miners have upgraded, but that doesn't sound like what Hearn is describing at all.
I'm not against lifting the hard block size limit from 1MB to 20MB (or some compromise like 8MB), but trying to do it without the miners in China sounds like a disaster. I'm strongly against putting checkpoints into the code to "ignore the longest chain." It's scary to think the idea even sounds reasonable.