Runes

Bitcoin · mainnet · protocol documentation

Runes

Runes is a fungible token protocol carved directly into Bitcoin transactions. A compact message called a runestone, carried in an OP_RETURN output, etches a new token, mints an existing one, or moves balances between transaction outputs. Balances live in UTXOs, so runes move the way bitcoin moves.

Protocol origin: Casey Rodarmor, the Ordinals project · Activated at block 840,000 (the fourth halving, April 2024) · Documented against ord 0.29.0 (ordinals crate 0.0.17) · Lifecycle: stable

The protocol in one look

Anatomy of a runes transaction Two inputs carrying rune balances flow into a transaction. The transaction has three outputs: output 0 receives 600 units, output 1 receives 400 units, and output 2 is an OP_RETURN runestone holding the instructions. The runestone directs balances but holds none itself. INPUT 0 INPUT 1 TX OUTPUT 0 OUTPUT 1 OUTPUT 2 · RUNESTONE 700 RUNES 300 RUNES edicts allocate input balances to outputs 600 RUNES 400 RUNES OP_RETURN OP_13 … 0 sats
Rune balances ride on transaction outputs. The runestone is an instruction, not a vault: it says where input balances go, and holds nothing itself.

What a runestone can do

Etch
Create a new rune and fix its properties forever: name (A to Z, with optional spacer dots like UNCOMMON•GOODS), divisibility, currency symbol, an optional premine for the etcher, and optional open mint terms (amount per mint, mint cap, height or offset windows).
Mint
While a rune's mint terms are satisfied, anyone may mint: each mint transaction creates the fixed amount and assigns it to the transaction's outputs.
Transfer
Edicts move amounts of specific runes to specific outputs. Anything left over follows the pointer, or the first non-OP_RETURN output. Sending runes to an OP_RETURN output burns them.

A malformed runestone is a cenotaph: input runes are burned, an etched rune becomes unmintable, and mints count against the cap but burn what they mint. The specification lists every cenotaph condition, and the decoder flags them in pasted scripts.

How runes are identified

A rune ID is the block that etched it and the transaction index inside that block, written BLOCK:TX. The first rune, UNCOMMON•GOODS, is hardcoded in the reference implementation with ID 1:0, symbol , and an open mint of amount 1 from block 840,000 to block 1,050,000. Every other rune's ID comes from where its etching confirmed.

Who this documentation is for

Entry points

Source and ecosystem