Version history
What changed, and why.
Documentation versions are separate from any product release. Each entry records the change and the evidence it was grounded in.
1.0.0, 2026-09-01
Complete rebuild. The previous version of this site described a single blended "OP_RETURN / OP-20" experience in marketing language and carried no specification, no test vectors, no reference material and no accurate support claims.
Added
- A dedicated carrier page covering unspendability, UTXO set pruning, data carrier relay policy, and an honest comparison with witness envelopes and unprunable output techniques.
- A specification with numbered rules in four groups: R-CAR for the carrier, R-20 for OP-20, R-NAME for OP Names and R-OPI for OP Inscriptions, plus a table of every rejection reason code.
- A test vectors page of 40 vectors, produced by running the organisation's own OP-20 payload reader, OP Names transaction parser and OP Inscriptions record decoder over real script hex and recording the outcomes verbatim.
- A client side decoder that identifies which of the three protocols claims a payload, decodes the fields, explains rejections, and reports size against the 83 byte default data carrier limit.
- A reference covering terminology, per protocol confirmation, mempool and reorg semantics, fee and size, security considerations, limitations and an implementation checklist.
- Client side search over every heading, a theme toggle, and a helpful 404 page.
Corrected
- Three protocols, not one. OP-20, OP Names and OP Inscriptions share a carrier and nothing else. Each now has its own rules, its own state model and its own capability row. The previous site presented only a blended OP_RETURN and OP-20 story.
- Support claims replaced with recorded truth. The support matrix now comes from the Core capability snapshot generated from the marketplace protocol registry, and every unsupported action carries its recorded reason. OP-20 and OP Names are read only. OP Inscriptions is the only one Core executes.
- Repository links fixed. The previous pages linked to
github.com/bitcoinuniverse, which is not this organisation. All links now point atbitcoinuniverseio. - Site base fixed. Absolute URLs previously pointed at
bitcoinuniverse.github.io. The site base ishttps://bitcoinuniverseio.github.io/op-return/. - Ticker comparison stated precisely. The previous claim was that tickers are compared without letter case differences. The reader in fact applies NFC normalisation, trims, then lowercases, and bounds the result at 400 UTF-8 bytes, rejecting path separators and the values
.and... See R-20-7. - The OP-20 buy path is documented as unsupported. The recorded reason states that the current interface can reach a broadcast step before registration fails, which is why buy is not declared supported. That warning is now prominent rather than absent.
- OP Names is distinguished from SNS. The organisation separately indexes the Ordinals based Sats Names System under the marketplace protocol id
names. It is a different protocol on a different carrier and must not be conflated withop_names. - Style. The em dash character is no longer used anywhere in this repository, including titles, meta descriptions and Open Graph tags. The previous home page title contained one.
Evidence
- Capability rows and recorded reasons: the Core ecosystem capability snapshot, generated from
bitcoinuniverseio/coreat source commit15dd03b5. - OP-20 payload rules: the OP-20 payload reader and its validation helpers in the organisation's OP-20 indexer.
- OP Names identity, carrier and state machine rules: the OP Names authority parser, identity module and its authority document, which is colocated with the OP-20 indexer.
- OP Inscriptions classification, assembly and durability rules: the OP Inscriptions record decoder and its indexer safety contract.
- Funding safety: the OP-20 asset bearing outpoint screen in the Core marketplace service, which screens candidate funding outputs against Core's own transfer, domain and trade records, uses a bare transaction id key when a record has no output index, and fails closed when the screen cannot be read.
Known gaps
- No mainnet transaction identifiers are cited as examples. Vectors are synthetic scripts run through the real parsers, which proves parser behaviour but not historical incidence.
- The OP Inscriptions chunk grouping rules are documented at the level of the implemented algorithm. The set of accepted group identifier field names is not enumerated here because it is inferred from historical data rather than fixed by a published specification.
- No creation surface is claimed for OP Names or OP Inscriptions, because none is recorded in the registry.
Earlier
Before 1.0.0 this repository held a three page promotional site with no versioned specification. Those pages are preserved in the repository history.