Bitcoin Cash Hard Forks to a Better Difficulty Algorithm
The Bitcoin chain that can hard fork, Bitcoin Cash, executed another hard fork. After a wild weekend with crazy price swings, the sharply aspiring coin changed the mining difficulty algorithm to stop the constant fluctuation between being too slow and too fast.
On November 13, all exchanges which list Bitcoin Cash (BCH) halted deposits and withdrawals. After a doubling in its price on the weekend and momentarily attracting more than 60 percent of all Bitcoin miner’s hash rate, the Bitcoin spin-off coin which considers itself the real, original Bitcoin, executed another hard fork.
The hard fork itself is not very controversial. Everyone agrees that the old mining difficulty algorithm has to be disposed of because it keeps the network in a continuous state of switching between a frozen and an overheated network. So Bitcoin Cash needs another difficulty algorithm, which can only be changed with a hard fork. The faster, the better.
BitcoinABC’s lead developer, Amaury Séchet, scheduled a hard fork for November 13 and proposed a new difficulty algorithm. Other developers followed a few weeks later and had been discussed and tested. Although the Bitcoin-ML mailing list favored a proposal of XT’s Tom Harding, Amaury released a hard fork version of ABC with his algorithm. Later he explained, that it needed to be done before the SegWit2x fork and that there was no time left to discuss things further.
The Bitcoin Cash community was unhappy with the decision finding process and grumbled. But in the end, everyone agreed, that a new difficulty algorithm is painfully needed, that Amaury’s algorithm is a major step forward, and that it’s not worth it to postpone or question a good and needed hard fork for politics. So every major Bitcoin Cash client, ABC, Bitcoin Unlimited, XT and Electron Cash merged the hard fork. A split was not expected.
The fork was scheduled to happen at a certain time: “When the median time past of the most recent 11 blocks (MTP-11) is greater than or equal to UNIX timestamp 1510600000”, the documentation explains. To understand the developer talk, you need to know that Unix timestamps refers to seconds after January 1, 1970 (UTC). In other words, the hard fork happened several blocks after a certain time on November 13. That’s all we need to know for now.
As there had been no block for around two hours surrounding this time, the activation of the hard fork was delayed for some hours, but finally locked in with block 504031. Some seconds after this block was found, network difficulty dropped by nearly two-thirds. A block later the difficulty dropped again, but just a little bit.
The new Difficulty Algorithm adjusts the difficulty to mine a block every block, based on a moving average of the last 144 blocks. Based on tests the Bitcoin Cash developers believe that this will stabilize block intervals to approximately 600 seconds. If it really works, can only be said after it has proved itself in the wild.
Furthermore, the hard fork implements two minor changes from the BIP146 soft fork, which has been bundled to SegWit by Bitcoin Core. The enforcement of LOW_S signatures and Nullfail. Both are said to eliminate some parts of third-party malleability, which is a minor annoyance for network service providers when chaining unconfirmed transactions. The same changes are already active on the Bitcoin network.