bitcoin-mining-difficulty

v2026.09.24

Difficulty adjustment algorithm: 2016-block re-target window, max 4x factor, time-warp considerations, real-world hashrate dynamics. USE WHEN: predicting next adjustment, understanding hashrate/ difficulty cycles, building mining analytics.

GitHub
安装命令
npx skhub add claude-dev-suite/bitcoin-mining-difficulty
Markdown
SKILL.md

Difficulty Adjustment

Bitcoin re-targets the difficulty every 2016 blocks to maintain ~10-minute average block time despite hashrate fluctuations.

Algorithm

def next_difficulty(current_difficulty, actual_time, expected_time):
    # actual_time = sum of block_n.timestamp - block_(n-2015).timestamp
    # expected_time = 2016 * 10 * 60 = 1,209,600 seconds
    factor = expected_time / actual_time
    factor = clamp(factor, 0.25, 4.0)   # 4x max change per epoch
    return current_difficulty * factor

Implemented in pow.cpp:CalculateNextWorkRequired() in Bitcoin Core.

Time-warp protection

Sequential blocks must have:

  • block.timestamp > MTP(last 11 blocks).
  • block.timestamp ≤ network_time + 2 hours (avoids future-dated blocks).

These rules limit miner manipulation of timestamps to game the adjustment.

Real-world dynamics

  • China mining ban (May 2021): hashrate dropped ~50% over weeks; difficulty took ~3 weeks to drop accordingly. Miners enjoyed high-revenue period during the lag.
  • Halvings cause hashrate dips that recover over months.
  • Seasonal fluctuations (China's wet season → cheaper hydropower → hashrate spikes).

Common adjustments

Typical adjustments: 0.5% to 5% per epoch in normal conditions. Large adjustments (10%+) signal major hashrate event (region ban, ASIC manufacturing surge, etc.).

Difficulty number vs hashrate

hashrate_estimate = difficulty * 2^32 / 600   # H/s

Where 2^32 = full nonce space probed for one solution at expected target, and 600 seconds = average block time.

Common bugs

  • Computing actual_time incorrectly (off-by-one on block count).
  • Forgetting the 4x cap → catastrophic divergence.
  • Using block timestamps directly without MTP for time-locks.

See also

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

skills/bitcoin/mining/difficulty

默认分支

main

最新提交

9496306

Tree SHA

fe4e2f1