TECHNICAL_DOC // BLOCKCHAIN / HEIGHT
HEIGHT
block-height/">Block height is the sequential index of a block counting from the genesis block.
Genesis is height 0. Each subsequent block increments the height by 1. Height is not stored
in the block header — it is derived from the chain structure. It is used in the coinbase
scriptSig (BIP 34), halving schedules, lock times, and as a human-readable block identifier.
HEIGHT_PROPERTIES
KEY HEIGHTS AND DERIVED VALUES
Genesis block: height = 0
First halving: height = 210,000 (Nov 2012)
Second halving: height = 420,000 (Jul 2016)
Third halving: height = 630,000 (May 2020)
Fourth halving: height = 840,000 (Apr 2024)
Current (~2025): height ≈ 895,000
Halving formula:
subsidy = 50 BTC / 2^(floor(height / 210,000))
At height 840,000: 50 / 2^4 = 3.125 BTC
Last coinbase reward ≈ height 6,930,000 (~year 2140)
Coinbase maturity: coinbase outputs unspendable
for 100 blocks after they are mined
height = mine_height + 100 minimum to spend
Difficulty retarget: every 2016 blocks
height % 2016 == 0 → retarget period
Height in the Coinbase (BIP 34)
BIP 34
BIP 34 required block height to be encoded as the first item in the coinbase scriptSig, making coinbase transactions unique per block and preventing TXID collisions.
Coinbase scriptSig structure (BIP 34, since block 227,931):
OP_PUSH <block_height_LE> [extraNonce] [pool_tag]
Example (height 840,000 = 0x0CD140):
03 40 D1 0C ...
↑ ↑────────
push 3 bytes 840,000 in little-endian
Why it matters:
Pre-BIP34: two blocks at different heights could have
identical coinbase txs → same TXID → UTXO set confusion
BIP34 makes every coinbase uniquely identifiable by height
TERMINOLOGY_INDEX
Block Height
Sequential index from genesis (0). Not stored in header — derived from chain position.
Halving
Every 210,000 blocks, the block subsidy (coinbase reward) is cut in half.
Coinbase Maturity
Coinbase outputs cannot be spent until 100 blocks have been mined after the block they were created in.