BEGINNER_DOC_004 // BEGINNERS / DIFFICULTY
DIFFICULTY
Bitcoin's difficulty is a measure of how hard it is to find a valid block-hash/">block hash.
It adjusts automatically every 2,016 blocks to keep the average time-10-minutes/">block time at 10 minutes,
regardless of how much computing power joins or leaves the network.
THE_TARGET — WHAT_MINERS_MUST_BEAT
THE GOAL — FIND A HASH BELOW THE TARGET
Target: 0000000000000000000320a70000000000000000000000000000000000000000
Block hash must be LESS THAN this number.
The more leading zeros required, the harder it is to find.
Low difficulty: 00ffffff... ← easy, many hashes qualify
High difficulty: 00000000000000000003... ← very hard, very few hashes qualify
HOW MINERS FIND IT
THE MINING LOOP
nonce = 0
loop:
candidate_hash = HASH256(block_header with this nonce)
if candidate_hash < target:
BLOCK FOUND ✓ — broadcast to network
else:
nonce = nonce + 1
try again
DIFFICULTY_ADJUSTMENT — EVERY_2016_BLOCKS
The Retargeting Algorithm
AUTO-ADJUST
Every 2,016 blocks (~2 weeks), every node independently calculates a new target based on how
long the last 2,016 blocks actually took vs the expected 20,160 minutes.
Expected time: 2016 blocks × 10 minutes = 20,160 minutes
If blocks came faster (e.g. 8 min avg):
Actual time: 16,128 minutes
Ratio: 16,128 / 20,160 = 0.8
New target = old target × 0.8 ← HARDER (smaller target)
If blocks came slower (e.g. 12 min avg):
Actual time: 24,192 minutes
Ratio: 24,192 / 20,160 = 1.2
New target = old target × 1.2 ← EASIER (larger target)
The adjustment is capped at 4× in either direction to prevent extreme swings. This is a key piece of Bitcoin's self-regulating design.
Why 10 Minutes?
DESIGN CHOICE
Satoshi chose 10 minutes as a tradeoff between fast confirmations and giving blocks enough
time to propagate across the global network before another block is found.
Too fast (<1 min): Network doesn't have time to receive the block
before miners find the next one → many orphan blocks → unstable
Too slow (>60 min): Payments take too long to confirm → poor user experience
10 minutes: reasonable propagation time + acceptable wait for users
DIFFICULTY_VS_HASHRATE
NETWORK POWER
Hashrate is the total number of hash calculations the entire Bitcoin network performs per second.
As more miners join, hashrate rises — so blocks would come faster. Difficulty rises to compensate.
2009: ~7 MH/s (megahashes per second)
2013: ~1,000 TH/s (terahashes)
2020: ~120 EH/s (exahashes)
2024: ~600 EH/s (exahashes — 600 quintillion hashes per second)
Every time hashrate doubles, difficulty doubles to maintain 10-minute blocks.
The difficulty has increased by more than 10 trillion times since the Genesis Block. This represents the enormous growth in mining hardware over 15 years.
KEY_FACTS
Adjustment period
2,016 blocks (~2 weeks)
Target block time
10 minutes
Max adjustment per period
4× harder or 4× easier
Current network hashrate (2024)
~600 EH/s
TERMINOLOGY_INDEX
Difficulty
A measure of how hard it is to find a valid block hash. Higher difficulty = more leading zeros required.
Target
The maximum value a block hash can be. Miners must find a hash below this number.
Hashrate
The total computing power of the Bitcoin network, measured in hashes per second (H/s).
Retarget
The automatic adjustment of the difficulty every 2,016 blocks to maintain 10-minute block times.
Bits
The compact 4-byte encoding of the target stored in each block header.
Proof of Work
The computational work miners do to find a valid hash. Provides security through energy expenditure.