As the rumblings of a potential upcoming hard fork of Bitcoin have gotten louder, customers have started to ask us what our plans are in the case of a miner-led fork of the network. Until recently, we didn’t ascribe a high probability to any such fork happening, however, we now must consider it as a distinct possibility.

Before addressing technical specifics, I would like to state the following: At BitGo, we think that any contentious hard fork (as we predict any near term fork would be) would be a huge net negative for Bitcoin and for every business in the ecosystem. We feel the user confusion and brand dilution alone would result in a loss of billions of dollars of market cap in aggregate across both sides of the fork. We are 100% supportive of the safe, tested SegWit functionality available for activation in core code today and believe it is by far the safest way to gain additional block space in the near term.

That said, BitGo will always have our customers’ best interests at heart; we will work diligently to ensure our customers get the best experience from Bitcoin that we can offer, given the circumstances. While we can’t predict how the future will unfold, we will act as quickly as possible to develop solutions that meet customers’ needs and protect their interests.

Contentious Hard Forks

BitGo considers any hard fork which is rolled out without industry-wide consensus, and therefore splits the network, to be an altcoin, not Bitcoin itself. This is irrespective of how much hash power the forked coin may have. Ours is only one voice of many, but this is entirely consistent with the view currently taken by the economic majority of Bitcoin exchanges. If such fork were executed in a supportable way (see below), and there were sufficient customer and market demand for the new coin, we would add support via our API as soon as technically possible.

Supportable Hard Forks

In order for us to actually technically support a hard fork, we consider that the following criteria must be met:

The hard fork must be coordinated via a clear on-chain activation mechanism, and should have a generous grace period between activation and the fork taking effect. The hard fork must provide strong 2-way replay protection. This means that transactions valid on one chain should be invalid on the other, and vice-versa. Without this protection, users would only be able to safely transact on the chains separately by using explicit splitting techniques, which puts excessive burden on the end user. The hard fork must provide wipe-out protection. This means, once forked, the fork should remain permanent. The software running the new fork should not be able to produce a reorganization back to the original chain, which would effectively wipe out existence of the new chain.

Bitcoin Unlimited / Emergent Consensus

Bitcoin Unlimited does not meet the above tests for being a supportable fork today. In fact, it fails all three criteria. Additionally, there are serious problems with “emergent consensus,” which can result in ongoing network splits and chain reorganizations of arbitrary length, depending on how different groups of miners set their consensus parameters. Finally, there are serious concerns about the general code quality and peer review process of the Bitcoin Unlimited code base itself. As such, we will not be able to provide support for a hard fork caused by Bitcoin Unlimited in its current form. If the Bitcoin Unlimited team undertakes the efforts needed to make the fork in a supportable manner, our position on this would change accordingly.

Customer Actions to Take

In the case of an unsupportable fork (Bitcoin Unlimited as written today), we recommend taking the following steps:

Upon the fork, pause any outgoing transaction activity from BitGo. Unless you do so, you will likely unwittingly be transacting on both chains.

Stay in close contact with BitGo for assistance in splitting or moving coins safely. We would undertake efforts to assist customers in splitting their coins, but we cannot predict how long that might take to accomplish.

Once either a splitting plan has been implemented, or, alternately, the hard fork has resolved itself back into a single chain due to miners abandoning it, it would again be safe to transact on the original chain.

In the case of a supportable fork, we recommend taking the following steps:

You would be able to continue to safely transact on the original Bitcoin network using the BitGo API. You would not immediately be able to transact on the new fork. However, you could be assured that transacting at BitGo would not affect the coins on that side of the fork.

Expect that block times on the original Bitcoin network will be significantly increased, leading to increased load on the network. Limit transactions to those which are absolutely necessary, and expect that fees may rise substantially for multiple weeks due to decreased supply of blocks.

You may transact your value on the new coin either by using your own 2 keys with software that you or others build, or by waiting for BitGo to add support for the new coin. However, note that BitGo cannot yet promise any particular time frame for support of the new coin.

There is also the final possibility of a malicious forking action which aggressively acts to stifle the existing (minority) chain using excess hash power. This might result simply in a chain of empty blocks, or might manifest as an apparently working chain which suddenly experienced a chain reorganization many blocks deep. We consider this to be no different than a general 51% attack on the Bitcoin network. In this case, we recommend:

Halt all bitcoin-related activity of your business, including outgoing transactions, as well as crediting incoming deposits. Any normal assumptions about block confirms required to “finalize” a transaction would be invalid.

Stay in contact with BitGo and Bitcoin development Slack/IRC channels to stay abreast of discussion of plans for dealing with the attack.

As always, feel free to contact us at support@bitgo.com for clarification or questions.

Ben Davenport

CTO, BitGo