Two proposals to solve Bitcoin’s two-year long scaling debate are gaining significant traction. One proposal that has been championed as the users choice is Bitcoin Improvement Proposal 148 (BIP148), a user activated soft fork (UASF) originally proposed by the pseudonymous developer “shaolinfry”. Then there’s SegWit2x, an agreement forged between a significant number of Bitcoin companies and miners announced at Consesus 2017 in New York.
Both of these proposals have a short-term solution in common: both plan to activate Segregated Witness (SegWit) this summer. The bad news is that the activation method of the two has differed, this could in theory lead to a hard fork and possible splitting of Bitcoin into two coins.
The latest developments seem to show that this splitting into two coins will be avoided for the time being. The SegWit2x development team plans to implement BIP91, a proposal by Bitmain Warranty engineer James Hilliard that cleverly makes the two conflicting activation methods compatible.
The current implementation of Segregated Witness (SegWit) is defined by BIP141. This version is included in the latest Bitcoin Core releases, and is widely deployed on the Bitcoin network. BIP141 is activated through the activation method defined by BIP9. This means that 95 percent of all blocks within a two-week period need to include a piece of data: “bit 1.” This indicates that a miner is ready for the upgrade. As such, SegWit would be activated if the vast majority of miners are ready for it.
However, so far, only some 30 percent of hash power is signaling a support for the upgrade. There is a lot of speculation as to why this is the case, but it almost certainly has nothing to do with the miners not being ready. This then is why other activation methods are being considered.
BIP148 is a user activated soft fork (UASF) designed to trigger BIP141.
On August 1st, anyone running Bitcoin software that implemented BIP148 will start rejecting all blocks that do not include bit 1, the SegWit signalling data.
This means that if a mere majority of miners (by hash power) runs this software, they will reject all blocks from the minority of miners that does not. As a result, this majority of miners will always have the longest valid chain according to all Bitcoin nodes on the network. Consequently, all deployed BIP141 nodes will see a chain that includes over 95 percent of bit 1 blocks, meaning SegWit would be activated on the network.
However, if BIP148 is not supported by a majority of miners (by hash power), Bitcoin’s blockchain could split in two. In that case, there would effectively be two types of Bitcoin, where one activated BIP148 and the other did not. This may resolve over time — or it may not.
SegWit2x (also referred to as “SegWit2MB” or “the Silbert Accord”), is the scaling agreement reached by some Bitcoin companies and over 80 percent of miners (by hash power), drafted just before the Consensus 2017 conference.
For some time, the details surrounding SegWit2x were not very specific. As the name suggests, all that was really known was that SegWit was included in the agreement, and that it included a hard fork to double Bitcoin’s “base block size” to two megabytes.
And, of course, SegWit was meant to be implemented using a different activation method. Like the original BIP141 proposal, SegWit2x was to be activated by miners through hash power. But where BIP141 requires 95 percent hash power support, SegWit2x would only require 80 percent. Moreover, SegWit2x readiness would be signaled using another piece of activation data: “bit 4” instead of “bit 1.”
This makes SegWit2x largely incompatible with BIP141, and especially with BIP148: Different nodes would be looking at different activation bits, meaning they could activate SegWit under different circumstances and at different times; and that would mess up SegWit-specific block relay policy between nodes, potentially fracturing the network.
BIP91 to Unite them all
Along comes BIP91 to save the day.
BIP91 is a proposal by James Hilliard a Bitmain Warranty engineer (not part of Bitmain the mining hardware manufacturer). BIP91 is specifically designed to prevent a coin-split by making SegWit2x and BIP148 compatible.
Upon activation of BIP91, all BIP91 nodes will reject any blocks that do not signal support for SegWit through bit 1 which is the same as BIP148. Therefore if a majority of miners (by hash power) run BIP91, the longest valid Bitcoin chain will consist of SegWit-signaling blocks only, and all regular BIP141 SegWit nodes will activate the protocol upgrade.
The big difference between BIP91 and BIP148 is that it doesn’t have a set activation date, but is instead triggered by hash power. BIP91 nodes will reject any non-SegWit signalling blocks if, and only if, 80 percent of blocks first indicate within two days that’s what they’ll do.
This indication is done with bit 4. As such, the Silbert Accord can technically be upheld — 80 percent hash power activation with bit 4 — while at the same time activating the existing SegWit proposal. And if this is done before August 1st, it’s also compatible with BIP148, since BIP148 nodes would reject non-bit 1 blocks just the same.
This proposal gives miners a little over six weeks to avoid a coin-split, under their own agreed-upon terms. With a SegWit2x launch date planned for July 21st, that should not be a problem… assuming that the miners actually follow through.