The previously announced Bitcoin Cash hardfork is to be held on Monday, November 13, so that the exchanges, wallets and other software need to upgrade before this date.
November 13 Upgrade Confirmed
— Bitcoin Cash (@BITCOlNCASH) 30 октября 2017 г.
As the developers team reports, the original Bitcoin Cash “EDA” allowed Bitcoin Cash to survive as a minority chain but produces wild fluctuations of hashrate, that in its turn prevents consistently fast confirmations for users, and radically shifts the coin issuance schedule.
After careful consideration, we have made the decision to implement a proposal from Bitcoin ABC lead developer Amaury Sechet. Our decision to choose one specific proposal was not easy, because Bitcoin Cash has several independent development teams, and there was a great deal of deliberation between developers from the different groups.
Bitcoin Cash developers team
As detailed, two impartial and unconnected testing teams were chosen to work on the algorithm: Bitprim and nChain. These teams conducted their tests separately and came to the same conclusion of which algorithm was most appropriate.
However, not everyone thinks so. Charlie Lee, Litecoin creator, doubted the transparency of the choice made:
Apparently, main developer of BitcoinABC pulled rank and announced this decision to go with HIS algorithm instead of going with consensus.
— Charlie Lee [NO2X] (@SatoshiLite) 30 октября 2017 г.
Algorithm and mining difficulty
According to the 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 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
As the developers detail, the 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, the process begins with the three topmost blocks, and the one with the median timestamp of the three is chosen. Then, the process is repeated with blocks 144, 145, and 146 (blocks of 144-146 height less than the current) and a median timestamp block is again chosen from those 3.
From these 2 blocks roughly 144 blocks apart, W is defined 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 1 day).
Wn = W * ExpectedBlockTime / T .
G = (2^256 / Wn) - 1
According to the team, this is the difficulty target.
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, 2:06 PM GMT.