bitcoin-mining-pow

v2026.09.24

Bitcoin Proof of Work: SHA256d on block header, target, nonce iteration, hashrate, mining math. USE WHEN: explaining mining mechanics, debugging mining software, designing mining-related apps.

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

Proof of Work

Bitcoin's consensus security: miners compete to find a nonce such that SHA256d(block_header) ≤ target. The first to find one broadcasts the block, claiming the subsidy + fees.

Block header (80 bytes)

[4 bytes]   version
[32 bytes]  prev_block hash
[32 bytes]  merkle_root (of all txs)
[4 bytes]   timestamp (unix seconds)
[4 bytes]   bits (compact target encoding)
[4 bytes]   nonce

Hash function: SHA256(SHA256(header)) (SHA256d).

Target & difficulty

bits encodes the target in compact form:

  • bits = 0xMM_NNNNNN where MM is exponent (3 bytes) and NNNNNN is mantissa.
  • target = mantissa × 2^(8*(MM-3)).

difficulty = max_target / current_target. Higher difficulty = harder.

Difficulty adjusts every 2016 blocks (~2 weeks):

  • If actual time < target time (~2 weeks), difficulty increases.
  • If actual time > target time, difficulty decreases.
  • Adjustment factor capped at 4x per epoch.

Hashrate

Number of header hashes per second. Per-block expected time: 10 minutes (protocol target, held by the retarget).

The figures below are a dated snapshot - they age fast, re-check a live source before quoting them.

As of 15 September 2026 (mempool.space mining API):

  • Difficulty: ~127.45T (127,450,789,715,843), set at the retarget of 5 September 2026 (block 965,664, +1.31%).
  • Network hashrate: ~0.9-1.0 ZH/s (10^21 H/s). Monthly means stayed in the 900-940 EH/s band through Q3 2026; the spot reading is a rolling estimate and wandered from 967 to 981 EH/s within 15 September 2026.
  • All-time highs, both still unbeaten: daily-average hashrate ~1.31 ZH/s on 25 October 2025; difficulty 155.97T on 29 October 2025 (block 921,312).

Live sources: getdifficulty / getnetworkhashps RPC, or https://mempool.space/api/v1/mining/hashrate/1m.

Mining algorithm

def mine_block(header, target):
    while True:
        for nonce in range(2**32):
            header[76:80] = pack('<I', nonce)
            h = sha256(sha256(header))
            if h < target:
                return header
        # Exhausted nonce space; bump extra-nonce in coinbase, redo merkle
        bump_extra_nonce()
        recompute_merkle_root()

extranonce lives in the coinbase tx scriptSig, allowing many 2^32 nonce-space sweeps per block template.

Header search space (nonce rolling)

2^32 is only ~4.3 billion hashes; a 200 TH/s ASIC sweeps the whole nonce field in ~21 microseconds. Miners therefore roll four fields, cheapest first:

  • nonce - 32 bits, header-only.
  • nVersion reserved bits - 16 bits (BIP 320) or 24 bits (BIP 323), header-only.
  • timestamp - one increment per second, and must stay inside the consensus bounds (> median-time-past of the last 11 blocks, <= network-adjusted time + 2h).
  • extranonce in the coinbase scriptSig - unbounded, but every bump rebuilds the coinbase and the merkle root, so the controller and not the hash core does the work.

Only the first three are headers-only mining: the device mutates the 80-byte header without touching transactions or merkle trees.

Standardization of the nVersion slice:

  • BIP 310 (Braiins, Informational, Draft since 2018) defines the Stratum mining.configure negotiation and with it the version-rolling extension, through which a pool advertises the version mask a miner may roll.
  • BIP 320 reserves nVersion bits 13-28 (mask 0xe0001fff, 16 bits) for general use and removes them from BIP8/BIP9 signaling.
  • BIP 323 (Matt Corallo, Draft, merged into the BIPs repo 12 May 2026) replaces BIP 320 and reserves bits 5-28 (mask 0xe000001f, 24 bits). 16 bits proved too few; some devices had started taking ~7 bits out of nTime instead, which distorts block timestamps. Future soft forks SHOULD NOT signal on bits 5-28.

Core support, as of September 2026:

  • Core never shipped BIP 320's 16-bit mask.
  • PR #34779 ignores bits 5-28 for BIP9 signaling and for unknown-soft-fork warnings. Merged 3 June 2026, milestoned v32.0.
  • Newest release line is 31.1 (8 July 2026); 32.0 has not shipped, so released nodes still warn on blocks that set those bits.

Subsidy / Halving

Block reward = subsidy + fees. Subsidy halves every 210,000 blocks (~4 years):

  • 2009-2012: 50 BTC.
  • 2012-2016: 25 BTC.
  • 2016-2020: 12.5 BTC.
  • 2020-2024: 6.25 BTC.
  • 2024-2028: 3.125 BTC.
  • 2028-2032: 1.5625 BTC.
  • ...

Total supply asymptote: 21 million BTC.

Mining hardware

  • CPU: 2009-2010, megahash range.
  • GPU: 2010-2013, gigahash range.
  • FPGA: 2011-2013, low gigahash range.
  • ASIC: 2013-present, terahash to petahash range per device.

ASIC manufacturers: Bitmain (Antminer), MicroBT (Whatsminer), Canaan (AvalonMiner), Bitfury, others.

Selfish mining attack

Theoretical attack where a miner with > 25% hashrate withholds blocks to gain disproportionate share. Mitigated by random network delays in practice.

See also

发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

2026年9月24日

分类

未分类

许可证

MIT

源路径

skills/bitcoin/mining/pow

默认分支

main

最新提交

9496306

Tree SHA

fe4e2f1