Bitcoin Cash's New Hard Fork - How The New Difficulty Algorithm Will Work

11/08/2017 - 19:21 UTC
Bitcoin Cash's New Hard Fork - How The New Difficulty Algorithm Will Work

Bitcoin Cash (BCH) price shows strong growth these days while the network is preparing for a new hard fork which will bring an updated Difficulty Adjustment Algorithm (DAA). What this new algorithm promises? investigates.

The new Difficulty Adjustment Algorithm is implemented in the latest Bitcoin ABC client’s version 0.16.0 released on October 31. The new DAA is a significant change to the Bitcoin Cash consensus rules, and it will activate as a hard fork on November 13th.  Being a hard fork means that all exchanges and wallets need to upgrade prior its activation.

The development team of Bitcoin ABC has been in communication with Bitcoin Cash miners and has contacted notable exchanges and wallet providers. They are confident everybody’s on the same page regarding this upgrade.

What was wrong with the Difficulty Adjustment Algorithm?

Bitcoin Cash had a different DDA since day 1 of its existence as a separate chain (August 1). The current algorithm allowed Bitcoin’s offspring to survive as a minority chain but produced wild fluctuations of hash rate. As Bitcoin ABC says, that was problematic because it prevented fast transaction confirmations, while radically shifting the coin issuance schedule.

The new DAA implemented in Bitcoin ABC client 0.16.0 is a proposal called D601 from Bitcoin ABC lead developer Amaury Séchet. There were at least two other proposals as well.

Bitcoin ABC developers admit the decision to choose that specific proposal was not easy because Bitcoin Cash has several independent development teams. Thus deliberation was needed between developers from the different groups.

The Bitcoin ABC team acknowledges that D601 (the proposal from Amaury Séchet) may not bring the highest performance, but was selected because it appears to have the least risk.  

What does the new algorithm do?

According to the Bitcoin ABC team, the new DAA algorithm seeks to accomplish the following objectives:

  • Adjust difficulty to hash rate to target a mean block interval of 600 seconds.
  • Avoid sudden changes in difficulty when the hash rate is fairly stable.
  • Adjust difficulty rapidly when hash rate changes rapidly.
  • Avoid oscillations from feedback between hash rate and difficulty.
  • Be resilient to attacks such as timestamp manipulation.

This algorithm is based on a 144-period simple moving average.  The difficulty is adjusted each block, based on the amount of work done and the elapsed time of the previous 144 blocks.

To compute the difficulty, it begins with the three topmost blocks and chooses the one with the median timestamp of the three

Next, the process is repeated with blocks of 144-146 height less than the current and a median timestamp block is again chosen from those 3.

From these two blocks roughly 144 blocks apart, the algorithm defines W as the amount of work done between the blocks, and T as the elapsed time between the blocks

A high-low filter is applied so that T has maximum value of 2 days and a minimum value of .5 days.  This prevents difficulty from changing too abruptly. (Normally 144 blocks takes approximately one day).

 Then the difficulty target is computed as follows:

Wn = W * ExpectedBlockTime / T .

G = (2^256 / Wn) - 1

The latter is the new difficulty target.  Also, a final filter is applied to enforce a maximal target.

When will the new DAA activate?

The activation of the new consensus rules will be done on a median time stamp basis on blocks that occur after timestamp 1510600000, which corresponds to November 13th, 7:06 PM GMT.  
The exact time of upgrade will depend on the timestamp of the blocks mined after this timestamp.

Disclaimer: This article should not be taken as, and is not intended to provide, investment advice on Bitcoin, Cryptocurrencies or finance in general.