How to stop a Bitcoin hard fork… or how to accelerate it

Dr Washington Sanchez
7 min readJan 25, 2016

--

I’ve been fairly clear about my support for Bitcoin Classic and, more importantly, raising the block size. My personal opinion is separate from OpenBazaar, as we’re officially neutral on the debate. We believe that we can make OpenBazaar work irrespective of the outcome of the block size debate.

That said… after reading their statements and conversations, it is my personal conclusion that the Core developers will never implement a version of Bitcoin that supports meaningful transaction capacity.

Despite any increase in the block size they may eventually authorize, even after deploying segregated witness, they are committed to creating a fee market by suppressing on-chain transaction capacity below market demand.

Based on their comments, I interpret that the reason for this approach is to preserve the financial incentives for miners after the block reward fails to subsidize the miners.

In other words, they want to create an environment where transaction fees are a sufficient subsidy for miners to keep mining and preserve the security of the network.

There are only two ways to achieve this:

  1. Lower the supply of transactions below market demand to drive up fees
  2. Increase the supply of transactions and therefore fees, the value of which is lower than or equal to today’s fiat value

Bitcoin Core developers aren’t in favor of the second option, as the resources required to run a full node goes up by a non-trivial factor. For miners this can be factored as another cost of doing business. With some efficiency improvements to block propagation (thin blocks, IBLT etc), the impact may not be so bad.

But for full nodes relaying and validating transactions, who don’t get a subsidy, their situation is much worse. The cost of running a full node + validation goes up with zero benefit for them, diminishing the checks and balances in Bitcoin.

This brings us to the ostensible argument Core have given the community: larger blocks reduce the decentralization of the network.

Why is that important? Fewer miners and full nodes threaten to disrupt the low switching costs for censorship-resistant transactions, as well as general preservation of the consensus rules.

In fairness, my observation is that Classic supporters tend to minimize these concerns.

However, Classic supporters see a major problem with Core’s preferred approach of restricting transaction capacity to raise fees. By reducing the supply of on-chain transactions using the block size, the ever increasing demand over time will create an unpredictable environment to clear transactions from the mempool into the blockchain.

Over time, users will find their transactions in limbo. Incidentally, I think this will get worse, not better, with tools like replace-by-fee (in any incarnation, even first-seen-safe). Why? If the fee required to clear the transaction from the mempool into the blockchain exceeds the financial viability of the transaction’s purpose, then the sender will allow it to expire.

Uncertainty kills confidence. If it isn’t predictable, users will have a difficult time forecasting whether a transaction is viable or not.

Secondly, with the rise of the fee market we may also see the rise of the ‘fee trap’.

Fee trap: where Alice submits a transaction with a fee that should be sufficient to be included in a block, but a short term spike in transaction volume creates a bidding war in transaction fees that out-competes Alice’s transaction for entry into the blockchain for n blocks.

This brings us to the third and most devastating risk: ordinary users will be gradually priced-out of making on-chain transactions.

If ordinary users can’t make on-chain transactions, they have little reason to remain a stakeholder in Bitcoin. Yes institutions can use Bitcoin, and users can participate in Bitcoin via these institutions, but how is that any different to what they have now with fiat? The same centralization risks apply to both.

Running the numbers

If Bitcoin Core’s approach is taken, then we need to determine to what degree transaction fees will change for the end user. Specifically we need to ask:

What is the minimum transaction fee required to cover the cost of mining (~$3,000 USD/block) or replace today’s block reward (~$10,000 USD/block)?

According to my rough calculations, if the block size remains at 1 MB, the transaction fee would need to rise from today’s level of ~$0.08 to:

  • $1.50/transaction: to cover the cost of mining
  • $5.00/transaction: to replace the block reward purely by transaction fees

Here’s a full breakdown if the block size was 2, 4, and 8 MB:

Similarly, if we are to take Bitcoin Classic’s approach, then we need to determine the block size requirements:

What is the minimum block size required to cover the cost of mining or replace the block reward, assuming transaction fees stay at their current level?

Again, according to my rough calculations, if transaction fees stay at $0.08, the block size would need to rise from 1 MB to:

  • 19 MB: to cover the cost of mining (which is in agreement with Jonathan Toomim’s estimates [slide 26], who was and is a miner before being involved with Bitcoin Classic)
  • 63 MB: to replace the block reward

I put together this spreadsheet to calculate these values. I invite anyone reading to check them out and make comments if there are any corrections or improvements to make them more accurate. If so, I’ll write a follow-up to this article with more accurate projections.

So there it is. We have two bad potential outcomes for each approach. What’s worse is that the certainty of each outcome is unclear. To be intellectually honest we must first admit that:

  • Core may be wrong about the decentralization risk
  • Classic may be wrong about Bitcoin suffering a consumer failure if block are allowed to stay full

As a result of so much uncertainty for so long, tempers and frustrations are reaching breaking point. The fragmentation in Bitcoin represents a failure of each side to listen.

We desperately need to find common ground before this gets ​more​ out of hand.

How we can fix Bitcoin together

These are two values where I think Core and Classic have some common ground:

  1. Bitcoin decentralization should not further deteriorate
  2. The accessibility of on-chain transactions, for everyone, should not further deteriorate

Right now, a 2 MB patch to the block size is unlikely to significantly threaten either of these values. It will keep the community together and it buys us time to roll out several efficiency upgrades to block propagation as well as segregated witness.

If Bitcoin Core announced today that they will prioritize an increase of the block size to 2 MB above all else, they would immediately defuse the current crisis. Miners would fall in line behind Core and the community will cease to feel disenfranchised by the developers.Unfortunately, Bitcoin Core has prioritized the deployment of segregated witness prior to any consideration of increasing the block size.

I really like segregated witness but the scale of the changes to the code, the manner in which it is deployed, and the requirements for wallets and libraries to reimplement the way they compose transactions, means that the scaling benefits won’t be felt for up to a year or more.

If you want a single precipitating factor for the momentum to hard fork to Bitcoin Classic, it is the decision by Core to deploy segregated witness before a 2 MB increase in the block size.

Sadly, I don’t see this happening unless a hard fork is all but certain.

… but if Bitcoin must fork

If Bitcoin Core continues to ignore the miners, the economic majority, and the users, a fork will come… and they’ll have no one but themselves to blame.

This is how Bitcoin is supposed to work. If there is a consensus change that the developers are out of touch with, they will be forked. It is a defense mechanism and a critical part of Bitcoin’s censorship-resistance. Core should respect that, rather than expect loyalty from the community.

Make no mistake, a hard fork is not merely about a change in a variable of Bitcoin. It is about a change of governance. It is a vote of no-confidence in the Core developers’ ability to listen or direct development according to the requirements of the community (or incidentally, Satoshi’s original design).

A hard fork is also a simultaneous vote in a new governance strategy for development. This is where Bitcoin Classic is failing. Both Bitcoin XT and Bitcoin Classic are suffering the same obstacles to triggering a hard fork: failed and/or uncertain leadership.

Bitcoin XT was probably more technically ambitious than miners were comfortable with. However, it is my impression that the real reason Bitcoin XT was unsuccessful was a general dissatisfaction with the leadership of the project, namely Mike Hearn. Irrespective of whether you love him or hate him, the consensus was clearly unhappy with Mike at the helm of Bitcoin development.

Bitcoin XT failed and now we have Bitcoin Classic. It has far more support than XT ever attracted, including support from notables such as Jeff Garzik as well as a substantial portion of the miners and economic majority.

But here again, uncertainty over the governance of Bitcoin Classic is unsettling key stakeholders in the Bitcoin community.

Who leads Bitcoin Classic? How are development decisions made? Who are the main developers of Bitcoin Classic? What’s the timeline for development? Who do we talk with to get timely answers to our questions?

If a fork must happen, then someone widely respected in the Bitcoin community needs to grit their teeth, think of England, take the pledge and lead Bitcoin Classic… namely Gavin Andresen and/or Jeff Garzik. Otherwise, this fork is never going to happen.

It isn’t enough for Gavin and Jeff to contribute code. They are both known quantities in the Bitcoin community and their clear leadership will likely evoke confidence in the governance of a Bitcoin hard fork.

If Bitcoin Classic wants to give the community confidence in the long-term success of a Bitcoin hard fork, Gavin and/or Jeff must step up.

For the record, I want to express my appreciation to Bitcoin developers everywhere for their largely thankless work over the years. Thanks, especially in the face of endless trolling and vitriol from immature bad actors.

I sincerely hope we can repair the damage that this debate has caused between friends and colleagues following the resolution of this first of many major challenges to scaling Bitcoin.

--

--