BIP91: The SegWit Activation "Kludge" That Should Keep Bitcoin Whole
Bitcoin’s long-lasting scaling debate appeared to be heading toward a climax lately, with two proposals gaining significant traction. At one end of the fence there is Bitcoin Improvement Proposal 148 (BIP148), a user activated soft fork (UASF) originally proposed by the pseudonymous developer “shaolinfry.” On the other, there’s SegWit2x, an agreement forged between a significant number of Bitcoin companies and miners.
The good news is that 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, which could lead to a coin-split.
As of today, it seems this schism will be avoided — at least initially. 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 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.
Or that was the intention. So far, only some 30 percent of hash power is signaling 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 (a lack of) readiness.
That’s why other activation methods are increasingly being considered.
BIP148 is a user activated soft fork (UASF), specifically 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 a numer of 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.
Now, it seems BIP91 has provided the solution.
The proposal resembles BIP148 to some extent. Upon activation of BIP91, all BIP91 nodes will reject any blocks that do not signal support for SegWit through bit 1. As such, 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.
Where BIP91 differs from 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.