Dossier 03 Source-led history · Edition 1.0
Bitcoin Halvings and the 21 Million Supply: Code, Blocks and Data
Bitcoin’s monetary schedule is enforced at block height, not announced on a calendar. The familiar 21 million figure is a rounded description of an integer calculation that every validating node can reproduce.

In this dossier
At a glance
Verified record
| Boundary | Height | Maximum subsidy | Header time (UTC) | Maximum daily issuance at target pace | Source |
|---|---|---|---|---|---|
| Launch | 0 | 50 BTC | 3 January 2009, 18:15:05 | 7,200 BTC | [6] Block 0 |
| First halving | 210,000 | 25 BTC | 28 November 2012, 15:24:55 | 3,600 BTC | [7] Block 210,000 |
| Second halving | 420,000 | 12.5 BTC | 9 July 2016, 16:46:13 | 1,800 BTC | [8] Block 420,000 |
| Third halving | 630,000 | 6.25 BTC | 11 May 2020, 19:23:43 | 900 BTC | [9] Block 630,000 |
| Fourth halving | 840,000 | 3.125 BTC | 20 April 2024, 00:09:27 | 450 BTC | [10] Block 840,000 |
Maximum, issued, spendable, and liquid supply are not synonyms
The consensus rule defines the largest subsidy a valid block may claim. Summing those maxima gives a theoretical allocation schedule. A miner may claim less than the maximum, however, and historically some have. The genesis output is also not spendable through ordinary validation. For those reasons, the quantity actually created as usable transaction outputs is below the headline maximum.
Lost keys introduce a different distinction. A coin can remain a valid unspent output while being practically unrecoverable, but the blockchain cannot generally prove that nobody retains its key. ‘Circulating supply’ and ‘liquid supply’ therefore depend on behavioral assumptions, not only consensus. A rigorous supply page must state which quantity every number represents instead of presenting a single total as all four.
A block-height quotient selects the subsidy era
Bitcoin Core divides the candidate block height by the mainnet halving interval, 210,000. Integer division yields era zero through height 209,999, era one beginning at 210,000, and so on. The initial 50 BTC amount, represented in satoshis, is then shifted right by the number of completed intervals. Each shift divides the integer by two and discards any fractional satoshi.
The function returns zero after 64 shifts. That guard prevents undefined behavior in the implementation and fixes the long-run result that subsidies eventually end. Validation compares the coinbase transaction’s created value with the permitted subsidy plus transaction fees. A miner can claim less, but a block claiming more is invalid to nodes enforcing the rule.
The halving trigger is height, while the date is an outcome
Bitcoin targets an average interval of ten minutes by adjusting mining difficulty every 2,016 blocks. Individual block times are probabilistic, and entire 210,000-block eras can finish earlier or later than a four-year calendar approximation. The halving occurs when the boundary-height block is validated, regardless of an anniversary or market schedule.
Header timestamps are the network’s recorded times, not laboratory measurements of the physical instant a hash was found. They are nevertheless the reproducible dates attached to the accepted blocks. At the target rate of 144 blocks a day, the fourth halving reduced expected maximum issuance from roughly 900 to 450 BTC a day; actual daily totals vary with block production and coinbase claims.
Integer satoshis make the exact maximum smaller than 21 million
The geometric description—10.5 million BTC in the first 210,000-block era, then half as much in each later era—approaches 21 million. Bitcoin does not allocate infinitely divisible units, though. Subsidies are integers counted in satoshis, and right shifts discard remainders once successive halvings reach odd values. Summed under the current function, the maximum is 20,999,999.9769 BTC.
BIP42 documents why the 64-shift guard matters. Earlier C++ behavior could make an overlong schedule repeat after enough shifts rather than remain at zero. The correction preserved the intended finite schedule long before those heights could be reached. ‘21 million’ remains a useful conventional label, provided the exact implementation result is available when precision matters.
A halving constrains creation; it does not set price
At a boundary, existing outputs do not change and no balances are divided. Transaction rules, the 100-million-satoshi unit, and previously created coins remain intact. The direct change is narrower: a candidate block may create at most half the previous subsidy. Miner revenue from fees remains separate and can rise or fall with demand for block space.
Market prices around halvings reflect expectations, liquidity, leverage, macroeconomic conditions, and many other variables. A chart that aligns prices with four event dates can describe co-movement but cannot isolate causation. Historical analysis should publish its window, currency, venue, and adjustment method and should not present a recurring visual pattern as a deterministic protocol effect.
The schedule settles issuance but leaves the security budget to a market
A miner’s block revenue consists of the subsidy it claims plus transaction fees. As the permitted subsidy declines, fees must comprise a larger share if total revenue is to remain constant in bitcoin terms. The protocol specifies neither a future fee level nor a required amount of hash power. Both emerge from users’ demand for settlement and miners’ costs and expectations.
That distinction turns the long-run security budget into an open economic question rather than a missing line of code. Higher fee revenue can support more expenditure on proof-of-work; lower revenue can reduce it, while hardware efficiency, energy markets, bitcoin’s exchange value, and miner strategy also matter. The fixed supply path is deterministic. The security purchased by future fee markets is not.
The consensus subsidy calculation
Condensed from the pinned Bitcoin Core implementation; the omitted parameter supplies the 210,000-block interval for mainnet.
CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& params)
{
int halvings = nHeight / params.nSubsidyHalvingInterval;
if (halvings >= 64)
return 0;
CAmount nSubsidy = 50 * COIN;
nSubsidy >>= halvings;
return nSubsidy;
}Evidence discipline
What the record establishes
Mainnet’s subsidy interval is 210,000 blocks and the initial subsidy is 50 BTC.
[2] GetBlockSubsidy implementation · [3] Mainnet consensus parametersThe maximum subsidy sum under the current implementation is 20,999,999.9769 BTC.
[2] GetBlockSubsidy implementation · [4] Subsidy-limit testBlock 840,000’s header time is 20 April 2024 at 00:09:27 UTC and it begins the 3.125 BTC era.
[10] Block 840,000 · [2] GetBlockSubsidy implementationFees must become a larger fraction of miner revenue as subsidies decline if all other factors are held equal.
[2] GetBlockSubsidy implementation · [1] Bitcoin white paperLimits
What this record does not establish
- The maximum subsidy sum is not the same as spendable or recoverable supply; the genesis output, underclaims, provably unspendable outputs, and lost keys are separate adjustments.
- A header timestamp is a consensus-bounded miner-supplied value, not an independently certified wall-clock observation.
- Expected daily issuance assumes the ten-minute target average; actual block production and claimed subsidies vary.
Source register
Primary records and technical references
Retrieved and reviewed 8 August 2026- Bitcoin white paperSatoshi Nakamoto · primary specification
The original incentive design and expectation that fees can replace issuance.
Open source - GetBlockSubsidy implementationBitcoin Core · primary source code
The height division, 64-shift guard, initial amount, and right-shift calculation.
Open source - Mainnet consensus parametersBitcoin Core · primary source code
The mainnet halving interval and genesis parameters.
Open source - Subsidy-limit testBitcoin Core · primary test code
Bitcoin Core’s validation tests check halving behavior, the zero-subsidy boundary, and the summed subsidy limit.
Open source - BIP 42Bitcoin Improvement Proposals · primary specification
The rationale for ending subsidy after 64 halvings rather than allowing implementation-dependent shift behavior.
Open source - Block 0Blockstream block explorer · primary blockchain record
Genesis header data and the nominal 50 BTC output.
Open source - Block 210,000Blockchain.com explorer · primary blockchain record
The first boundary block and its header time.
Open source - Block 420,000Blockchain.com explorer · primary blockchain record
The second boundary block and its header time.
Open source - Block 630,000Blockchain.com explorer · primary blockchain record
The third boundary block and its header time.
Open source - Block 840,000Blockchain.com explorer · primary blockchain record
The fourth boundary block and its header time.
Open source
Cite this dossier
A stable, versioned reference
Degrees of Satoshi editorial project. “Bitcoin Halvings and the 21 Million Supply: Code, Blocks and Data.” Degrees of Satoshi, version 1.0, 8 August 2026. https://degrees-of-satoshi.pages.dev/history/bitcoin-halvings-and-supply/
Contemporary primary records are preferred. Protocol behavior, business failures and government policy are treated as separate evidence categories. Interpretive claims are explicitly bounded; corrections should cite a source at least as strong as the record being revised.
Read the research standards