There's a romantic idea about Bitcoin's chain: that it's a wall of human messages. Proposals, memorials, "Vahe was here," pizza jokes, the occasional protest note pinned into the world's most expensive append-only log.
I wanted to know if that was actually true. So I counted. Every OP_RETURN output, from the genesis block to block 958,893, no sampling.
The answer is no, and it's not close.
The one number
All human-readable OP_RETURN text ever mined into Bitcoin: 3,827,227 outputs.
Runes, one token protocol, in its own era: 171,114,058 OP_RETURN outputs.
That's a ratio of 44.7 to 1. One machine protocol, in a single two-year stretch, wrote about 45 times more to the chain than every human-readable message in Bitcoin's entire history combined.
The evidence, per era
I split the chain into four eras by block height, not by any label stored in my database. Height boundaries are canonical and anyone can check them against a node, so the result doesn't depend on trusting my extractor's tags.
| era | height range | boundary event |
|---|---|---|
| pre-ordinals | 0 – 767,429 | before the first inscription |
| ordinals | 767,430 – 779,831 | inscription #0 to BRC-20 deploy |
| boom-brc20 | 779,832 – 839,999 | BRC-20 ordi deploy to Runes |
| runes | 840,000 – 958,893 | Runes launch at the halving |
Then I counted the full population of OP_RETURN outputs in each era. Human-readable text, Runes token messages, and binary blobs (Veriblock and OMNI proof-of-proof timestamping, mostly).
| era | total OP_RETURN | human text | human % | Runes | Runes % | binary | binary % |
|---|---|---|---|---|---|---|---|
| pre-ordinals | 51,965,944 | 861,532 | 1.66% | 7 | 0.00% | 51,103,723 | 98.34% |
| ordinals | 261,767 | 32,189 | 12.30% | 3 | 0.00% | 229,544 | 87.69% |
| boom-brc20 | 2,980,954 | 402,161 | 13.49% | 40,251 | 1.35% | 2,538,248 | 85.15% |
| runes | 177,474,762 | 2,531,345 | 1.43% | 171,114,058 | 96.42% | 3,828,604 | 2.16% |
Here's the honest twist
When I started, I expected to find a fall. A golden human era that machines later ate. That's the clean story, and it's wrong.
Look at the human % column again. Human text was never the majority of OP_RETURN. Not once. Even at its absolute peak, the boom-brc20 era, human-readable messages were only 13.5% of data outputs. The chain was machine-dominated in every single era.
What changed isn't who's in charge. Machines always were. What changed is the flavor of machine, and the scale.
Before ordinals, 98.3% of OP_RETURN was binary timestamping. Veriblock and OMNI stuffing proof-of-proof blobs into the chain. Not prose, not tokens, just machine-to-machine attestation data. Then Runes launched at the 2024 halving and took the throne. In the runes era, 96.4% of every OP_RETURN output is a Runestone.
And the volume went vertical. The runes era alone, about 119,000 blocks, holds 177.5M OP_RETURN outputs. That's more than 3x the entire prior 767,000-block history put together, which came to roughly 55.2M. Discretionary write demand didn't grow. It exploded, and Runes is basically all of it.
So if you want the real headline, it's not "humans got pushed out." It's this: Bitcoin's data-carrier space was always bought by machines, and the marginal buyer today is a machine minting a token, not a person leaving a note.
How I checked it against a node
A database can lie. So I cross-checked both sides against a real Bitcoin node with txindex on.
Human side, is it real prose? I pulled one row the census flagged as human text: a vout at height 840,000 that decoded to "Vahe was here." Ran getrawtransaction on it. The node returned a nulldata output with asm OP_RETURN 56616865207761732068657265, and that hex decodes exactly to Vahe was here. Real human message, confirmed by the node, not misclassified protocol junk.
Machine side, are those really Runestones? I pulled block 840,000, the Runes launch block itself, with getblock(840000, 3). It has 3,050 transactions and 2,033 OP_RETURN outputs. Of those, 2,004 (98.6%) begin with OP_RETURN OP_13, which is the Runestone magic. At the very first block of the era, roughly 99% of OP_RETURN outputs were already token protocol. That's an independent confirmation my Runes classification isn't inflated.
The falsifier
I'll tell you exactly what would break this claim, because a finding you can't falsify isn't worth much.
The machine-dominance claim fails if either:
- A byte-level recount of the 171.1M Runes outputs shows more than 20% are non-Runestone or human-readable, or
- My 3.83M human-text count undercounts real human OP_RETURN prose by more than 10x, enough to pull the 45:1 ratio down below about 4:1.
Both are testable against a node. The block-840,000 spot check already pushed on condition 1 and it held at 98.6%.
Limitations, because they matter
I deliberately left witness inscriptions out of the headline. The witness content-type population is dominated by text/plain at 111.0M items, but that MIME bucket mixes genuine prose with BRC-20 mint JSON, since BRC-20 mints get served as text/plain too. Splitting that cleanly needs a prose classifier I don't fully trust yet, so any human-vs-machine witness ratio would be soft. The OP_RETURN lead needs no such caveat, because Runes is a distinct opcode-tagged protocol you can verify per output. And folding BRC-20's 111M onto the machine side would only make the thesis stronger, so leaving it out is the conservative call.
A couple of smaller notes. The 40,251 Runes-tagged outputs in the boom era, before the official launch, are OP_13 pushes the detector caught early. Test and edge cases, immaterial to the ratio. And the era boundaries are height-based approximations of the real protocol-launch blocks. A shift of a few hundred blocks either way doesn't move any percentage that matters.
Why I built this
This is one exhibit out of a full four-channel census of what Bitcoin actually stores. OP_RETURN, witness inscriptions, coinbase tags, and datasets, all mined gap-free to the chain tip and cross-checked against a node. The angle is proof-of-work primitives and on-chain data, treating blockspace as the scarce, PoW-secured resource it is and asking who's actually spending it.
The live chart with the per-era breakdown is here:
https://powforge.dev/museum/charts/human-vs-machine.html
The rest of the museum is here:
https://powforge.dev/museum/
If you want to poke at the falsifier, grab a node with txindex on and start with block 840,000. That's where the flood begins.
0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.