Ordinals, Inscriptions & Data on Bitcoin
In early 2023 something happened that almost no one had designed for: people began embedding images, text, and even small programs directly into Bitcoin blocks, and treating individual satoshis as collectible NFTs. No new opcode was added. No soft fork was activated for it. It emerged entirely from creative use of rules that already existed — which makes Ordinals one of the best case studies in what “permissionless” really means.
Ordinal theory: numbering the satoshis
Section titled “Ordinal theory: numbering the satoshis”Bitcoin’s base unit is the satoshi (1 BTC = 100,000,000 sats), and normally all sats are interchangeable — pure fungible money. Ordinal theory is a convention layered on top that assigns every satoshi a serial number based on the order it was mined, and tracks it as coins move:
sat #0 ─ the very first satoshi ever mined (genesis)sat #1, #2, ... ─ numbered in mining order, forever │ ▼ first-in-first-out tracking through every transaction lets you point at "this specific sat" and follow itCrucially, the Bitcoin protocol knows nothing about this. Ordinal numbers exist only in the software that chooses to compute them. Consensus still sees fungible sats; ordinal theory is an overlay that people agree to honor — not a rule the network enforces.
Inscriptions: attaching data to a sat
Section titled “Inscriptions: attaching data to a sat”An inscription attaches arbitrary content (a JPEG, some text, JSON) to a particular sat. The mechanism reuses two upgrades you’ve already met:
- SegWit’s witness discount — witness bytes count as only ¼ toward block weight (see The UTXO set vs the chain and SegWit & Taproot), making bulk data comparatively cheap to store.
- Taproot’s script-path spend — lets you commit to a script containing the data and reveal it
later, hidden behind an
OP_FALSE OP_IF ... OP_ENDIF“envelope” that the interpreter skips.
Taproot witness: <signature> <script>: OP_FALSE OP_IF "ord" <content-type> <... the actual image bytes ...> OP_ENDIF ... real spending conditions ...The data lives in the witness of a Taproot transaction. This is exactly the “anyone-can-spend”-style cleverness Bitcoin is full of: no feature was added for inscriptions; they exploit the general-purpose flexibility Taproot already shipped.
The block-space debate
Section titled “The block-space debate”Inscriptions reignited an old argument with real heat on both sides:
"It's spam" "It's valid use"───────────────────────── ─────────────────────────bloats blocks with JPEGs they pay the going fee rate like anyonecompetes with payments for space block space is an open market, not curatednot what Bitcoin is "for" permissionless means no gatekeeper decides "for"The deep point is that both sides are appealing to the same property. Bitcoin has no admin who decides what a transaction is “allowed” to express; you pay the fee market rate and your bytes go in. That’s precisely the censorship-resistance that makes it valuable for payments — and it can’t be selectively switched off for data you personally dislike without undermining the very neutrality that protects everyone. Inscriptions are a live demonstration that what people do with a protocol is not limited to what its designers imagined.
The thread
Section titled “The thread”How does this help untrusting strangers agree on one ledger? It’s the flip side of the thread. Bitcoin’s neutrality means strangers don’t have to agree on what the ledger is for — only on which transactions are valid and who paid the fee. Ordinals are uncomfortable proof that the system is genuinely permissionless: the same rules that stop anyone from censoring your payment also stop anyone from censoring someone else’s JPEG. Trustlessness doesn’t get to be picky.
The architect’s lens
Section titled “The architect’s lens”Inscriptions are a designed-by-accident mechanism — no opcode was added for them — so the lens turns on what they reuse:
- Why does it exist? Not by anyone’s intent: ordinal theory and inscriptions emerged from rules that already existed, treating each satoshi as serially numbered and stuffing arbitrary data into a transaction. They exist because nobody can stop a fee-paying transaction from carrying whatever bytes it likes.
- What problem does it solve? From the user’s side, “put data on the most secure ledger on Earth.”
The mechanism reuses two upgrades you’ve met: SegWit’s ¼ witness discount (bulk data is cheap) and
Taproot’s script-path spend (commit data in a script, reveal it later behind an
OP_FALSE OP_IF … OP_ENDIFenvelope the interpreter skips). - What are the trade-offs? Data competes with payments for finite block space, bloating blocks and spiking fees (the May 2023 BRC-20 storm drove fees to multi-year highs and made Binance pause withdrawals) — but it bids in the same fee market as everyone else.
- When should I avoid it? Bitcoin’s witness is a terrible database: it’s permanent, replicated to every full node forever, and priced as scarce block space — purpose-built data layers are the right design when permanence and censorship-resistance aren’t the requirement.
- What breaks if I remove it? You couldn’t selectively block “data” without an admin deciding what a transaction is allowed to express — which is the very censorship-resistance that protects payments. Trustlessness doesn’t get to be picky; the same neutrality that lets your payment through lets the JPEG through.
Check your understanding
Section titled “Check your understanding”- What does ordinal theory assign to each satoshi, and why is it accurate to say “the protocol knows nothing about it”?
- Which two earlier upgrades do inscriptions reuse, and what role does each play?
- Where in a transaction does inscription data actually live?
- In what sense are BRC-20 “tokens” a convention rather than a consensus feature?
- Explain why the “it’s spam” and “it’s valid use” camps are both appealing to the same property of Bitcoin.
Show answers
- Ordinal theory assigns each satoshi a serial number based on the order it was mined, tracked first-in-first-out as coins move. “The protocol knows nothing about it” because the numbers exist only in the software that chooses to compute them — consensus still sees fungible sats; ordinal theory is an overlay people agree to honor, not a rule the network enforces.
- SegWit’s witness discount — witness bytes count as only ¼ toward block weight, making bulk data comparatively cheap to store — and Taproot’s script-path spend — letting you commit to a script containing the data and reveal it later, hidden behind an
OP_FALSE OP_IF ... OP_ENDIFenvelope the interpreter skips. - In the witness of a Taproot transaction (inside that
OP_FALSE OP_IF ... OP_ENDIFenvelope), not in the txid-committed body. - BRC-20 inscribes little JSON snippets (
{"op":"mint",...}) to simulate fungible tokens, with all accounting done by off-chain indexers. Bitcoin sees only ordinary inscriptions; the “tokens” exist purely because a community agrees to interpret them that way — a social convention enforced by software, not consensus. - Both appeal to Bitcoin’s permissionlessness/neutrality: there’s no admin who decides what a transaction is “allowed” to express — you pay the fee market rate and your bytes go in. The “spam” camp dislikes the resulting JPEGs, but the same property that lets anyone’s data in is the censorship-resistance that protects everyone’s payments; it can’t be selectively switched off without undermining the neutrality that gives Bitcoin its value.