区块容量之战 - 第八章 - 香港圆桌会谈

区块容量之战此书的第八章的英文版本现发布如下。全书可在亚马逊上购买。提醒大家,任何实体书籍销售利润的 50% 将捐赠给无国界医生。 这是一家为受冲突、流行病、灾难或被排除在医疗保健体系之外的人们提供医疗援助的慈善机构。

The Blocksize War – Chapter 8 – Hong Kong Roundtable

On February 20, 2016, I was hiking in the hills around Hong Kong with a group of friends. In the late afternoon, I had just made it to the top of Lion’s Rock and was appreciating the iconic view of Hong Kong, with the island in the distance. While waiting for the rest of the group to join me, I checked my phone and browsed the subreddit /r/btc and came across a post about a meeting in Hong Kong between the miners and developers to discuss Bitcoin scaling.[1] Looking at one of the images, the location appeared to be the same as Scaling II, Hong Kong Cyberport. Eager not to miss out, I immediately set off down the mountain to get a taxi straight to the venue, before even waiting for everyone in my party to reach the summit. I wasn’t invited to the event, but if protocol rules were being discussed and potentially being decided upon, and Bitcoin is an open network, I figured had just as much right to be there to witness events as anyone else. Surely, I could not be excluded? That wouldn’t be fair! With this confident attitude, I made my way to the event.

I arrived at around 4pm. It was taking place in a small room, with perhaps 30 to 40 people present, all hanging out in small groups and chatting quietly. Developers from the US were chatting away in one corner, with Adam Back and the miners chatting among themselves on the other side of the room. Among the developers present were Cory Fields from the US (who used to work with Gavin at the Bitcoin Foundation), Johnson Lau (a Hong Kong-based developer, who co-authored SegWit), Luke Dashjr, Matt Corallo (a US-based developer and Blockstream co-founder) and Peter Todd. Chatting with the developers, they told me they had come to Hong Kong to educate the miners about Bitcoin and have a friendly discussion. They also wanted to persuade the miners not to run Bitcoin Classic. However, some of the miners were very keen on a hardfork and had threatened to switch to Bitcoin Classic.

It was clear tensions in the room were running very high. I then moved over to the other side of the room. Jihan Wu and Micree Zhan, the two co-founders of Bitmain, were sitting at a table next to each other, surrounded by several other characters from the mining industry who were leaning in for a discussion. Jihan appeared the most agitated, and those around him wanted him to calm down. Suddenly, Jihan said something like: “We are going to support Classic; Core will do a hardfork, or we will leave Core!” Those around Jihan all looked concerned and then tried to calm him down again. After a few minutes, the talks were set to start again.

Proceedings began by Jihan loudly proclaiming that the miners will do a hardfork to 2 MB. “If Bitcoin Core wants to be part of Bitcoin, it needs to do this hardfork,” he said. One of the developers then responded by saying that SegWit was “already 2 MB and Bitcoin Core was working on SegWit”. “No!” Jihan proclaimed, “we need a hardfork to 2 MB, not SegWit.” The sense of frustration in the room was very high; this had all clearly been said before I arrived, and they were repeating themselves. The conversations continued for several more hours, going round and round in circles. There was clearly a lack of trust.

Both sides seemed to agree that this uncertainty around Classic and the hardfork was bad for Bitcoin. An idea seemed to emerge that it would be good for Bitcoin if everyone present were to agree on and announce a plan. I remember hearing somebody say this would calm the markets and boost the price. If there is one thing everyone always agreed on, it was a desire for a higher Bitcoin price. Therefore, an objective emerged to agree on a text that would be published outlining a path forwards for Bitcoin. Exactly how this idea emerged was unclear to me.

Adam Back and some of the developers were communicating with some of their Blockstream colleagues in the US over the phone and via messaging apps during the negotiations. They were clearly furious at Adam for what he was doing, sending angry messages and desperately trying to persuade him to stop. I can imagine the type of messages they may have been writing; they were probably arguing that Bitcoin is supposed to be apolitical money and the rules should not be determined behind the scenes in a closed-door political negotiation. Their next point of contention was the hardfork: they were concerned that Adam and the other developers would commit to a hardfork, while they were convinced that SegWit was the best way forwards. Anyway, they made it clear they would not be part of the agreement. Undeterred by this, believing this was the only way to stop Bitcoin Classic, discussions continued.

Most of the debate centered around timing and the order of events. Due to the lack of trust, Jihan wanted the hardfork to happen before SegWit. The developers argued that they did not have the ability to promise a hardfork, as they didn’t control Bitcoin Core, nor did Core control Bitcoin. All they could commit to was to write the code. Some of the miners kept repeating that it had to be in a release of Bitcoin Core, and we went around in circles on this point for a considerable amount of time.

Samson Mow, then working at Bobby Lee’s BTCC exchange, was also present at the meeting. I recall that he was one of the many protagonists behind the text and that he drafted some of it. At the time, Samson was very much a small blocker, who appeared to enjoy ridiculing the large blockers. This made him one of the main hate figures for the large blockers, alongside Gregory Maxwell, Adam Back and Luke Dashjr. In April 2017, around a year after this event, Samson was to join Blockstream as CSO.

It reached 4am, and haggling over the wording of the text continued. It was even published on Medium by mistake at one point, but had to be taken down as one of the sides was not happy. My understanding is that the session had started at around 10am on Saturday. Everyone in the room was extremely tired, angry and stressed: the perfect environment for poor decisions. There was a sense that they had to agree something. As the frustration mounted, everyone finally agreed on a text. But nobody was happy with it. Indeed, almost everyone disagreed with various parts of it. However, by 5am nobody could be bothered to continue arguing. It was not lost on me, or others in the room, that this was a common tactic used in international treaty negotiations to force sides into an agreement.

When the text was finally agreed, everyone gathered in a circle in the centre of the room, with their hands all reaching towards each other, for a photo that would illustrate consensus. Everyone, that is, except Adam Back and Matt Corollo, who continued to review and ponder over the text as that famous photograph was taken. Faces were excluded from the photo; it was only the hands that were seen. Most of the miners seemed relieved and smiled as the photo was taken. In contrast to this, many of the developers had drained, sad faces and looked away from the camera.

The main body of the agreed text is as follows:

We will continue to work with the entire Bitcoin protocol development community to develop, in public, a safe hard-fork based on the improvements in SegWit. The Bitcoin Core contributors present at the Bitcoin Roundtable will have an implementation of such a hard-fork available as a recommendation to Bitcoin Core within three months after the release of SegWit. This hard-fork is expected to include features which are currently being discussed within technical communities, including an increase in the non-witness data to be around 2 MB, with the total size no more than 4 MB, and will only be adopted with broad support across the entire Bitcoin community. If there is strong community support, the hard-fork activation will likely happen around July 2017. We will only run Bitcoin Core-compatible consensus systems, eventually containing both SegWit and the hard-fork, in production, for the foreseeable future.

The agreement had something for everybody. It said that the hardfork would only be “adopted with broad support across the entire Bitcoin community”. This was key for the small blockers, as this is the line they could use to justify themselves. They were not committing to a hardfork; it was up to the community, which is what they had been arguing all along. The large blockers seemed to completely ignore this part of the agreement. From their perspective, that line might as well have not been there. Even today, most large blockers seem to ignore it. The miners who signed the agreement committed to run only Bitcoin Core-compatible consensus systems, thereby stopping Bitcoin Classic in its tracks. This was a key achievement for the small blockers. From their point of view, well at least some of them, a crisis had been averted. As far as the large blockers present at the meeting were concerned, the developers had committed to write code for a hardfork, which the miners believed they would run and therefore conduct the hardfork.

The agreement also said the following.

We will run a SegWit release in production by the time such a hard-fork is released in a version of Bitcoin Core.[2]

Jihan had insisted on the inclusion of this term. I did not realise this at the time, but many large blockers interpreted this to mean that they would only run a SegWit release in production by the time such a hardfork is released in a version of Bitcoin Core. One of Jihan’s major concerns in the meeting, and probably a valid one, was that Bitcoin Core would not include the hardfork, as the agreement did not commit to do so. Therefore, Jihan had insisted on this term as his assurance. To him, it meant that SegWit would not activate until the hardfork was released in Bitcoin Core. Even though the agreement stated the SegWit code would be released three months before the hardfork code, this wouldn’t matter as far as Jihan was concerned, because he would still wait these three months before he ran the SegWit code. Jihan intended to use SegWit as a bargaining chip to get the hardfork. If there was no hardfork code, he was not committed to running SegWit.

To the small blockers present, they did not pick this up. To them, miners would run the SegWit code anyway, because it was the right thing to do. Using SegWit as a bargaining chip to get a hardfork was simply not appropriate. To them, this line in the agreement was therefore meaningless. They never intended to get the miners to commit to SegWit; they just assumed miners would want SegWit anyway.

The agreement did not resolve the situation at all. It only served to cause more mistrust. Each side had a different interpretation of the agreement and could point to their opponent and accuse them of breaching it. This reminded me again of geo-politics and how diplomats would spend hours and hours into the night trying to agree on a piece of text, knowing that each respective government had an irreconcilable position. Perhaps the most famous example of this was the United Nations’ security council resolution 242, adopted in November 1967.

Withdrawal of Israel armed forces from territories occupied in the recent conflict.[3]

It was not clear if this meant all the territories of some of the territories. This lack of clarity was, of course, somewhat deliberate, as the two sides would have never agreed to the resolution if that sentence had been clearer. While the resolution may have been an achievement in the short term for the diplomats themselves, it didn’t seem to contribute to lasting peace, with accusations of the parties breaching this agreement persisting for decades. This may be a bad model for Bitcoin to follow. With this analogy in my mind, I realised that a peaceful resolution to this blocksize conflict, where both sides would be happy, was, unfortunately, highly unlikely. This was quite difficult to grasp, given that Bitcoin was only six years old. How had I come to compare this disagreement to one of the most intractable political and religious conflicts on the planet, after just six years? Bitcoin shared a lot of characteristics with religion, it seemed, and of course religions fork off and split all the time. Except, religions are not financial assets and you can’t trade them against each other. This made the dynamics potentially even more interesting.

After the agreement was signed and published, the next step was for those present in the meeting to sell the agreement to their respective sides. This did not go well at all. From the large blockers’ side, the miners appeared to have proved themselves to be cowards. Stopping Bitcoin Classic and committing to Bitcoin Core was the exact opposite of what the large blockers wanted. They were convinced that this was another stalling tactic from the small blockers, and the hardfork would not be released in Bitcoin Core. As for the small blockers, they were equally unhappy. Gregory Maxwell, CTO and co-founder of Blockstream, where Adam was the president, made his feelings clear, referring to the group in the Hong Kong meeting as “well-meaning dipshits”.

It’s just that a couple of well meaning dipshits went to China a few months back to learn and educate about the issues and managed to let themselves get locked in a room until 3-4 am until they would personally agree to propose some hardfork after segwit. They’re now struggling to accomplish the seemingly impossible task of upholding their agreement (even though it was made under duress and even though f2pool immediately violated it) while obeying their personal convictions and without losing the respect of the technical community.[4]

Reaching consensus on the issue was becoming more and more difficult; the longer this went on, the more stubborn and entrenched people became. Gradually, it became less and less about doing what is best for Bitcoin and, unfortunately, more about defeating one’s opponents and winning the war. As the conflict progressed and the arguments continued, each side became more and more convinced of their cause, and the prospects of a peaceful resolution became less likely.

Most Bitcoiners regard this agreement, and the events in Hong Kong, as an embarrassment and a mistake. My opinion, which might not be shared by many, is that it did achieve something. Bitcoin Classic was gaining considerable momentum at the time: it had support from almost all of the major industry players, and the miners seemed extremely close to supporting it. We looked set to be heading into a crisis. The Hong Kong agreement bought us back from the brink.

[1] https://www.reddit.com/r/btc/comments/46oa1r/feb_20_hk_coreminer_conference_pics_will_be/

[2] https://medium.com/@bitcoinroundtable/bitcoin-roundtable-consensus-266d475a61ff

[3] https://unispal.un.org/unispal.nsf/0/7D35E1F729DF491C85256EE700686136

[4] https://bitcointalk.org/index.php?topic=1330553.msg14835202#msg14835202