Mining is the competitive process of finding a proof-of-work that makes a block header valid under current difficulty. Consensus rules define what blocks and transactions are valid; miners choose among valid templates.
Complete Step 1 // Required reading in the study plan above, then continue here. This closes Protocol Depth. Soft-fork activation was the previous lesson — here focus on PoW and enforcement.
Step 2 — Core idea: PoW, difficulty, who enforces
You may never run an ASIC, but every confirmation UX, reorg assumption, and fee-market discussion depends on mining incentives and consensus enforcement by full nodes.
Analogy: Difficulty is a treadmill that speeds up or slows down so bags of work arrive roughly every 10 minutes. Blocks too fast → treadmill speeds up; too slow → it eases.
Loading diagram…
Approximately every 2016 blocks, difficulty adjusts based on recent timestamps to keep average block time near 10 minutes.
Miners propose blocks; full nodes verify. Economic users running nodes ultimately decide which rules their software accepts. Soft forks (previous lesson) tighten those rules over time — libraries and descriptors must track whether they assume post-fork features (SegWit, Taproot).
Done when: You can separate “miner preference among valid templates” from “consensus validity.”
Step 3 — Try it: mine on regtest (lab)
bitcoin-cli -regtest getblockchaininfo
ADDR=$(bitcoin-cli -regtest getnewaddress)
bitcoin-cli -regtest generatetoaddress 1 "$ADDR"
bitcoin-cli -regtest getblockchaininfoNote height (and difficulty if present). One sentence: how generatetoaddress differs from competing for mainnet PoW.
Common mistakes
- Believing miners can arbitrarily change supply rules without node acceptance
- Ignoring that empty blocks / fee market dynamics affect confirmation times
- Testing only
generatetoaddresson regtest and assuming mainnet propagation matches
Done when: Lab evidence (before/after chain info + generate output + contrast sentence + source) is complete. Complete the chapter quiz when prompted.
Next lesson
Bitcoin Libraries (Development) — keys, addresses, and transaction construction in code.