区块容量之战 - 第十章 - 去中心化自治组织

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

The Blocksize War – Chapter 10 – The DAO

In the summer of 2016, a project called “The DAO” (Decentralized Autonomous Organization) began to grab the attention of many inside the cryptocurrency community. The DAO was a smart contract built on Ethereum and styled itself as a kind of autonomous investment fund. Rather than stodgy, old top-down-managed investment funds, the DAO would make investments as determined by votes from its users and would be governed by the code in the smart contract, rather than the law. Ethereum was a coin first conceived in 2013 by early Bitcoiner, Vitalik Buterin. The project raised funds in 2014 in a coin offering and the Ethereum finally went live in the summer of 2015. At this point, Ethereum was just a year old and the community was already engaging in some pretty ambitious projects. Vitalik was said to have wanted to initially build his smart contract platform on top of Bitcoin, however Bitcoin was not flexible enough to do what he wanted. It was not just the code and structure of Bitcoin, but also the community – smaller blockers such as Gregory Maxwell and Luke Dashjr – who saw this flexibility as a potential security risk. Therefore, naturally, Vitalik and most of the Ethereum community tended to side with the large blockers. The blocksize war was, in effect, also a key recruiting sergeant for Ethereum. The Ethereum community could paint Bitcoin as old technology, inflexible and stuck with small 1 MB blocks. Ethereum, on the other hand, had a much more flexible approach, a dynamic blocksize limit which miners could adjust (in Ethereum, this is called the gas limit and the constraint relates the computational power necessary to process various functions within the blocks, not the amount of data used). While transaction fees were starting to increase on Bitcoin, Ethereum fees were very low. This marketing strategy from Ethereum proved very successful, and many Bitcoiners switched their focus to Ethereum, believing that Ethereum was the young, dynamic coin of the future. To some of the large blockers, Bitcoiners switching over to Ethereum was a problem caused by the small blockers. Small blockers had been so incredibly stubborn that people lost patience and were driven away.1 Bitcoin was now set to lose market share. Merchants may eventually adopt Ethereum, and then Bitcoin was sure to fail. While it is true that the blocksize limit was driving some people away from Bitcoin, this wasn’t the only reason for the success of alternative coins. The opportunity to make money was the primary driver of this trend. The success of Ethereum had driven a wave of copycats and new coin offerings. These coins would often highlight Bitcoin’s supposed and well-publicised scalability problems and claim their new coin solved these issues. The small blockers did not seem to mind this at all. They were interested in a transformational monetary system; alternative coins claiming to do 40,000 transactions per second didn’t seem relevant to that objective. Ironically, although these alternative coins were a source of frustration to some of the larger blockers, they also found them tempting. It was easier for them to give up on Bitcoin and switch their focus to these alternative coins, rather than continue a tiresome battle. I cannot stress enough how much the small blockers benefited from this trend. The alternative coin space grew rapidly during this crisis, with their proponents focused on raising money in coin offerings and making money from coin price appreciation. Had this outlet not been available to these people, they may have stayed in Bitcoin fighting the blocksize war, and the sheer weight of numbers of large blockers would have been too large to overcome. During the two-year period of the war, there was a fundamental change in the ecosystem, from the Bitcoin space to the cryptocurrency space. In that environment, the argument that Bitcoin had to compromise for everyone made less sense. There was always a coin to suit people’s needs. Anyway, back to The DAO. The DAO crowdsale launched on April 30, 2016 and lasted until May 25, 2016. It was attracting a huge amount of attention and raised more than US$150 million for the fund. This was an incredible amount of money in the space back then; more than 14 percent of all Ethereum in existence poured into The DAO. Some investors considered it risk-free, as one was always supposed to have the option to redeem the invested Ethereum from the fund if one wanted. With Ethereum being so young, it was not at all ready for something as complicated as The DAO. But the Ethereum community liked to experiment and try new things. This is part of the reason they were attracted to Ethereum in the first place. They were bored of the conservative Bitcoiners. As it turns out, The DAO was fundamentally flawed on several levels. The creation of new investment projects would have ended up creating new classes of DAO tokens, such that each class was entitled to different risks and rewards. This meant that DAO tokens would not be fungible and should trade at different prices, an issue poorly understood by exchanges and the community. The economic incentive model of the project also made little sense. For example, when it came to decisions on investments, there was little incentive to vote “no” on investment proposals, since “no” voters became invested in approved projects, while those who abstained never got exposure. Additionally, there was no stated mechanism for forcing successful projects to contribute profits back into The DAO and the code in the smart contract did not always appear to implement what was described or intended. A few weeks after the conclusion of the token sale, on June 17, 2016,2 (another key date in cryptocurrency history) a hacker found an exploit in the code that allowed them to access The DAO’s Ethereum funds and drain some of it into something called a “child DAO”, over which the hacker potentially had significant control. This hacking event marked the start of the so-called “DAO Wars”, a battle to recover the “stolen” Ethereum from the hacker. Unfortunately, this was not proving successful, so the Ethereum community and developers came up with an idea: they could change the Ethereum protocol to help recover the funds. To some this was extremely controversial. It was seen as a bailout, something many in the community opposed. Part of the reason many joined the cryptocurrency space was that they wanted to avoid a system with bailouts, such as those of the banks in 2008 and 2009. After all, why was The DAO singled out? Why was this project rescued when many investors in smaller projects and smart contracts on Ethereum had lost money before? Perhaps The DAO was “too big to fail” or perhaps it was due to the self-interest of the influential developers and members of the Ethereum community, who had control over the protocol and who had invested large sums of money in The DAO. To many, these problems felt like a mirror image of the corruption and other problems in the traditional financial system they were keen to escape from. On June 24, 2016, it was proposed that Ethereum conduct a softfork to freeze the hackers funds.3 Around four days later, it was discovered that this softfork proposal was flawed and would potentially expose the network to critical DoS attacks. Therefore, the softfork was abandoned and it was decided the only way to recover the funds was a hardfork. This is quite a remarkable turn of events, right when Bitcoin was in the midst of a war. With Bitcoin Classic still looming as a possible contentious hardfork, Ethereum was planning on a contentious hardfork of its own. Bitcoin’s blocksize war was essentially paused for a few months as everyone focused on Ethereum. To gauge the level of support for the hardfork, there was a coin vote: people could vote with their coins on whether or not they supported the hardfork. The vote was overwhelming, with more than 95 percent support for the hardfork.4 However, there were accusations that the poll was not representative, since it was primarily pushed by those who supported the hardfork and those who opposed may not have voted. In addition to this, participation from Ethereum holders was low, perhaps around six percent.5 Miners were also asked on their views and more than 90 percent were said to support the hardfork, a strong majority. The hardfork was scheduled for Wednesday July 20, 2016. Keen not to miss the event, I booked the day and the following day off work. I also purchased a new computer, so that I would have enough local resources to run both Ethereum clients: one upgraded for the hardfork, and one older version. As the potential split approached, like a true cryptocurrency fanatic, I sat at home running both nodes, with many web tabs open on websites following the exchange order books, to see the live Ethereum prices as events unfolded. I, along with many other cryptocurrency enthusiasts, eagerly awaited the Ethereum block height to reach 1,920,000 and for the hardfork to occur.6 Initially, the hardfork appeared to happen successfully. The upgraded rules chain was extended, while the original rules chain had no blocks at all. Some of the larger blockers already started to declare victory and assert this was a lesson for Bitcoin: a contentious hardfork does not cause a split, they proclaimed. Around an hour after the fork, the original rules chain started to become extended. Then, as the difficulty adjusted downwards (a much faster adjustment than in Bitcoin) in the original rules chain, it started extending at a faster rate. While initially the hardfork chain appeared to have around 98 percent of the hashrate, the balance started to change and the original rules chain started to gain in momentum, achieving perhaps five percent to 10 percent of the hashrate. The original rules chain then required a name. Well, there was Bitcoin Classic, so why not call it Ethereum Classic? Around three days after the split, exchanges started listing Ethereum Classic. Poloniex, one of the leading alternative coin exchanges at the time, listed Ethereum Classic on July 23, 2016.7 The price of Ethereum Classic then started to increase on the exchange. From memory, it started trading at around two percent of the value of Ethereum and peaked on July 25 at more than 50 percent of the price of Ethereum. Ethereum Classic was proving to be extremely volatile. What’s more, the miners were following the price. Not a perfect correlation exactly, but as the price of Ethereum Classic increased, more miners mined it in order to scoop up the increased block rewards. Small blockers then started to argue that the situation was more complex than the large blockers had argued: perhaps miners did not define the protocol, but instead followed traders and investors to maximise their profits. As the price of Ethereum Classic increased, it gained more and more momentum. Miners, it appeared, just wanted to follow the money. This is when many people started to realise that a hardfork and contentious split was not just about two issues, hashrate and computer science, but financial markets too. This kind of event was an opportunity for financial speculators and traders, who could trade between the coins. One of the key characters in the space supporting Ethereum Classic was Barry Silbert. Barry was no small blocker; it appeared he was buying Ethereum Classic purely to try and make money.
Bought my first non-bitcoin digital currency…Ethereum Classic (ETC). At $0.50, risk/return felt right. And I’m philosophically on board.8
Barry had founded Digital Currency Group a year earlier and was one of the largest investors in the space. Barry was also well known in the community for having won the auction to purchase the Bitcoin which US authorities had confiscated from the darknet marketplace, the Silk Road. Barry will feature more in the story later on. However, for now he inadvertently appeared to be assisting the small block side. There was no danger of Ethereum Classic gaining too much momentum, overtaking Ethereum in hashrate and then causing all the hardfork nodes to switch over to the Classic chain. Vitalik was too smart for that. The Ethereum hardfork was structured such that it had a checkpoint, a clean break, so that both sides of the split would exist no matter which chain had more work. This is sometimes called “wipeout protection” and is something I had carefully clarified with Ethereum developers before the split. Bitcoin Classic’s decision not to include wipeout protection now looked even more naive. Coinbase only added support for Ethereum on July 21, 2016,9 ironically just one day after the split. The company was a supporter of Bitcoin Classic and its CEO, Brian Armstrong, believed that the Ethereum hardfork would succeed without a split, presumably because the hardfork had strong support from the miners. As a result of this belief, Coinbase appeared to fail to take appropriate action to safeguard customer funds in case this judgement proved to be false. Coinbase was therefore vulnerable to something called the “replay attack”. In the first few days after the split, when withdrawing Ethereum from Coinbase, there was a chance that Coinbase would send out two versions of this transaction: one on Ethereum and one on Ethereum Classic. In contrast to this, Coinbase’s peers, such as Kraken and Poloniex, had taken measures to split their coins and prevent this. Some sophisticated traders in the space were able to capitalise on this oversight by Coinbase. They could split their coins themselves into Ethereum Classic and Ethereum, then deposit the Ethereum to Coinbase. Without trading, the Ethereum could be withdrawn from Coinbase, and the trader would hope to get replayed and get sent Ethereum Classic for free. I was speaking to several people at the time who were claiming they had successfully pulled off this “trade”, making significant profits. Eventually, Coinbase found out about the error, implemented some form of replay protection and covered the losses from its own balance sheet. As for the DAO Wars, due to the hardfork, the recovery of the “stolen” funds on the Ethereum side of the split was successful. As for “stolen” funds on the Classic side of the split, this was more complicated, and The DAO wars continued. There were also other issues, such as who should get the recovered DAO tokens on the Classic side of the split, inside the various buckets and child DAOs, but this is beyond the scope of our story. At the end of July 2016, there was another meeting arranged between the Bitcoin miners and developers, this time taking place in California. Keen to avoid the trap of being accused of reaching an agreement behind closed doors again, all participants were required to sign the following statement in order to attend:
Participants recognize that because bitcoin consensus rules are decided by the users based on the software they choose to run, so proposed changes must be discussed in public with input from the whole bitcoin community. For these reasons, there will be no agreements or roundtable consensus coming out of this event.10
Please note that I was not present at this meeting. However, meeting notes have been provided by Bitcoin developer Bryan Bishop.11 Bryan did an exceptional job transcribing many of the events and discussions in the blocksize war. The three-day event was attended by Jihan Wu, who had flown over to the US to meet the developers. The transcript does not attribute comments to particular names, however for those familiar with the main characters in the space, in many cases it is possible to determine who the speaker is. The timing of the event was no accident: it was scheduled for the end of July, right when the code for the hardfork was due to be released, according to the Hong Kong agreement. At this meeting, the impact of the Ethereum split on Bitcoin’s possible hardfork was evident, and much of the discussion was about what lessons could be learnt. Participants were now claiming it was almost inevitable that a hardfork would cause a split:
Because of this split in Ethereum, it sets a precedent for Bitcoin for the possible future of hard-forks. For bitcoin, a hard-fork there can only be two options. One side must accept multiple chains, multiple attacks from multiple vectors, or we just stay on the main chain and try to kill the forks and the minority chains. There can only be two possibilities.
One of the developers then attempted to explain the situation and why it did not seem likely there would be a hardfork in the short term, despite the Hong Kong agreement:
Many of the [Hong Kong] agreement signers spent a week in [New York]. We did a lot of design work. We talked about how to properly construct a hard-fork. We talked about how we would do this in a way where we would not have the same risks that Ethereum has recently experienced. We talked about in [Hong Kong] how it is important for Bitcoin to remain unified and how it is important to the long-term value of Bitcoin. In [Hong Kong], and in [New York], there’s no desire to do anything that would be controversial. We would need consensus around any kind of hard-fork that would happen. It would have to be incredibly non-controversial. While it’s certainly the case that a lot of that research and many of those discussions should be made more broadly available, there’s certainly a lot of concern now that even from people outside this room that it would be very difficult to get that level of consensus around a hard-fork. I wanted to point out that hard-forks are very disruptive to markets. They are disruptive to merchants, to markets, to entire ecosystems. We have to take this into account. Unless there is an overwhelmingly strongly justified reason to do a hard-fork, then the costs outweigh the benefits. We have been looking at ways to solve these problems in Bitcoin without having a hard-fork.
Luke Dashjr, who was one of the signatories to the agreement, then explained that he had kept his commitment and written some code for a possible hardfork.12 One of the developers present, who presumably was not present in Hong Kong, apologised for undermining the efforts of the developers to produce code for the hardfork. The individual said that they felt it was not appropriate to work on the hardfork, when some miners were saying they would block SegWit. This individual was expressing concern that a hardfork would distract from the blocksize increase in SegWit. He also complained about public comments on preventing SegWit in order to get a hardfork, and that this was essentially a threat, a contribution to tension which made a hardfork more difficult.
I would like to apologize to you, and to the developers, for undermining their efforts to produce this material for you regarding their commitments. I did so because their efforts in New York came right after some public comments about blocking segwit regarding a hard-fork. In that environment, I felt very uncomfortable about hard-fork proposals slowing the scaling of bitcoin through segwit. I regret the climate that my comments created. I am sorry for that and for my comments.
There was then a response to this comment, presumably from Jihan Wu, in which he perceptively highlighted the bad communication spiral which both sides had gotten into. Jihan then implied that he also felt threatened, and that the threats were therefore coming from both sides.
I think I need to clarify this. [The] Segwit block also comes from the [idea] that the [Hong Kong] agreement would not be respected. It’s a very bad spiral that we have got into, in terms of bad communication. Maybe both parties don’t want to do something under pressure. Maybe both parties don’t want to be threatening.
After the event, I spoke to a well-known small blocker who was present at the meeting. He told me that Jihan had agreed to help to try and activate SegWit once it was released, and that miners were scared by the events in Ethereum and didn’t want to try anything risky. As for the commitment to activate SegWit, this may have been optimistic and Jihan may have had a different account of these events. It is not hard to imagine that there could have been further communication issues. The Ethereum split was a pivotal moment in the blocksize war, even more so than the embarrassing Craig Wright saga. It handed the initiative to the small blockers. The miners were now terrified of a similar event occurring in Bitcoin. Prior to the Ethereum split, miners were keen to just try something; now the view seemed to have changed. Bitcoin Classic now looked unlikely to activate in the short term. Ironically, although most small blockers won’t like to admit this, Ethereum may have saved Bitcoin. However, the war was far from over. People had short memories in the space, and the lessons from Ethereum would gradually fade from memory.