Every coin lives in a script. Watch the scripts change.
Each unspent output on Bitcoin is locked by a script of some type. Plot the share of each type across the whole chain and the protocol’s own history draws itself: the P2PK era of 2009, the P2PKH takeover, P2SH in 2012, SegWit in 2017, and Taproot in 2021.
What you are looking at. The chart below is a 100%-stacked area. The horizontal axis is block height, bucketed every 10,000 blocks; the vertical axis is the share of outputs created in that bucket that used each script type. It answers one question at every point in the chain: when a new coin was locked up here, what kind of lock did it get?
This is not a projection or a model. Each bucket is a direct count from a full-node census — every block fetched, every output classified by its scriptPubKey.
Coverage: blocks 0–956,419 (Jan 2009 – ~Jun 2026) · census complete The full-chain census is finished, so this exhibit now runs the entire chain — from the genesis P2PK era through the modern SegWit/Taproot mix and the inscription-era surge in OP_RETURN data outputs.
How to read it. At the far left, nearly the entire column is one color: in the first 10,000 blocks, 99.6% of outputs were pay-to-public-key (P2PK) — Satoshi paying directly to raw public keys, including the coinbase rewards mined by the earliest participants. Pay-to-public-key-hash (P2PKH, “1…” addresses) overtakes it within the first two years. The three dashed markers are protocol upgrades that each opened a new lock type: P2SH (BIP16, activated April 2012), SegWit (P2WPKH / P2WSH, activated August 2017), and Taproot (P2TR, activated November 2021). Each one carves out a new band that grows from the moment it becomes spendable.
Verify it yourself. These numbers come from a reproducible census, not a third-party API. The extractor classifies every output of every block on a full node; the bucket counts are regenerable with scripts/census/chain-census.js against your own node. Nothing here requires trusting this page — re-run the sweep and you get the same shape.
Source: chain-census.db, extractor script_type_histogram, 96 buckets covering heights 0–956,419 (Jan 2009 – ~Jun 2026, the full chain). Each bucket records the count of outputs by script type across its 10,000 blocks; the chart shows each type as a percentage of that bucket’s total classified outputs.
Dates are the timestamp of each bucket’s first block, straight from the chain — so the year guides are real, not interpolated. The x-axis itself is block height, not calendar time, so equal horizontal steps are equal block counts, not equal durations (early blocks span more wall-clock time per bucket).
“Other” folds together nulldata (OP_RETURN data carriers), bare non-standard scripts, and unknown witness versions. For most of the chain each of these stayed under ~1%, but honesty requires flagging the modern exception: from ~2023 the inscription/OP_RETURN era pushes nulldata outputs into the tens of percent, so the Other band swells at the right edge — that growth is real data-carrier outputs, not a rounding artifact. Coverage now runs the full chain (0–956,419); the census is complete, not still sweeping.
One opcode, thirteen years, 233 million writes — and the mix flips overnight.
OP_RETURN is Bitcoin’s sanctioned data channel — a provably-unspendable output you can pack a few dozen bytes into. Count every one across the chain and a second history appears: not who paid whom, but what people and machines wrote into the ledger, and when.
What you are looking at. This chart is an absolute stacked area — the total number of OP_RETURN outputs created in each 10,000-block bucket, split by payload class. Unlike Exhibit 01, the vertical axis is a raw count, not a share, so the height is the volume: the mountain in 2019 is real traffic, not a shift in proportion.
The headline is a reversal, and the block range is what makes it honest. Run the full chain — blocks 220,000–959,999, 232.68 million OP_RETURN writes — and the channel splits 73.6% Runes / 24.8% binary / 1.6% human text. But that single split hides the real story, because the mix inverts at exactly one block. Before block 840,000 (the decade to April 2024, 55.2M writes) the channel is 97.6% opaque binary — machine-to-machine payloads, overwhelmingly the Veriblock timestamp-anchoring flood of 2018–2020, with human-readable text a thin 2.4% and named protocols (Counterparty, RSK, Stamps) a rounding error under 0.001%. Then the runestone protocol launches at block 840,000 and floods the channel: the post-840,000 window is 96.4% Runes. One protocol, live for two years, wrote 171 million records — more than the entire binary era managed over the prior 620,000 blocks.
Coverage: op_return heights 220,000–959,999 (Mar 2013 – ~Jun 2026) · census complete This exhibit now runs the entire chain to the tip. The dashed Runes launch marker sits on block 840,000 (April 2024) — the moment the channel inverts. Read the left half as the binary/Veriblock decade and the right half as the Runes flood; the full-chain split (73.6% Runes / 24.8% binary / 1.6% text) is a blend of those two eras, which is why the block range always travels with the number. State either window and you get a true sentence; state a percentage without a range and you get a misleading one.
How to read it. Each column is one 10,000-block bucket; its height is how many OP_RETURN outputs were created in those blocks. The channel is nearly empty until 2014 — the dashed OP_RETURN std marker is Bitcoin Core 0.9 (March 2014), which made a bounded OP_RETURN a relay-standard output for the first time. Usage climbs, then erupts in blue: the Veriblock peak marker sits on block ~570,000 (spring 2019), where a single bucket carries 6.49 million binary outputs — one project’s proof-of-proof anchoring, not a surge of human writing. The flood recedes after 2020. Then the third marker, Runes launch at block 840,000 (April 2024), sits under a purple wall that dwarfs everything left of it: the launch bucket alone carries 26.4 million outputs, of which 26.2 million are Runes — roughly four times the entire Veriblock peak, in one 10,000-block window. From there Runes dominates every bucket to the tip, and the once-total binary band shrinks to a sliver at the base.
Verify it yourself. These counts come from a reproducible full-node census, not an indexer API. The generator sums two row shapes honestly — per-event rows for text and named protocols, plus the aggregated per-1,000-block rows that hold the compacted binary counts — so no machine-write is double-counted or dropped. Regenerate with scripts/census/build-wing2-data.js against the same chain-census.db.
Source: chain-census.db, extractor op_return, 73 buckets covering heights 220,000–959,999 (the full chain to the current tip). Two storage shapes are counted together: per-event rows (text, counterparty, rsk, stamp, meta, kept binary-sample) counted directly, and aggregate rows (binary-agg, runes-agg) whose real event count lives in meta.count — a data-compaction step that shrank tens of millions of binary and Runes rows to one row per 1,000 blocks without losing the totals. Summing only the per-event rows would undercount the channel by ~98%, so both shapes are mandatory; the Runes band is the runes-agg total, now broken out on its own rather than folded into a “named protocol” catch-all.
“Binary” means non-printable machine payloads the extractor does not attribute to a named protocol, though the 2018–2020 mass is well-documented as Veriblock proof-of-proof. “Runes” is the runestone protocol, identified by its OP_RETURN OP_13 marker; it activates at block 840,000. “Text” is any printable push carrying no recognized marker — memos, messages, and undetected protocols all land here, so it is an upper bound on genuinely human writing. Dates are each bucket’s first available block timestamp, straight from the chain; the x-axis is block height, so equal steps are equal block counts, not equal wall-clock time.
Why the block range is load-bearing. The composition of this channel inverts at block 840,000, so any single percentage is only true for a stated window: the pre-840,000 decade is 97.6% binary, the post-840,000 window is 96.4% Runes, and the full-chain blend is 73.6% Runes / 24.8% binary / 1.6% text. The ~40,000 Runes-tagged events that appear in the 830,000–839,999 bucket, just before activation, are marker collisions (non-runestone transactions that happen to match the OP_13 pattern), not valid runestones — a 0.07% edge artifact of that pre-launch window. This is a v2 exhibit, now extended to the full chain, built to the same pattern as Exhibit 01.
Before OP_RETURN, and long after, people hid data in fake public keys.
A bare multisig output lists a handful of “public keys.” Nothing forces those keys to be real. Swap the bytes of a curve point for the bytes of a file and the output becomes storage — permanent, unprunable storage. This is how the Bitcoin whitepaper itself was embedded in the chain in 2013, and how Counterparty and, a decade later, Bitcoin Stamps moved millions of payloads. Count every one and a third history appears.
What you are looking at. Like Exhibit 02 this is an absolute stacked area — the number of data-carrying bare-multisig outputs created in each 10,000-block bucket, split by encoding class. The height is raw volume, so the towers are real traffic, not shifting proportions.
Across the full chain — blocks 210,000–959,999 — the census finds 2,926,841 data-carrying bare-multisig outputs. Extending past the old 2023 cutoff flips which class leads: the largest is now unclassified data at 67.0% — bare-multisig embeds that match no known protocol signature, most of it a post-2023 surge. Counterparty’s ARC4-obfuscated encoding (which Bitcoin Stamps also ride) is 27.9%, cleartext Counterparty 4.1%, and the raw whitepaper-style file drops that started it all in 2013 are just 1.0%. The single tallest bucket is no longer the 2014 Counterparty era or even the famous Stamps launch — it is block 820,000–829,999 (December 2023), 382,788 outputs, three-quarters of them unclassified, edging out the March 2023 Stamps peak at block 780,000 (206,438 outputs, essentially all ARC4).
Coverage: bare_multisig heights 210,000–959,999 (Dec 2012 – ~Jun 2026) · census complete This exhibit now runs the entire chain to the tip. There is still no separate “Stamps” band, on purpose: Stamps have no distinct wire format — they are Counterparty ARC4, so the 2023 explosion lands inside that green class. The full-chain view corrects an earlier guess: this channel did not go quiet after the 2023 OLGA / P2WSH migration moved classic Stamps into the witness. Instead a large stream of unclassified bare-multisig data keeps arriving through 2026 — some likely undetected Stamps-family variants, some other embedders — and it is now the dominant class in the channel.
How to read it. Each column is one 10,000-block bucket; its height is how many data-carrying bare-multisig outputs were created in those blocks. The first dashed marker, Whitepaper ’13, sits on block 230,009 — the transaction that packed the Bitcoin PDF into 945 fake 1-of-3 keys. Counterparty ’14 marks the XCP burn that launched the protocol; its cleartext CNTRPRTY era fills the 2014 hump before the encoder switched to ARC4 obfuscation. The tower at Stamps ’23 (block 779,652) is Bitcoin Stamps reusing that same Counterparty encoder — a green ARC4 spike of ~206,000 outputs. But it is no longer the tallest: immediately to its right, at block ~820,000 (December 2023), a still-larger tower of ~383,000 outputs rises — and it is mostly grey, unclassified bare-multisig data, not ARC4. From there to the 2026 tip the channel keeps carrying this unclassified data, which is why the grey band, not green, runs the frontier.
The cost is different from Exhibit 02. OP_RETURN outputs are provably unspendable — a full node discards them from the UTXO set, so the data is cheap to carry. These fake-multisig outputs are the opposite: indistinguishable from real spendable coins, they sit in the UTXO set forever, because no node can prove the “keys” will never be signed for. That is the honest cost of this channel — not block space, but permanent state that every node must keep. Bitcoin’s two data channels, side by side: one unspendable and cheap, one spendable-looking and UTXO-bloating.
Verify it yourself. These counts come from the same reproducible full-node census, not an indexer API. Every output is classified by re-parsing the raw OP_m … OP_n OP_CHECKMULTISIG template — including nonstandard outputs Core rejects, which is the only way the whitepaper’s 65-byte raw-byte keys are caught at all. Regenerate with scripts/census/build-wing3-data.js against the same chain-census.db.
Source: chain-census.db, extractor bare_multisig, 75 buckets covering heights 210,000–959,999 (the full chain to the current tip). Each row is one data-carrying output; there is no aggregation to reconcile (unlike Exhibit 02’s compacted binary rows). Four encoding classes: whitepaper-raw (65-byte raw file bytes, no encryption, incl. the 2013 whitepaper block), cntrprty-clear (cleartext CNTRPRTY marker), cntrprty-arc4 (ARC4-obfuscated Counterparty — and Stamps, which share the encoder), and unknown-data-multisig (bare-multisig data matching no known signature).
“Unknown” at 67.0% is a genuine residual, not a rounding bucket: it is dust-valued bare-multisig output that carries non-key bytes but does not decode to a recognized protocol. Some is undetected Counterparty/Stamps variants; some is other embedders. It is an honest “we do not know” band — and on the full chain it is now the largest class, because a post-2023 surge of unclassified data-multisig outpaced the ARC4/Stamps era. Dates are each bucket’s first available block timestamp, straight from the chain; the x-axis is block height, so equal steps are equal block counts, not equal wall-clock time.
The full-chain census is complete to the current tip; this exhibit now renders the whole 210,000–959,999 range. An earlier version stopped at ~2023 and predicted the channel would fall off after the OLGA / P2WSH migration moved classic Stamps into the witness. The completed sweep contradicts that: bare-multisig data-carrier volume did not die — a large unclassified stream keeps arriving through 2026 — so this v3 exhibit is corrected to show it. Built to the same pattern as Exhibits 01 and 02.
Coinbase-tag pool attribution — a lower bound, and the story is in what it cannot see.
Every block’s coinbase transaction can carry a short tag naming the pool that mined it. Read that tag across the whole chain, genesis to 2025, and one contrast dominates: in 2014 the most powerful pool was invisible; today the top three or four pools sign almost every block, in the open. Attribution went from useless to reliable — and concentration is real in both eras. This chart is honest about the gap, because the gap is where Bitcoin’s most dangerous moment hides.
What you are looking at. A 100%-stacked area, like Exhibit 01: the horizontal axis is block height in 10,000-block buckets, the vertical axis is the share of blocks in that bucket whose coinbase tag attributes them to each pool. It answers one question at every point in the chain: when a block was mined here, whose signature — if any — did it carry?
This is coinbase-tag attribution, not hashrate share, and that distinction is the whole exhibit. A pool appears here only if it tagged its blocks. In the early years most did not: the broad grey Unknown band is untagged blocks, and it is the majority of the chart through 2014. Coinbase-tag attribution is therefore a lower bound on concentration — it can only undercount. It becomes reliable only in the modern era, when tagging turned near-universal.
Coverage: coinbase_pool census COMPLETE through block 956,682 (Jan 2009 – ~Jun 2026) · 96 buckets This is the full-chain exhibit: the coinbase-tag sweep is finished to the current chain tip, so the entire modern-era oligopoly is on the chart. The final bucket covers heights 950,000–956,682 (6,683 blocks) — a short 10k-window only because that is where the chain currently ends, not because anything is still being swept.
The blank spot — read this first. Bitcoin’s most dangerous centralization event does not appear on this chart. In June–July 2014 (blocks ~305,000–312,000) the pool GHash.IO reached an estimated ~51% of network hashrate — the only time a single miner has credibly held a majority. On this chart that window is a blank: GHash’s own tag maxes at 10.5% in early 2014 (bucket 280,000) and then vanishes entirely, while the Unknown band swells to ~77%. GHash mined its dominant blocks without an identifiable coinbase tag. The only on-chain echo of the crisis is a protest — other miners embedded the message /2av0id51pct/ (“to avoid 51%”) in two dozen-plus coinbase tags across blocks 300k–312k. That absence is the lesson: on-chain archaeology has limits, and a coinbase tag is a signature a miner can simply decline to sign.
The contrast — two eras, one chart. Watch the grey Unknown floor. In 2014’s majority-scare window it swells to ~77% of blocks (bucket 310,000, Jul 2014) and the dominant pool is nowhere to be seen. Then, from ~2016 on, tagging turns near-universal and Unknown collapses. By the most recent full 10,000-block bucket (910,000, Aug 2025) Unknown is just ~4%, and a visible oligopoly signs in the open: Foundry USA ~29%, AntPool ~18%, ViaBTC ~12%, F2Pool ~11% — the top four pools sign roughly 70% of all blocks. Attribution went from useless to reliable. But note the lesson cuts both ways: concentration is real in both eras — a hidden majority in 2014, an open oligopoly today.
How to read it. Each column is one 10,000-block bucket; the grey Unknown floor is the share of blocks with no recognized pool tag. It fills the entire column at genesis (nobody tagged), stays the majority through 2014, and only recedes as pooled, tagged mining takes over — the first tagged pools here are Eligius and BTC Guild around 2011, and by the modern era Unknown is a thin sliver. Because a pool must opt in to be counted, every named band is a floor, never a ceiling.
Verify it yourself. These shares come from a reproducible full-node census, not a third-party pool tracker. The extractor reads each block’s coinbase tag and matches it against a public pool-signature table; untagged or unmatched blocks fall to Unknown. Regenerate with scripts/census/build-exhibit04-data.js against the same chain-census.db.
Source: chain-census.db, extractor coinbase_pool, 96 buckets covering heights 0–956,682 (Jan 2009 – ~Jun 2026, the full chain to the current tip). Each block is attributed to at most one pool by matching its coinbase-input tag against a public pool-signature table; blocks with no tag, or a tag matching no known pool, are counted as Unknown. The chart shows each pool as a percentage of the bucket’s total blocks. Pools whose peak bucket share never crosses 8% fold into Other pools to keep the stack legible; every pool that ever crossed that line — including GHash.IO — draws its own band.
This is a lower bound, and the Unknown band is the honest residual, not noise. In 2014 the Unknown share climbs past 70% — not because that much hashrate was un-pooled, but because tagging was not yet universal and at least one dominant pool (GHash.IO, during its majority scare) deliberately did not tag. Do not read the Unknown band as “solo miners”; read it as “the limit of what the coinbase tag can tell us.” Attribution becomes near-complete only in the modern era — by 2025 Unknown is ~4%, so the coinbase tag is a reliable read of pool concentration and the lower bound is nearly tight. The GHash blank spot is the reminder that it was not tight in the era it mattered most.
Dates are each bucket’s first block timestamp, straight from the chain; the x-axis is block height, so equal steps are equal block counts, not equal wall-clock time. This is the full-chain exhibit built to the same pattern as Exhibits 01–03; it carries the modern-era Foundry / AntPool / F2Pool / ViaBTC / SpiderPool oligopoly the older short-range view could not show. Coverage is complete through the current chain tip at block 956,682 (~Jun 2026); the only short bucket is the last one (950,000–956,682, 6,683 blocks), which is a partial 10k-window simply because the chain ends there, not because any sweep is unfinished.