Bitcoin Embedding Protocols
Since 2013, developers have found ways to embed non-financial data into Bitcoin's blockchain. From token protocols to digital art, each approach uses a different part of the transaction structure, with different trade-offs for cost, pruning, and chain impact.
Timeline
Omni Layer
2013/07OP_RETURNLow activityOne of the earliest token protocols on Bitcoin, originally launched as Mastercoin in 2013. Tether (USDT) initially launched on Omni in 2014 before activity later shifted primarily to Ethereum and Tron.
How it works
Omni commonly encodes protocol messages in OP_RETURN outputs using the 4-byte "omni" marker, followed by binary payloads for operations such as send, issue, and trade. Omni-aware nodes index and interpret these messages to track token balances.
Commonly encodes token operations in OP_RETURN outputs using the "omni" magic prefix (hex: 6f6d6e69). Earlier versions used other encoding methods.💡 During 2017-2018, Omni-related transactions represented a significant portion of all OP_RETURN activity on Bitcoin, largely driven by Tether transfers.
Counterparty
2014/01OP_RETURNSome activityCreated XCP tokens through a proof-of-burn process in which roughly 2,100 BTC were sent to an unspendable address. Counterparty enabled token issuance, a decentralized exchange, and other financial primitives on Bitcoin.
How it works
Counterparty protocol messages were embedded in Bitcoin transactions using methods including OP_RETURN and multisig-style encodings. Messages are identified by the "CNTRPRTY" prefix and decoded by Counterparty nodes to execute token operations.
Messages identified by the "CNTRPRTY" prefix (hex: 434e545250525459), embedded via OP_RETURN and historically also multisig-style encodings.💡 The BTC burned to create XCP was worth roughly $1.8M at the time. At today's prices it would be worth considerably more.
Stamps / SRC-20
2023/03Bare MultisigActiveEmbeds image data in bare multisig-style output scripts rather than witness data. Unlike Ordinals inscriptions, the encoded data is placed in non-witness transaction outputs; while such outputs remain unspent, they consume UTXO set space rather than prunable witness space. This persistence was a deliberate design goal.
How it works
A transaction creates bare multisig outputs in which some supposed "public keys" actually encode chunks of image data. Stamp-aware indexers reconstruct the asset data from these script elements. While these outputs remain unspent, they occupy UTXO set space on every full node.
Embeds data in bare multisig output scripts (not P2SH-wrapped). Supposed "public keys" in the multisig actually encode chunks of image data.💡 Stamps emerged partly as a response to discussions in the Bitcoin community about potentially pruning or filtering Ordinals witness data.
Ordinals
2023/01/21Witness DataActiveCreated by Casey Rodarmor. Introduces "ordinal theory," a convention for assigning serial numbers to individual satoshis, and enables inscribing arbitrary data (images, text, HTML) into the witness field of transactions. Inscription data benefits from the SegWit witness discount: witness bytes count at one quarter the weight of non-witness bytes.
How it works
The inscription is placed inside a Taproot script-path spend. The witness contains an envelope with OP_FALSE OP_IF to create a no-op branch that carries the data. Since it's in the witness, it benefits from the 75% weight discount introduced by SegWit.
Inscribes data inside a Taproot witness script using an envelope: OP_FALSE OP_IF OP_PUSH "ord" [content_type] [data] OP_ENDIF.💡 The first known inscription (block 774,628) was a pixel art image. Inscription activity grew rapidly, with over a million inscriptions created within the first few months.
BRC-20
2023/03/08Witness (JSON)ActiveAn experimental fungible-token convention built on Ordinals inscriptions. Uses JSON payloads with deploy, mint, and transfer operations. Bitcoin's consensus rules do not validate BRC-20 state; off-chain indexers interpret the inscriptions to determine token balances. BRC-20 activity was a major contributor to elevated fees and mempool congestion in mid-2023.
How it works
A BRC-20 operation is an Ordinals inscription, typically with text content containing JSON like {"p":"brc-20","op":"mint","tick":"ordi","amt":"1000"}. External indexers parse these inscriptions, apply the BRC-20 rules, and compute token balances. None of this logic exists in Bitcoin itself.
Ordinals inscriptions, typically with text content containing JSON such as {"p":"brc-20","op":"mint",...}.💡 BRC-20 is entirely off-protocol: if two indexers disagree on how to interpret the JSON rules, users could see different token balances depending on which indexer they trust.
Runes
2024/04/20OP_RETURNActiveA fungible token protocol created by Casey Rodarmor as a simpler, more UTXO-native alternative to BRC-20. Runes launched at Bitcoin's fourth halving block.
How it works
Runes stores a "runestone" message in an OP_RETURN output using compact encoded fields for operations such as etching, minting, and transfers. Token balances are assigned to UTXOs, so transfers happen through normal UTXO spending and creation rather than inscription-indexed account balances.
Stores a "runestone" message in an OP_RETURN output using compact integer-based encoding for token operations.💡 The simultaneous Runes launch and halving at block 840,000 caused a significant fee spike as users competed to etch the first tokens, with reported fee rates exceeding 1,000 sat/vB.
Historical note: Colored Coins (2012–2015)
Colored Coins was the earliest concept for representing tokens on Bitcoin, predating all protocols listed above. Rather than a single protocol, it was a family of incompatible implementations (Open Assets, EPOBC, ChromaWay) that used various techniques, from OP_RETURN markers to transaction output ordering, to "color" specific satoshis as representing real-world assets. Most implementations relied on external metadata servers, making on-chain detection unreliable. Colored Coins saw limited adoption but were historically significant as the first tokenization experiments on Bitcoin, directly inspiring later protocols like Counterparty and Omni. They are not tracked in the Observatory charts due to their ambiguous on-chain footprint and low volume.
Comparison
| Protocol | Year | Embedding Method | Prunable? | Token Type | Status |
|---|---|---|---|---|---|
Omni Layer | 2013/07 | OP_RETURN | Yes | Fungible | Low activity |
Counterparty | 2014/01 | OP_RETURN | Yes | Fungible | Some activity |
Stamps / SRC-20 | 2023/03 | Bare Multisig | No | Non-fungible | Active |
Ordinals | 2023/01/21 | Witness Data | Yes | Non-fungible | Active |
BRC-20 | 2023/03/08 | Witness (JSON) | Yes | Fungible | Active |
Runes | 2024/04/20 | OP_RETURN | Yes | Fungible | Active |
View embedded data charts in the Observatory