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.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add claude-dev-suite/claude-dev-suite --skill difficulty --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Difficulty?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/claude-dev-suite-difficulty)More formats (shields.io, HTML) on the badges page.
---
name: bitcoin-mining-difficulty
description: |
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.
allowed-tools: Read, Grep, Glob
---
# Difficulty Adjustment
Bitcoin re-targets the difficulty every **2016 blocks** to maintain
~10-minute average block time despite hashrate fluctuations.
## Algorithm
```python
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
- [pow/SKILL.md](../pow/SKILL.md)
- [stratum-v2/SKILL.md](../stratum-v2/SKILL.md)
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!