区块容量之战此书的第一章的英文版本现发布如下。全书可在亚马逊上购买。提醒大家，任何实体书籍销售利润的 50％ 将捐赠给无国界医生。 这是一家为受冲突、流行病、灾难或被排除在医疗保健体系之外的人们提供医疗援助的慈善机构。
The Blocksize War – Chapter 1 – First Strike
It was Saturday, August 15, 2015, when an event occurred that took many in the Bitcoin space by surprise and shook the community to its core. Two of the most prominent and respected Bitcoin developers at the time, Mike Hearn and Gavin Andresen, had respectively released and thrown their support behind a new, incompatible version of Bitcoin. This new client was called Bitcoin XT. Bitcoin had offered such hope, excitement and opportunity to many, and it now appeared as if this act was sure to send the system into disarray, peril and potential catastrophe. As the Guardian newspaper said on the following Monday:
The Bitcoin wars have begun
On the surface, the war appeared to be centred on just one reasonably narrow issue, the maximum size limit for the blocks which make up Bitcoin’s blockchain. Bitcoin XT was a proposal to increase the amount of space available in blocks. In 2015, the blocksize limit was 1 MB and Bitcoin XT wanted to increase this limit to 8 MB and then double it every two years until 2036, when the limit would be around 8,000 MB. The reason for this was that blocks were becoming larger as the system became more popular, and the blocksize limit was close to being reached, which would result in full blocks. Proponents of the increase argued that higher capacity was needed to ensure Bitcoin could scale up and become a cheap global payments system. They were concerned that, if the limit was regularly reached, this would make the network difficult to use and too expensive, which would damage the growth prospects for the system. To Gavin and Mike, we were heading into a crisis, where users could be turned away from the network, and action was required. Gavin and Mike’s opponents were concerned by the release of the incompatible client, fearing it could split the network into two, causing chaos and confusion.
This war over the blocksize would shatter and split the ecosystem over the next two years. As the war progressed, it emerged that the struggle was perhaps more complex than just the maximum size of blocks; the battle went right to the core of Bitcoin’s DNA. The contention was essentially about four somewhat interrelated issues:
- The level of blockspace available in each Bitcoin block – Essentially, whether the eventual state should consist of surplus capacity available in the blocks, or consistently full blocks.
- How to modify the rules of the Bitcoin protocol – Whether the rules on the validity of Bitcoin blocks should change relatively easily, or whether they should be more robust and only change in exceptional circumstances, with broad support from all interested parties.
- The significance of the nodes of ordinary users – The extent to which, if any, validating nodes of the ordinary end users had a say in enforcing Bitcoin’s protocol rules.
- Time preferences – Whether Bitcoin was like a tech startup which should prioritise gaining market share in the short term; or if it was a long-term project, a new global money, and one should think decades ahead when making decisions.
At this point, however, most of the focus was on the narrow issue of the blocksize limit. There was almost universal agreement in the community that the 1 MB limit was too small. However, there was no consensus on what it should be or how to change it. Most people also seemed to agree that the proposed increase in Bitcoin XT was too aggressive and that something more moderate was required.
The opening move in this war was made by Mike and Gavin, part of the so-called “large blocker” camp in the conflict. They had to make the first move; after all, their opponents were in favour of the status quo. Mike and Gavin had made this proposal several months back, however, it is in August 2015 when the client was officially released and they encouraged people to run it, therefore this is when we mark the formal commencement of hostilities. This is not to say Mike and Gavin considered what they were doing as a hostile act or acted nefariously; a war is merely how I am framing it in this book.
Bitcoin XT was a software implementation of Bitcoin Improvement Proposal 101 (BIP 101), one of many in a long line of proposals to increase the blocksize limit. This proposal was first formally published by Gavin Andresen, a few months earlier on June 22, 2015. The software could not just simply increase the limit; it needed an activation methodology, a system to try and ensure that the Bitcoin network itself adopted the new rules. The chosen activation methodology in this case consisted of a flag day and a miner signalling threshold. The earliest activation point was January 11, 2016, around five months away. In addition, activation required a vote from the Bitcoin miners. Miners would be required to signal inside the blocks they produced that they had upgraded for the proposal. If 750 blocks flagged support, in any 1,000-block rolling window, the upgrade would activate. After this, there would be a two-week grace period before the rule came into effect and the blocksize limit finally increased. If miners did not achieve this 75 percent threshold, the proposal would be considered a failure.
The Bitcoin XT software was extremely controversial inside the so-called “small block” camp, primarily because it was an incompatible upgrade to the network. What this essentially means is that anyone running a Bitcoin node that validates all the rules would be required to upgrade their software. If everyone did not agree to upgrade, according to the small block world view, this could cause Bitcoin to split into two different coins. This type of upgrade is referred to as a hardfork, the most extreme form of upgrade possible. This type of upgrade can essentially change Bitcoin in any way, from increasing the Bitcoin supply cap above 21 million, to taking away any coins from any holder and giving it to anyone else. Many Bitcoiners had a preconceived idea that one cannot, or shouldn’t, conduct a hardfork without first ensuring there is widespread support across the users of the network. To them, this characteristic is what made the network resilient; it meant nobody could take away their coins and ensured the supply cap of 21 million was robust. This was considered as the whole point of Bitcoin. Pushing for a hardfork without consensus was therefore considered by some as an attack on the network. Others clearly did not agree; they thought that Bitcoin needed to be flexible in order to succeed and grow and, with respect to the particular matter in question, the blocksize limit, this was not a major change. They considered bringing up the 21 million supply cap was merely an example of the slippery slope fallacy, and a red herring.
The tension over this issue had been building in the community for years, deep under the surface. At this point, however, this key ideological difference was in the open and exposed for all to see. As an open system, it was not possible to conceal this disagreement from the public any longer.
On August 24, 2015, just nine days after the release of Bitcoin XT, there was a letter of support published by some of the largest and most significant companies in the industry.
Our community stands at a crossroads. The debate about which path to take has, by and large, been a healthy one, and we have not interposed our own positions or interfered in the discourse. Until today, our involvement has consisted of listening, researching and testing.
We believe that work is complete, and it is time to communicate our view in a clear and transparent manner. After lengthy conversations with core developers, miners, our own technical teams, and other industry participants, we believe it is imperative that we plan for success by raising the maximum block size.
We support the implementation of BIP101. We have found Gavin’s arguments on both the need for larger blocks and the feasibility of their implementation — while safeguarding Bitcoin’s decentralization – to be convincing. BIP101 and 8MB blocks are already supported by a majority of the miners and we feel it is time for the industry to unite behind this proposal.
Our companies will be ready for larger blocks by December 2015 and we will run code that supports this. As our community grows, it is essential — now more than ever – that we seek strong consensus to ensure network reliability. We pledge to support BIP101 in our software and systems by December 2015, and we encourage others to join us.
The letter was signed by the CEOs of BitPay, Blockchain.info, Circle, Kncminer, itBit, Bitnet, Xapo and BitGo. These were not only some of the largest companies in the space, but many of them were also well funded and had considerable venture backing. BitPay was one of the largest merchant payment processors and Blockchain.info was the number one Bitcoin wallet provider. This letter further inflamed the situation. On one side, it was vital for industry to engage with development issues and help things progress, while some on the other side considered this as exactly the wrong approach. Bitcoin was supposed to be run in a grassroots, bottom-up, user-driven fashion; lobbying from the top down by large corporates undermined the whole point of Bitcoin. According to the small blockers, Gavin should have focused more of his efforts on lobbying users first, trying to get their buy-in for larger blocks before asking industry to run the new, incompatible client. In their view, this was likely to be both more ethical and, crucially, more effective.
One can also suggest that Gavin may have been driven by his ego. After many years of frustrating arguments, he may have been eager to show the other developers his power and influence. He had lobbied for support from those he considered as the major power-brokers in the space, the industry. This was an opportunity for Gavin to show the developers who opposed him that they barely mattered, that the main companies in the space did not even know who they were. His opponents were no doubt further enraged by this, contending that these industry players made no difference.
Now is probably an appropriate time to talk a bit about Gavin Andresen. Bitcoin was, of course, created by Satoshi Nakamoto. More precisely, Satoshi designed the system, wrote and published the initial buggy reference implementation of Bitcoin, and authored the whitepaper. Just under two years after the network launched, in December 2010, Satoshi left the project. After this point, Satoshi no longer contributed to the code and stopped making forum comments. Gavin explains how, in his mind, he took over as leader of the project:
Over time [Satoshi] trusted my judgment on the code I wrote. And eventually, he pulled a fast one on me because he asked me if it’d be OK if he put my email address on the bitcoin homepage, and I said yes, not realizing that when he put my email address there, he’d take his away. I was the person everyone would email when they wanted to know about bitcoin. Satoshi started stepping back as leader of project and pushing me forward as the leader of the project.
At the time of the supposed handover, the Bitcoin software was published on Sourceforge and, in January 2011, two people were listed as maintainers, Satoshi and Gavin. Gavin’s account of events is, of course, disputed and his opponents claim that there is no proof from Satoshi of the alleged handover. In particular, the claim of “leader of the project” appears unlikely and unsubstantiated. Bitcoin has no leader. Gavin had control of the Bitcoin software repository on Sourceforge, and later on GitHub, until he handed it over to Wladimir Van Der Laan several years later, in April 2014. Control of a software repository, of course, does not mean control over Bitcoin, as Bitcoin users can run any software they like, from any repository they like. This misconception has lingered on for years. Nevertheless, it is likely that Gavin’s claim of a transition from Satoshi to himself is somewhat true, even if the leadership claims are a bit exaggerated.
However, focusing on the contested account of the transition from Satoshi to Gavin, or Gavin’s technical role and power with respect to the Bitcoin software repository, misses the point entirely. People on either side of the war kept making these points, but it really did not matter. The unquantifiable influence Gavin had in the space was due to his personality and leadership characteristics. However, this was more difficult to articulate, so people focused on how and if Satoshi handed the project over to him. What is key to understanding Gavin’s role in the community at the time is his personality. In his public forum posts and at events, he came across as patient, thoughtful, calm and pragmatic. It is these personality traits and leadership qualities that made him stand out from the other developers more than anything else. When Gavin spoke, people listened; he sounded reasonable and took time to explain things. This was in stark contrast to some of the other developers, who were sometimes regarded as being intolerant of those with weaker levels of technical knowledge, or preferred to remain behind the scenes. Gavin had this perceived level of influence over the technical community because of who he was, not a handover of power.
Gavin also contributed significantly to Bitcoin in the first few years. In 2010. Gavin purchased 20,000 Bitcoin for $50. He then created a Bitcoin faucet, or website to give away the Bitcoins. All people had to do was complete a Captcha and then they would be sent around five BTC for free. This greatly contributed to the success of the network in the early days by distributing the coins to a wide number of people. People didn’t really understand Bitcoin back then and were unlikely to send real money somewhere to purchase coins in an unproven system. Completing a Captcha, on the other hand, was a far easier initial step. Gavin also co-founded the Bitcoin Foundation in 2012, of which he was a board member. In addition to several other functions, one of the main responsibilities of the foundation was to pay Gavin to work on Bitcoin development. Gavin was therefore the first paid Bitcoin developer. Gavin remained at the foundation, with the title of chief scientist, until mid-2017.
It is difficult to over-emphasise how much respect Gavin had from many members of the Bitcoin community. Many regarded him as the “main guy”. There were these deep, brewing disputes in the technical community, but the casual observer of the space did not know much about these. To many, Gavin was very much the key person in the space. It is in this context that one should judge Gavin’s decision to throw his support behind Mike’s Bitcoin XT and encourage users to run it. It was a bombshell moment because of who Gavin was. Had anyone else done that, the impact would not have been as significant and none of the events which followed would have occurred.
As for Mike Hearn, he was also an early Bitcoin developer, having first started working on Bitcoin as part of his 20 percent free time project while at Google. However, Mike was not as involved in the main reference implementation to the same extent as Gavin. He was seen as more of an outsider and risk-taker than Gavin, who came across as more conservative, moderate and a driver of consensus. Mike had done a lot of work on Bitcoinj, a Java library for working with the bitcoin protocol, which made the mobile wallets at the time possible. It was certainly an important and impressive contribution to the space.
As the war intensified in August 2015, nowhere was the battle more intense or hostile than on social media. The two primary platforms for discussing Bitcoin at the time were the BitcoinTalk forum and the Bitcoin subreddit, /r/bitcoin. The debate on Reddit and BitcoinTalk had been intensifying for a while, but the launch of Bitcoin XT really accelerated the vitriolic nature of the argument. In general, most of the posts were in support of larger blocks. The larger block message was clear and simple: Bitcoin needed more capacity. To the casual observer, the arguments against this were, typically, highly complex and somewhat confusing. And on top of this, 1 MB just seemed like a low number and the history of computer science was about capacity growing exponentially. With many becoming frustrated, in the summer of 2015 the Bitcoin forums were full of posts of support for larger blocks and support for incompatible clients. There were so many repetitive posts that it was becoming more difficult to find other Bitcoin-related news. As a result, the moderation on these forums intensified. This moderation appeared to only rile up some of the larger blockers even more: in their view, the moderation policy, or as they saw it censorship, was preventing Bitcoin from scaling.
BitcoinTalk and /r/bitcoin were both controlled by the same person, with the username Theymos. His real name is Michael Marquardt. Theymos had been an early pioneer in the space, managing bitcoin.it (the Bitcoin Wiki) as well as both of the two major forums. Theymos had also created the first block explorer website, a webpage where you could view information about Bitcoin transactions. This was crucial in the early development of the space and in educating people about how Bitcoin works. His block explorer website, blockexplorer.com, was eventually overtaken by blockchain.info in around 2011, due to blockchain.info’s innovative and superior graphics. Theymos appeared to mostly sympathise with the smaller block camp, at least the aspect of it which meant it was sensible to have widespread agreement across the community before running incompatible clients.
On August 17, 2015, two days after the official launch of Bitcoin XT, Theymos announced a new Reddit moderation policy. This policy proved to be both extremely controversial and divisive. The release of the Bitcoin XT client also stimulated a large increase in the number of posts, and then the aggressive moderation of these posts, requiring an explanation.
r/Bitcoin exists to serve Bitcoin. XT will, if/when its hardfork is activated, diverge from Bitcoin and create a separate network/currency. Therefore, it and services that support it should not be allowed on r/Bitcoin. In the extremely unlikely event that the vast majority of the Bitcoin economy switches to XT and there is a strong perception that XT is the true Bitcoin, then the situation will flip and we should allow only submissions related to XT. In that case, the definition of “Bitcoin” will have changed. It doesn’t make sense to support two incompatible networks/currencies – there’s only one Bitcoin, and r/Bitcoin serves only Bitcoin.
If a hardfork has near-unanimous agreement from Bitcoin experts and it’s also supported by the vast majority of Bitcoin users and companies, we can predict with high accuracy that this new network/currency will take over the economy and become the new definition of Bitcoin. (Miners don’t matter in this, and it’s not any sort of vote.) This sort of hardfork can probably be adopted on r/Bitcoin as soon as it has been determined that the hardfork is not absolutely against the spirit of Bitcoin (inflating out-of-schedule, for example). For right now, there will always be too much controversy around any hardfork that increases the max block size, but this will probably change as there’s more debate and research, and as blockspace actually becomes more scarce. I could see some kind of increase gaining consensus in as soon as 6 months, though it would have to be much smaller than the increase in XT for everyone to agree on it so soon.
There’s a substantial difference between discussion of a proposed Bitcoin hardfork (which was previously always allowed here, even though I strongly disagree with many things posted) and promoting software that is programmed to diverge into a competing network/currency. The latter is clearly against the established rules of r/Bitcoin, and while Bitcoin’s technology will continue working fine no matter what people do, even the attempt at splitting Bitcoin up like this will harm the Bitcoin ecosystem and economy.
If 90% of r/Bitcoin users find these policies to be intolerable, then I want these 90% of r/Bitcoin users to leave. Both r/Bitcoin and these people will be happier for it. I do not want these people to make threads breaking the rules, demanding change, asking for upvotes, making personal attacks against moderators, etc. Without some real argument, you’re not going to convince anyone with any brains – you’re just wasting your time and ours. The temporary rules against blocksize and moderation discussion are in part designed to encourage people who should leave r/Bitcoin to actually do so so that r/Bitcoin can get back to the business of discussing Bitcoin news in peace.
The new rules for the Bitcoin subreddit were reasonably clear: since Bitcoin XT lacked consensus among users and was an incompatible change, and would therefore result in a new coin, promotion of the software was banned on the subreddit. This clearly aggravated many of the so-called large blockers. To them, the Bitcoin Reddit was the main discussion forum in the community, and lobbying for the change they desired on this forum was exactly how they envisioned such a change would take place. The anti-censorship arguments began to gain momentum and proved to be quite compelling. If one couldn’t campaign for a change due to a lack of consensus, then how would we ever reach consensus? It was a catch-22 situation! Who was Theymos to decide when we reach consensus anyway? Bitcoin is mine just as much as it is his! If they had any good arguments, then why resort to censorship? If Bitcoin is so fragile that it requires this censorship, Bitcoin must be pretty weak and useless. If they want to ban Bitcoin XT, it must therefore be good… And so on…
To really understand the degree of fury against Theymos, one should consider who many of the Bitcoiners were, at least the ones engaged enough to follow this debate. They were typically anarcho-capitalists or libertarians, who strongly supported free speech. It was easy to see why an anti-censorship message would resonate with this section of the community. At the same time, many people joined Bitcoin because they felt disenfranchised with the legacy financial system. Central banks had engaged in policies that many Bitcoiners strongly disagreed with, for instance quantitative easing programs or other expansionary monetary policies. Bitcoiners typically felt their voice was ignored when expressing opposition to these policies, or deemed irrelevant. This is why many became Bitcoiners in the first place; they felt that this time it’s our money, not theirs! This time our voice will count! Their frustration and level of anger at having their voices silenced in Bitcoin was therefore huge.
The result of this moderation policy was a bifurcation of the Bitcoin community. Larger blockers gradually moved over to an alternative Bitcoin subreddit, /r/btc. They also gradually left BitcoinTalk and moved over to alternative forums such as Bitco.in. The level of engagement between the sides gradually reduced and people spent more time talking to those they agreed with. The community therefore became far less healthy and confirmation bias became a major problem.
It is easy to blame Theymos for this split. However, looking at how other communities develop on social media, perhaps it was somewhat inevitable. People tend to like reading things they agree with and follow people they agree with. Confirmation bias features heavily on social media platforms and causes polarization. Perhaps the most famous example of this is politics, where right-wingers and left-wingers alike keep reading true stories on the platform of their choice, which supports their initial assumptions and ideology. People become more and more embedded in their views and have limited exposure to the opposing arguments. At this stage, with exposure to reams and reams of supporting material, people on either side of a conflict can barely believe anybody could legitimately hold an opposing view. Those with an opposing view are therefore often assumed to be either stupid, corrupt or to have some nefarious agenda. These dynamics certainly quickly started to play out in Bitcoin. Given the fact these same dynamics appeared to be occurring all over social media, it may therefore be naive to blame Theymos for this phenomenon occurring, although of course he played his part in splitting the community, just like many others on both sides of the conflict.
Reading Theymos’s moderation policy post again, it becomes apparent that it contains many nuances, which were not widely appreciated at the time. In many ways, he was shown to be correct and ahead of his time. Bitcoin XT may well have resulted in a new competing coin, due to a lack of consensus. Perhaps it was right to break the upgrade process down into two steps: first, get consensus for the change among users, and only then advocate running the new incompatible client. Today, the upgrade process appears clearer: if one wants to release an incompatible client, there are two potential paths to choose from:
- Create a new alternative coin different to Bitcoin, which does not require widespread agreement across the community; or
- Lobby for consensus prior to advocating that anyone runs the new client. Only if widespread consensus is reached would users run the new client, and then the new coin would become known as Bitcoin.
It is now widely understood that failure to comply with one of these two paths can cause a dirty and messy split. Unfortunately, at the time, a lot of these nuances were not appreciated or known. Therefore the large blockers took more of a muddled path, unsure if they wanted agreement from everyone or not.
In these early stages of the conflict, it seemed clear that the large blockers were winning the war and making progress. They appeared to have a clear, simple message and the majority of users on their side. At the same time, the anti-censorship message was gaining significant traction.
However, it was also apparent that, when questioned, many thought the Bitcoin XT blocksize proposal might be too aggressive, with respect to locking in increases in the blocksize to 8,000 MB over the next 20 years on a fixed schedule. After all, who was Mike Hearn to decide this? And how would he know what was going to happen this far into the future, when the space was notorious for rapid and unpredictable change? To many, a more simple and moderate increase made more sense. While almost everyone wanted an increase in the limit, many people appeared to think Bitcoin XT would fail and some other more moderate proposal would eventually succeed. To most of the large blockers, Bitcoin XT was a necessary step to get the debate going and act as a catalyst to encourage a counter proposal. Perhaps this was the first of many of the critical blunders from the large blocker camp. Does one really try to win a war by losing the first battle?