On the emerging consensus regarding Bitcoin’s block size limit: insights from my visit with Coinbase and Bitpay
After visiting with Coinbase on sixteen March two thousand seventeen and with Bitpay on twenty March 2017, this is the message that resonates inwards me: “the upgrade to larger blocks must be decisive and absolute.” The community does not want the blockchain to split. A split would menace Bitcoin’s network effect, cause confusion in the media, and create unnecessary work for many Bitcoin businesses. This article presents my perspective on what is happening in Bitcoin and how I suspect the upgrade to larger blocks will unfold (hint: it will be anticlimactic). It is adapted from the presentations I gave at Coinbase and Bitpay (in both cases, I introduced to the entire company, with people from remote offices watching online), and augmented with the information I’ve learned since then. The photos are screenshots of my slips.
Part 1: Where we are now
Growth has hit a wall — The chart above illustrates how the size of blocks have grown since the genesis block was mined on three January 2009. Each block is represented by a little dot and the coordinates of that dot indicate the time the block was mined and the block’s size. Bright regions indicate that a lot of blocks of a particular size were mined at that particular time while dark regions indicate that very few blocks of a particular size were mined at that particular time.
We see that Bitcoin went through a dormant period for the very first year, before exploding exponentially. Two significant observations to make are:
- At almost all points in Bitcoin’s history, there was a broad distribution of block sizes. The explanation is that sometimes a block is found within a few seconds of the previous block and so very few transactions are waiting to be cleared, while other times the next block may not be found for over an hour and so many transactions are waiting to be cleared. The distribution of block sizes is a result of miners dynamically adjusting the amount of block space they produce to meet the real-time request from Bitcoin users.
- There are several bright white horizontal lines on the chart that correspond to historical (soft) boundaries imposed on the size of blocks by miners. In every case, once request rose adequately, the line gave way to a fresh line at a larger block size. The Bitcoin network began to hit the uppermost line in two thousand fifteen and — as can be seen by dimming the exposure in the picture above—no line has become this bright before cracking. This is the invisible wall at one MB.
The invisible wall at one MB has switched the behavior of Bitcoin — Because miners can no longer dynamically adjust the size of the blocks they produce to meet the real-time request for block space (e.g., almost all blocks are now one MB in size), transactions cannot be cleared in a timely manner. For example, one year ago the average confirmation time was eighteen minutes; now it is one hour and forty six minutes. Fees have enlargened too, leaping from $0.09 one year ago to $0.83 today (28-day trailing averages).
As a result of these switches, Bitcoin has become less usable and thus (all else held constant) will be used less, providing opportunities to similar systems (alt-coins) without these internally-imposed constraints to out-compete Bitcoin.
The wall is internal, not outer — Normally when a elaborate system in nature stops growing, it is the result of something in the outward environment: less available energy or a physical blockage, for example. In the case of the Bitcoin network, the wall is internal. Investigating the “genetic code” of a typical network knot exposes a gene instructing the knot to reject blocks that are over 1,000,000 bytes in size.
Knot operators are modifying their knots to accept larger blocks — Recall that there are human operators behind the knots that make up the Bitcoin network, and these human operators want Bitcoin to thrive. Knots operators are modifying their knots to accept larger blocks today and signalling this fact to the network. Last year, 1.2% of visible knots voiced a fresh “permissive gene,” by November 6.7% did, and today 12% do.
Miners are modifying their knots to begin producing larger blocks — Like knot operators, miners are also voicing their preference for larger blocks. Miners do this by leaving a signal in the blocks they mine. Last year, 0.5% of the network hash power produced this signal, by November 12% did, and today approximately 40% of the network hash power is signalling that they wish to begin producing larger blocks.
Part Two: How I suspect the upgrade to larger blocks will unfold
- The number of knot operators and miners signalling for larger blocks will proceed to increase.
- Once a certain hash power threshold is met (perhaps Two/3rds or Trio/4ths), miners will begin orphaning blocks from non-upgraded miners (e.g., refer to this lump from ViaBTC). This will serve as an expensive-to-ignore reminder to non-compliant miners to get ready for the upgrade.
- Miners will agree on a fresh block size limit that is equal to or less than what they believe the majority of the network is willing to accept (which shows up to suggest a fresh block size limit less than or equal to sixteen MB [some suggestions are two MB and eight MB]).
- Several weeks of notice will be given before miners will begin to accept larger blocks, to permit knot operators running non-upgraded software sufficient time to upgrade.
- Several weeks later, miners will begin producing larger blocks.
- The client implementation known as Bitcoin Core will split internally, as one faction modifies the software it maintains in order to permit its users to track the emerging consensus.
- The future will look similar to the past. Looking back, the bright line at one MB will not look that much different than the bright lines that came before it nor the bright lines that will come after it.
Part Trio: Minimizing the risk of a blockchain split
The following section is descriptive rather than normative. I describe the mechanism that exists and that I believe will be used to deter a split (rather than the mechanism I believe ought to be used), taking into account our discussions at BU with miners, businesses, and the incentive structures underlying bitcoin.
[Level 1] Anti-split protection — The very first level of anti-split protection comes from the power of Bitcoin’s network effect. If we imagine a blockchain split where 20% of the hash power splits off to maintain a “small-block” branch, then blocks on that branch will originally be found 4x as leisurely as blocks on the “large block” branch. If we further imagine that the large-block branch permits (for example) up to eight MB blocks, then the capacity of the small-block branch (disregarding Level three protection described below) would be only 1/32nd that of the large-block branch. On the large-block branch transactions would confirm quickly and fees would be petite, whereas on the puny block branch, wait times and fees would explode beyond the already-high levels we practice today.
Primarily it would cost miners the same amount to mine a block on either the small-block or large-block chain. For example, if the cost to mine a block prior to a blockchain split was $Ten,000 USD, then the cost to mine a block instantly after the split would also be $Ten,000 USD regardless of which branch the miner chooses to mine on. What makes things interesting, is that a miner would not be able to sell his coins until one hundred fresh blocks are built on top of the block he mined, and so his decision for which chain to mine must reflect the probability that the branch he selects would sustain long enough for these mined coins to be sold.
Which chain is more likely to exist one hundred blocks in the future? The secure chain with 80% of the hash power and 32X the capacity, or the insecure chain with only 20% of the hash power, high fees and long wait time? As more miners defect from the petite block chain, the probability of that chain making it to one hundred blocks is further diminished, encouraging even more miners to defect. Eventually the prospects for the minority chain become so poor that it is totally abandoned. No small-block miner would receive any revenue from the blocks he mined.
Of course, since miners know this ahead of time, it is unlikely that any will bother to mine on the minority chain in the very first place (and thus no split would occur).
[Level Two] Anti-split protection — Miners will orphan the blocks of non-compliant miners prior to the very first larger block to serve as a reminder to upgrade. Simply due to the possibility of having blocks orphaned, all miners would be motivated to begin signalling for larger blocks once support definitively passes 51%. If some miners hold out (e.g., they may not be paying attention regarding the upgrade), then they will begin to pay attention after losing approximately $15,000 of revenue due to an orphaned block.
[Level Trio] Anti-split protection — In the screenplay where Levels one and two protection fails to entice all non-compliant miners to upgrade, a small-block minority chain may emerge. To address the risk of coins being spent on this chain (replay risk), majority miners will deploy hash power as needed to ensure the minority chain includes only empty blocks after the forking point. This can lightly be accomplished if the majority miners maintain a secret chain of empty blocks — built off their last empty block — publishing only as much of this chain as necessary to orphan any non-empty blocks produced on the minority chain.
Risks — In order to be certain that the blockchain does not split, miners need to be certain that a sufficient fraction of the network hash power has upgraded, so that Level three anti-split protection will be effective if necessary. The largest risk associated with the coming upgrade is that miners attempt to upgrade too early and without sufficient support. Exchanges, wallets, and other similar businesses have a fiduciary duty to preserve their customers’ assets and so all will honor bitcoins on the majority chain.
Part Four: What you can do
In my meetings with BitPay and Coinbase, the second-most common theme (2nd to the theme that there should be no split) is that we need more genetic diversity in knots that are ready and willing to accept larger blocks. Presently, most of the upgraded knots run Bitcoin Unlimited. To reduce the chances that a bug takes out several knots of “one species,” we want to see more knots running alternative implementations such as:
- Bitcoin Classic (or XT if upgraded to accept larger blocks)
- Btcd (upgraded to accept larger blocks)
- Bcoin (upgraded to accept larger blocks)
- Bitcoin Core 0.14 (upgraded to accept larger blocks)
Anyone can help by running such a knot, either at home or in the cloud. The members of Bitcoin Unlimited are glad to provide assistance to qualified developers who wish to upgrade and maintain alternative implementations to prepare for larger blocks. Feel free to contact Bitcoin Unlimited at firstname.lastname@example.org.
The author acknowledges Andrew Clifford, John Swingle, Zanglebert Bingledack, Jerry Chan and Norway for their comments and suggestions. Special thanks to Jake Smith for presenting with me at Coinbase and BitPay.