In Proof-of-Work blockchains, difficulty algorithms serve the crucial purpose
of maintaining a stable transaction throughput by dynamically adjusting the
block difficulty in response to the miners’ constantly changing computational
power. Blockchains that may experience severe hash rate fluctuations need
difficulty algorithms that quickly adapt the mining difficulty. However,
without careful design, the system could be gamed by miners using coin-hopping
strategies to manipulate the block difficulty for profit. Such miner behavior
results in an unreliable system due to the unstable processing of transactions.
We provide an empirical analysis of how Bitcoin Cash’s difficulty algorithm
design leads to cyclicality in block solve times as a consequence of a positive
feedback loop. In response, we mathematically derive a difficulty algorithm
using a negative exponential filter which prohibits the formation of positive
feedback and exhibits additional desirable properties, such as history
agnosticism. We compare the described algorithm to that of Bitcoin Cash in a
simulated mining environment and verify that the former would eliminate the
severe oscillations in transaction throughput.