Bitcoin Deep Dive: UTXOs, Script, Ordinals & Runes

How Bitcoin's UTXO model, Script locks and Taproot witness data enable inscriptions and Runes fungible tokens.

11 min read·5 quiz questions

Coins are outputs, not balances

Bitcoin has no account balance. Your wallet scans the chain for unspent transaction outputs (UTXOs) it can unlock and adds them up. Spending consumes whole UTXOs and creates new ones, including a change output back to you.

  • Balance = sum of your spendable UTXOs.
  • Fees = total inputs − total outputs (no separate fee field).
  • Bigger transactions cost more because fees are priced per vByte.

Script: locking and unlocking

Each output carries a locking script (scriptPubKey) describing the condition to spend it. The spender supplies an unlocking script or witness that satisfies it. Address prefixes tell you which lock type is used: 1… legacy P2PKH, 3… P2SH, bc1q… SegWit v0, bc1p… Taproot.

  • Script is intentionally limited: no loops, no global state.
  • SegWit moved signatures into a discounted witness area.
  • Taproot (bc1p) allows large, cheap witness payloads.

Ordinals and inscriptions

Ordinal theory assigns every satoshi a serial number so an individual sat can be tracked and traded. An inscription writes arbitrary data (image, text, JSON) into a Taproot witness and attaches it to a single sat — Bitcoin's NFT-like primitive. The data lives on-chain, which is why inscription waves spike fee markets.

Runes: fungible tokens the UTXO way

Runes encode fungible token supply and transfers in an OP_RETURN 'runestone' attached to normal Bitcoin transactions. Token balances ride on UTXOs instead of a separate ledger, so no off-chain indexer state is required for validity and no junk UTXOs are created the way BRC-20 minting did.

  • Etching: create a rune with name, divisibility and supply rules.
  • Minting: claim supply according to the etched terms.
  • Transfer: an edict in the runestone splits balances between outputs.
  • Lost runes: sending to an output you don't control burns them.

Key terms

UTXO
Unspent transaction output — a discrete spendable chunk of bitcoin.
scriptPubKey
Locking script on an output that defines the spending condition.
Taproot
2021 upgrade (bc1p addresses) enabling cheaper, flexible witness data.
Inscription
Arbitrary data written into a witness and bound to one satoshi.
Runestone
OP_RETURN payload carrying Runes etching, mint and transfer instructions.

Chapter quiz

5 questions · pass mark 75%
  1. 1. How does a Bitcoin wallet compute your balance?

  2. 2. Where is the fee specified in a Bitcoin transaction?

  3. 3. An address starting with bc1p is…

  4. 4. Runes transfer instructions are carried in…

  5. 5. Why do big inscription waves raise everyone's fees?

Answer every question to submit. Progress for bitcoin-utxo-script-runes is saved in this browser.