Nov 13, 2017 · activated · block 504,032

November 2017: new difficulty adjustment (DAA)

Replaced the emergency difficulty adjustment with a rolling ~144-block DAA, and made LOW_S and NULLFAIL signature rules consensus.

Verified

What changed

This upgrade activated when the median time past of the last 11 blocks reached Unix time 1510600000 (13 November 2017, 19:06:40 UTC). The first block under the new rules is height 504,032.

Three consensus rules changed:

  • A new difficulty adjustment algorithm (DAA). Each block’s target is now computed from the work done over a rolling window of about 144 blocks (one day). The window is clamped to between 72 and 288 block intervals of 600 seconds, and the window’s end points are chosen by median of three timestamps to resist timestamp games. See DAA.
  • LOW_S. Signatures must use the low S value (BIP 146). This removes one source of transaction malleability.
  • NULLFAIL. A failed signature check must use an empty signature (BIP 146). Also a malleability fix.

Why

The August 2017 fork shipped with an emergency difficulty adjustment (EDA). The EDA could cut difficulty by 20% whenever blocks slowed down for 12 hours, but raising difficulty again waited for Bitcoin’s old 2,016-block retarget. That gap rewarded miners who pointed hashrate at BCH only while it was cheap to mine, so block times swung between fast and slow.

A per-block, rolling adjustment removes that gap. Difficulty follows hashrate in both directions, every block.

What it enables

  • Steadier block times. Users and merchants could rely on roughly 10-minute blocks again.
  • Cleaner signatures. LOW_S and NULLFAIL make it harder for a third party to change a transaction’s ID before it confirms. That matters for chains of unconfirmed transactions and for contracts that reference transaction IDs.

Later history

This DAA was replaced by ASERT in November 2020, which adjusts from a single fixed anchor block instead of a moving window.

Sources

  1. November 13th Bitcoin Cash Hardfork Technical Details (BCHN upgrade specs)
  2. UAHF Technical Specification, REQ-7 (EDA)
  3. Bitcoin Cash Node chainparams.cpp (daaHeight)