Why You Should Oppose the Bitcoin SV Fork
Back when the Bitcoin scaling debate was raging the Bitcoin Core/small block crowd frequently used a strawman argument against those wanting a blocksize limit increase that went something like this ― “You big blockers are so stupid. You literally think you can just increase the blocksize limit and do nothing else and don’t realize how disastrous that would be for Bitcoin”.
The reason this is a straw man is that no technical person on the big block side actually believes that you can just increase the blocksize and do nothing else and Bitcoin will just magically scale. The Bitcoin Core software employs engineering practices that were a decade or more out of date when the software was first released in 2009. It’s horrifically unoptimized. And if you intend to scale it you’re going to need to put in the hard work necessary to optimize the shit out of the software so that you can scale while remaining decentralized.
Further, it’s likely that the protocol will need to be modified as well to improve efficiency and improve the scaling properties. This is the unsung work being undertaken by Bitcoin Cash’s two main development teams. Bitcoin Unlimited has identified mempool acceptance as a bottleneck and has prototyped a design for parallel mempool acceptance. Bitcoin ABC is working on parallel transaction validation. Tomas van der Wansem is working on a protocol change to add UTXO commitments to enable fast sync while pruning most of the unneeded blockchain data. Graphene block compression is also being worked on to get minimum block transmission latency. This work is only the beginning of what will be needed to make Bitcoin Cash scale while remaining decentralized.
So while this strawman argument doesn’t apply to those in Bitcoin Cash’s technical community, it does apply to one person in particular ― Craig Wright (and by extension his company nChain). Apparently Craig does indeed hold this strawman view of Bitcoin as he has been fighting with all Bitcoin Cash development teams while insisting that Bitcoin was more or less perfect when it was released in version 0.1 and that the changes being introduced by ABC, Unlimited, XT etc. are heretical. So much so that he is threatening to fork Bitcoin Cash by introducing his own version of the software minus these changes.
So with this post I just want to point out some of the terrible arguments that Wright has been making and urge people to reject his fork and vision for Bitcoin Cash.
“Bitcoin Cash can already handle 2.6M transactions per second”
This is, frankly, absurd. The recent Bitcoin Cash blocksize limit increase to 32 MB is already pushing the limits of what the software can handle. nChain is trying to increase the blocksize up to 128 MB (with designs on removing it entirely) which the software almost certainly cannot yet handle. It will be able to handle it eventually, once ABC, Unlimited, and XT have removed some of the major bottlenecks. But not now.
But just ask yourself what would be required to get 2.6M TPS in Bitcoin Cash? You would need to throw an enormous amount of hardware at the problem. This would require hardware costs in the tens, possibly hundreds of thousands (millions?) of dollars. At these costs only a few large miners would be able to afford to mine.
The fallacy of assuming a small number of participating firms will be fine is the same fallacy that I accuse the small blockers of holding. If you followed my Twitter recently you’ve likely seen my dust up with Saifedean Ammous, author of The Bitcoin Standard. Saifedean writes in his book that the way Bitcoin will scale is by having all users deposit their coins in custodial “Bitcoin banks” who will then clear transactions between themselves off chain.
My argument is that while this would likely work fine in a pure free market, we don’t have a pure free market! Government will almost certainly regulate and control such institutions as they have always done in the past.
The same problem applies to Bitcoin miners. We can’t just assume that five or six giant miners would be enough to keep Bitcoin decentralized and resistant to control because “competition”.
“Free market competition” between a handful of giant firms is not sufficient to remain uncontrollable and uncensorable in the face of an aggressive and hostile government. We need much more decentralization than that.
“We don’t need a blocksize at all. Miners can just coordinate among themselves.”
Again, this goes back to the same fallacy above. A world in which there are so few miners that they can just pick up a phone and call each other to coordinate the blocksize is a world in which the government can trivally shut down or control the whole thing. To remain decentralized we need tens of thousands, maybe millions, of miners all over the world, with free entry and exit. That doesn’t lend itself to just having miners arbitrarily picking different blocksizes or calling each other on the phone to get agreement.
To that end the blocksize needs to be defined as part of the protocol. Something like BIP101 with automatic annual increases is probably the best way to safely increase it. But just having miners set their own blocksizes and adjust their settings in response to the inevitable forks would be a complete mess. And it’s even worse if there are so few that they can easily coordinate.
“Non mining nodes do nothing”
This is maybe one of the worst fallacies spread by Wright. Imagine a world where it takes $50k a year to run a Bitcoin Cash node. You would literally only have like five or six people who do so and everyone else would run SPV. In such a world it would indeed be trivial for those miners to pick up the phone and call each other and say: “Hey how about we increase the block reward to 100 BCH per block?”.
If everyone else is running SPV who’s going to detect that this is happening? And furthermore, what incentives are there for the miners to not do this?
By fully validating all the protocol rules, anyone running a non-mining node can detect if miners do this and can reject any payments from them. Miners are in a subordinate position in the network in that they must sell their coins into the market to profit from their mining operation. If the people whom the miners try to sell their coins to reject their payments because the miners changed the protocol rules, then they have no one to sell their coins to. Full validation by market participants forces the miners to follow the agreed upon rules else they lose their mining investment.
We don’t need everyone to run fully validating nodes. Satoshi himself even suggested most businesses would likely want to run their own nodes while end users would just use SPV. This is a reasonable position and would likely still provide a strong enough of a disincentive to prevent miners from cartelizing and trying to change the rules in their favor. But if we make it so expensive that nobody but miners will be running nodes, then you are opening Bitcoin Cash up to this type of manipulation.
Those of us in the technical community that supported increasing the Bitcoin blocksize did so because we genuinely believed it was technically possible to scale directly on-chain while remaining decentralized. This was always our vision for Bitcoin Cash and we’re working on making this a reality.
The vision offered by Craig Wright and his new full node project Bitcoin SV is just as bad as the vision offered by Bitcoin Core. It’s a world in which all transactions run through a handful of hyper centralized firms and one which would almost certainly be captured by government regulators.
We can have our cake and eat it too. We can scale and remain decentralized, but it isn’t just a matter of changing a single constant in the code and calling it a day. Real software engineers recognize this reality and understand the importance of optimizing the software and protocol to achieve this goal.
4 of 4 reviewers say it's worth paying for
0 of 4 reviewers say it's not worth paying for