A brief history of the Bitcoin block size war
I've already made some posts on this topic; there is currently a schism in the Bitcoin community - although most Bitcoiners have common visions, there is much hostility on how to deal with the current capacity crisis. Currently the community is divided, I call one camp the "small-blockers" and the other block the "big-blockers". Although I'm trying to keep this objective, it will probably shine through that I'm a moderate big-blocker with a preference for the SegWit2X "compromise".
Here is a brief history of the attempts on getting the block size limit increased:
- In 2009 Satoshi introduced a 1 MB block size limit. The biggest blocks at that time was some few kilobytes big. There exists no official documentation on why the limit was introduced, no comments in the code explaining the rationale, and this limit was committed together with a batch of other changes. Gavin Andresen has explained it was to prevent miners from performing a DoS-attack and only meant to be a temporary measure. During the recent years, people like Gregory Maxwell has suggested it was meant to be a permanent limit preventing the blockchain from becoming too big.
- Jeff Garzik proposed to lift the limit already in 2010, claiming the low limit was a "marketing issue". Theymos (correctly) identified the risk of a chain fork as non-upgraded software would still reject big blocks. Satoshi wrote that the time wasn't ripe for an increase, but that it could be done by hard coding the change to apply from some future (in his example, 2011) timestamp or block height, giving people sufficient time to upgrade.
- During 2010-2014 there was much discussions; some people where annoyed having to carry the cost of storing gigabytes of gambling spam forever. The concepts of "soft fork" and "hard fork" was introduced. (See also my forks for dummies article) The notion "hard forks are inherently unsafe and we need absolutely full consensus to implement that" came into existence.
- Sidechains and Lightning was hailed as the solutions to scaling in 2015, and Lightning is still hailed as the silver bullet today.
2014 - 2015: first real attempts to deal with the block size limit
- The first major push to get the limit increased came in May 2015 as Gavin Andressen and Mike Hearn proposed to increase the block size limit to 20 MB. After discussions with miners, the proposed limit was decreased to 8 MB. Actually, at that time, any actual block sizes above 1 MB would give quite big advantages to the biggest Chinese miners/pools. (Lots of improvements were made after this, making block sizes of 8 MB perfectly safe).
- Mike Hearn rightly predicted that the maintainers of the Bitcoin Core github repo would veto any block size increase, and decided to force through BIP-101, a 8 MB + a road map of future upgrades though a hard fork (XT). He got vilified by the Core community, and many found his road map for future upgrades to be far too aggressive. In hindsight, opting for a long-term road map with very big blocks in the future was probably one of his biggest mistakes, the other big mistake was underestimating how much the community would balk at such a "takeover attempt". It was said that Mike wanted to claim the role as the "benevolent dictator" of Bitcoin.
- The moderation of the r/bitcoin reddit sub started getting out of hand at this point, with any discussions of XT being branded as "out-of-scope altcoin discussion". This was probably the biggest reason why the environment got so divided; if free discussions had been allowed we would most likely agree on some compromise already in 2015.
- An upgrade to 8 MB block size without any road map for future upgrades were preferred by many of the miners.
- There was also BIP-100, which actually had more than 50% mining support at some point, outlining a way for miners to vote over changes to the block size limit. (There was an attempt to revive BIP-100 later).
- It was shown that block size limits at 4 MB and above probably would give the Chinese miners an unacceptable advantage. (Those research reports are still used in the argument as of today - but they are mostly obsoleted due to various software optimizations and methods for reducing the orphan rate).
- Jeff Garzik came with his "2 MB upgrade ASAP" plan (BIP-102). It was also rejected.
- Situation was for a long time stalemated due to the many different different proposals out there. In hindsight, had the "big-blockers" joined forces earlier and worked together for one proposal, we'd probably had bigger blocks today.
- Blockstream, MIT and others started sponsoring the Scaling Bitcoin workshop. Only technical talks was allowed, no "politics", no decisions was to be made; any calls for increasing the block size limit was specifically off-topic. Peter R Rizun was allowed to hold a speech at the Montreal conference September 2015 telling that the block size limit could safely be removed, but he was not invited to the follow-up Hong Kong conference in December 2015.
- Peter R Rizun and Andrew Stone started working on Bitcoin Unlimited (initial release January 2016)
- Peter Wuille presented SegWit at the Scaling Bitcoin Hong Kong workshop in December 2015, and it was at first branded as a "4X block size increase through a softfork" - though this did not hold up to scrutiny, and in the slides the capacity increase for a normal transaction is given to be 1.75x.
- The Bitcoin Core scalability roadmap was written up, it contained lots of optimizations, making the Bitcoin Core software require less resources (and hence making it safer to increase the capacity) - but the only promises of a capacity increase was the theoretical ~1.7x capacity increase offered by SegWit.
2016 - the long stalemate
- In the Hong Kong roundtable consensus an agreement was made on a roadmap with SegWit first and a 2 MB block size increase later. Some people considered the agreement void already days after it was made. With Core denying to support a block size increase, and miners denying to implement SegWit before being promised a block size increase, it was efficiently a long-lasting stale-mate.
- Gavin attempted to force through a "compromise" 2 MB upgrade (BIP-109) through his Bitcoin Classic fork. Gavin was thoroughly vilified after this. BIP-109 never got much traction, but it got more traction than XT.
- With BIP-109 being dead, there was the push for "Emergent Consensus" as implemented in Bitcoin Unlimited. Eventually, most big-blockers agreed on supporting EC, and it did get almost 50% miner consensus at some point.
- Apparently, a smear campaign against SegWit was launched - the hostility against SegWit started becoming intense at the big-blocker side of things. Maybe because neither Bitcoin Unlimited, BitcoinXT nor Bitcoin Classic supported it. Hence we got into a situation where the smallblockers (as always) were more obsessed with keeping the 1 MB block size limit than to push through SegWit, and where the bigblockers were more obsessed with blocking SegWit than with getting the block size limit increased.
2017 - UASF, SegWit2X, ASICBOOST, Bitcoin Cash
- The small-blockers started being upset that the miners didn't activate SegWit, the narrative pushed was that high fees and congestion issues was due to the miners depriving the community for the much needed SegWit upgrade. "UASF" was proposed, a highly dangerous "our way or the high way" attempt to force through the SegWit upgrade - some described it as a sybil attack. Anyone running Bitcoin Core with UASF enabled would ignore blocks from miners not supporting SegWit. If less than 50% of the miners would support UASF, we would get a network split, with one UASF-network and one non-UASF-network disagreeing on the history. It would be a real mess. The really ironic thing is that most of those people supporting UASF had been arguing heavy against "dangerous hard forks" just months earlier.
- It was revealed that the biggest mining operator Bitmain was using some patented "covert asic boost"-method for mining faster, thus having an edge over other miners. The method is incompatible with SegWit, hence this may be the explanation why they were blocking SegWit. Quite some people switched side over to the small-blockers after learning this news.
- Due to the long-lasting stalemate and with the upcoming UASF disaster getting closer by each day, the SegWit2X compromise was proposed by Jeff Garzik and others. This was basically a revival of the Hong Kong roundtable agreement. Miners and other major industry actors got together and promised to support the SegWit2X initiative and use alternative software in the unlikely event that Core wouldn't support the 2MB upgrade.
- The BitcoinABC project was made as a contingency-plan should the UASF-disaster become real or the SegWit2X-initative fail for other reasons. In a surprise move, it forked off as "Bitcoin Cash" at the 1st of August. Perhaps this was wrong, perhaps we would have been united around a compromise if all the energy put down into the Bitcoin Cash project would have been spent on supporting the Segwit2X compromise.
- The "small blockers" invented the short-form "BCash" and actively started on a rebranding-effort.
- The "small blockers" largely ignored SegWit2X up to the fork date, claimed a "full UASF victory" as SegWit was activated ("I told you it UASF would be a safe upgrade didn't I?"), and as soon as it was locked in they started vilifying Jeff Garzik and the SegWit2X-initiative, declaring that it was a horrible compromise, that Core would not support it, and even that it was an "obvious corporate takeover". In mid-August it seemed obvious that Core and its supporters would find themselves voluntarily marooned on a desolated island where virtually no on-chain-transactions would go through after the 2X hardfork.
- Once again, the vilification tactics mixed with the "our way or the high way"-approach seems to have gone rather well. Things got very toxic, industry actors that had promised to support SegWit2X was forced to distance themselves from the project. Even the software project btc1 was a failure (despite being a fairly simple project), mostly due to lack of resources. What should have been a nearly-smooth network upgrade got very controversial, and as the major exchanges declared they would continue using the "Bitcoin"-brand on the 1X-chain right after the fork, a 2X-upgrade would be very messy. In the end, the initiative was dropped.
After the SegWit2X-initiative was dropped, the propaganda efforts from the small-blockers have mostly been targeting "BCash".
To me, it seems fairly obvious that Bitcoin has failed. Rather than supporting it, we should try to agree on what crypto currency hold the most potential as a successor leading crypto currency and unite on it. I'm not at all sure Bitcoin Cash is the right solution.