History

Changelog

Two histories, kept separate: the version history of this document, and the consensus changes in the protocol it describes.


Document versions

2026.09.01

Verified against btc_stamps indexer 1.9.3 and the Bitcoin Universe ecosystem capability registry snapshot of 31 August 2026.

Complete rebuild of this documentation from the protocol implementations, replacing marketing-oriented pages with a normative specification.

  • Added a numbered specification covering the data carrier, both encodings, activation heights, ticker and numeric rules, the three operations, and the full validity and invalidity taxonomy.
  • Documented both carriers precisely: bare multisig with ARC4 keyed on input 0's previous txid and a required burn key, and OLGA P2WSH from block 865000, including the deliberate absence of a multisig fallback.
  • Corrected the widespread description of SRC-20 as a Counterparty protocol. Counterparty-encoded SRC-20 has been ignored since block 796000.
  • Recorded that OP_RETURN is not an SRC-20 data carrier, contrary to common description.
  • Documented the clamping mint statuses OMA and ODL as valid outcomes, which is the most frequent source of indexer divergence.
  • Documented the truncation asymmetry: max and lim round down, amt does not.
  • Documented the pre-833000 numeric stripping behaviour, which changes historical supply figures if not reproduced.
  • Recorded that the BULK_XFER code path in the reference indexer is unreachable and must not be implemented.
  • Recorded that a DEPLOY missing max or lim reports status DE, whose message misleadingly reads "DEPLOY EXISTS".
  • Added a client-side payload validator reproducing the field-level rules, with the BRC-20 difference table.
  • Added test vectors including a stateful lifecycle covering both clamping cases.
  • Added indexer semantics for ordering, confirmation, the absence of mempool state, and reorg handling.
  • Replaced the product support claims with the actions declared in the ecosystem capability registry, including each unsupported marketplace action and its recorded reason.
  • Added local search, a theme toggle, a changelog, a 404 page, sitemap.xml, robots.txt and a validated docs.manifest.json.
  • Corrected the site's own published URLs, which previously pointed at a bitcoinuniverse.github.io host rather than the real bitcoinuniverseio.github.io Pages origin.

Earlier

The repository previously published a three-page introduction covering Bitcoin Stamps, SRC-20 and SRC-101 together. Its accurate content, the protocol relationships and the user-safety guidance, is carried forward into the overview and the guide. The Stampchain logo and its attribution are retained unchanged.


Protocol changes

SRC-20 has no upstream versioned specification. Its history is a sequence of block heights at which indexer behaviour changed, and those heights are the protocol's real version numbers.

Consensus-relevant changes, from btc_stamps indexer/src/config.py
HeightApprox. dateChange
788041April 2023SRC-20 begins. Operations are carried inside Counterparty issuances, requiring a numeric asset id and a declared supply of 0.
793068May 2023First SRC-20 carried directly on Bitcoin, with no Counterparty encoding.
796000June 2023Counterparty-encoded SRC-20 stops counting. Every such operation at or after this height is ignored, making the protocol direct-to-Bitcoin.
833000February 2024Numeric parsing becomes strict. Below this height every character that was not a digit or a dot was stripped from a numeric string before parsing; from here a malformed numeric excludes the transaction.
865000October 2024OLGA P2WSH encoding becomes available for SRC-20, carrying payload bytes in 32-byte witness programs with no encryption. It takes precedence over bare multisig.

Dates are approximate, derived from typical block intervals. The heights are exact and are what an indexer must use.

Proposals are not changes

Proposals exist to add conditional transfers to SRC-20, which would make non-custodial marketplace escrow possible. None is activated at a block height, and none is implemented by the reference indexers. Until a proposal has an activation height and agreeing implementations, it is not protocol behaviour and this document will not describe it as such.