An eyeball-to-eyeball confrontation has been brewing in the Bitcoin world. Miners on one side. Developers on the other. The reason? Bitcoin has been slowing down for a while. Transactions take too long to confirm, hours to even days. Transactions throughput has been unacceptably low, just about seven transactions per second. That a change is needed, there is no doubt. Question is what is to be changed.
Miners appear to have had a relatively simple fix in mind. Increase the block size from the current 1MB block. Rest of the system stays pretty much the same. Not so fast is what the developers (Bitcoin Core) have been saying. Increasing the block size is a temporary solution at best. The orders of magnitude change needed to handle anticipated growth in transaction volume is much higher, calls for a much more comprehensive fix. And the correction that developers have been espousing has been available for more than a year.
Essentially, it centers around what is called SegWit. The core premise is fairly straightforward. About 99% of a block’s data is taken up by transactions. And about 65% of transaction data is the signature in the inputs used to authenticate the sender of coins. The signature is not required to actually process the transactions, only for the initial validation. SegWit recommends moving the signature data to an extension block thus freeing up significant space in the main block.
Moving the signature out of the transaction also means that it is no longer a part of the transaction hash/ID. Thus, making it impossible for a hacker to take an existing transaction, change the signature (which changes the ID), and resubmit the same transaction for approval with a new ID. This bug is referred to as transaction malleability. Fixing this bug makes it possible to run so-called Layer Two solutions on top of the blockchain. Chief among them is the Lightning Network. A transformative solution for Bitcoin if there ever was one, this would be it. LN uses a network of payment channels that run off-blockchain to send bitcoins around. It makes possible billions of transactions per second and micropayments as small as one Satoshi (10-8 bitcoin). Scalability issues would be firmly relegated to history, to be quickly forgotten. So, if IoT devices need to start making automatic payments for services, the LN offers the way. SegWit +LN appear to take bitcoin to an entirely different level and fulfil its promise as the common man’s digital currency.
But most miners did not seem to want SegWit to activate. The fear presumably is that off-chain transactions will eat into growing transaction fees, reduce their profits, while not presenting any immediate value to them in return. Of course, one could argue that SegWit protects the very future of Bitcoin; the miners who looked at the long term tended to side with SegWit.
Therefore, it has been a long battle to try to introduce SegWit into Bitcoin. A series of Bitcoin Improvement Proposals (BIPs). There was BIP 9 that made soft fork deployment easier. Miners would use so-called version bits to signal that they are ready to enforce new rules, giving a heads-up to nodes that it is time to upgrade. Activation of SegWit is through BIP 141, it requires 95% of miners to signal for it using version bit 1 per BIP 9. Unfortunately, acceptance of BIP 141 never crossed a 50% threshold, let alone 95%.
Users and developers finally said, enough is enough, and pushed through BIP 148 to nudge SegWit onto the system as a User Activated Soft Fork (UASF). Beginning the 1st of August, (just a couple of days away!), nodes that enforce BIP 148 will reject any block from miners that does not signal SegWit readiness, along with any block that is built on top of a block that does not signal support. BIP 148 was therefore a case of users upping the ante by making definitive action unavoidable. With BIP 148, miners were compelled to move. Ignoring SegWit was no longer an option.
In response, miners came up with SegWit2x. It combines SegWit with a 2MB hard fork at a later date. A compromise that presumably could make both parties happy (though Bitcoin Core developers continued to have misgivings about the solution’s state of readiness). But where BIP141 required 95% miner support, SegWit2x only requires 80%. Moreover, SegWit2x readiness would be signaled using bit 4 instead of bit 1. However, SegWit2x was incompatible with BIP 141 and BIP 148.
Therefore, BIP 91 was introduced to make SegWit2x compatible with BIP 148. Upon activation of BIP91, all BIP91 nodes will reject any blocks that do not signal support for SegWit through bit 1 (like the original BIP 141). But for it to activate, it only requires 80% of miners to signal support through bit 4 (like SegWit2x). With BIP 91, success seemed at hand! At last! It got 90% miner support through bit 4 signaling thus locking it in.
But BIP 91 in some ways could turn out to be a “smoke screen.” For BIP 91 to activate, it requires bit 1 signaling by miners by 80% of miners. That has not happened yet, remained below 50%! Miners could instead back out of BIP 91 anytime. However, BIP 91 did look like a way out of the impasse. Finally, and not a moment too soon, with the August 1st deadline looming large! But whether SegWit would actually activate remained an open question.
Into this mix, came a stunning development! A group of miners announced their intent to break away with a new currency called Bitcoin Cash. It increases the block size to 8 MB and removes SegWit, the bone of contention all along! Backers seem to be a few of the largest Chinese mining firms. The actual level of support for Bitcoin Cash seems unclear though. August 1st looks to be a day that will go down in Bitcoin history. What will actually unfold is anybody’s guess! Stay tuned!