PATINA docs

Glossary

Every term these pages use, defined once.

What you will know after this page
  • What separates depth, a stretch and a ring, and which of the three can still change.
  • The default rule for choosing a successor: the lowest index output that is not an OP_RETURN and holds at least 10000 sats.
  • What SEED and KEEP are, down to their opcode bytes and their payload layout.
  • Where a relic comes from, and what an artifact keeps once it becomes one.
  • Which words here are PATINA's own and which are ordinary Bitcoin, borrowed because a page needs them.

Protocol terms

Alphabetical. If you read only four, read carrier, depth, stretch and ring, because the rest of these pages is assembled out of those.

Artifact
One PATINA object. It has a permanent id, rides a carrier output, and accumulates rings.
Artifact id
SHA256("PTNA/artifact" || reveal_txid_wire || carrier_vout_le). Fixed at birth and never changed by a move.
Attestation
A BIP-322 signature over "PTNA/attest" || artifact_id_hex || block_hash_hex, made off chain by the carrier key. Shows the key is still signable at a recent block.
Baseline
The frozen file of constants and contracts every workstream builds against. Where these pages and the baseline disagree, the baseline wins.
Bundle
Several artifacts sharing one carrier. They move together and cannot be split by a single transaction.
Carrier
The unspent output an artifact rides. Written txid:vout. Spending it ends the stretch.
Census
A deterministic survival table computed per 2016-block epoch, served at /census/current and /census/:epoch.
Claimant key
The 32 byte x-only public key that appears in the commit leaf and signs the reveal.
Commit
The first of the two mint transactions. It creates a Taproot output whose script path carries the commitment.
Commitment
SHA256("PTNA/commit" || claimant_xonly || salt). Stored inside the commit leaf.
Commit leaf
The 68 byte reduced-data tapscript <claimant_xonly> OP_CHECKSIG PUSH32(commitment) OP_DROP, or its permanent 70 byte legacy conditional encoding.
Default rule
When no valid KEEP entry applies, the successor is the lowest index output that is not an OP_RETURN and holds at least 10000 sats.
Depth
current_height - carrier.height, in blocks. Computed at query time, never stored.
Deployment record
The binding of a network to its window heights, minimums, and spec_sha256.
Endowment
The sats held in the carrier. Yours the whole time. At least 100000 for a founding Seal.
Epoch
A 2016-block difficulty period, used as the unit for the census.
Firstlight Seal
An artifact created in the founding window, with founding: true. The genesis asset.
Flags
One reserved byte in the SEED payload. Every bit is reserved at marker version 1 and must be zero, so a non zero flags byte is SEED_BAD_GRAMMAR.
Founding
True when the commit output confirmed inside the window and the reveal landed at or before the end of the grace period.
Grace period
4032 blocks after the window closes, during which a commit made inside the window can still be revealed as founding.
KEEP
Marker opcode 0x02. Routes artifacts to chosen outputs when carriers are spent. One to eight entries.
Marker
An OP_RETURN output with one minimal push containing "PTNA" | version | op | payload.
Magic
The four bytes 50 54 4e 41, ASCII PTNA, at the start of every marker payload.
Minimal push
The shortest valid script encoding for a piece of data. Required, so that one marker has exactly one valid spelling.
Museum
The endpoint listing the longest completed rings. History, as opposed to the leaderboard which is the present.
Outpoint
A transaction id and an output index together, identifying one output.
Reason code
One of eighteen frozen strings recording why a marked transaction did not do what it appeared to attempt.
Relic
An artifact whose carrier was spent with no eligible successor. Terminal. Keeps its id and rings forever.
Reorg
A chain reorganisation. Handled by rolling state back to the fork point and replaying.
Reveal
The second mint transaction. Spends the commit by the script path and carries the SEED marker.
Ring
The permanent record of one completed stretch: start height, end height, depth, value carried, and where the artifact went next.
Salt
16 random bytes, chosen at commit time, repeated in the SEED payload. Never reuse one.
SEED
Marker opcode 0x01. Creates an artifact. Payload is salt(16) | flags(1) | carrier_vout(1).
Shatter
The endpoint listing recently closed rings, newest first.
spec_sha256
The hash of the specification a deployment is bound to. Published through status. Quote it instead of a version label.
State root
SHA256("PTNA/state" || canonical snapshot encoding). Two implementations agree when their roots match at the same height.
Stretch
One continuous period during which a carrier stays unspent. A stretch becomes a ring when it ends.
Successor
The output an artifact follows when its carrier is spent. Chosen by a valid KEEP entry, or by the default rule.
Tier
One of eight named bands on depth: Raw, Sheen, Cast, Verdigris, Umber, Bronze, Oxide, Elder.
Window
The 4032 block period during which founding commits are accepted. Opens once.
Wire order
A transaction id in internal byte order, the reverse of what a block explorer displays. Used inside the artifact id derivation.

Bitcoin terms used here

None of these are PATINA inventions. They are listed because a PATINA page uses them somewhere that the ordinary meaning is not quite enough, usually around the reveal or around an accidental spend.

BIP-322
The standard for signing a message with a Bitcoin key, including Taproot addresses. Used for attestations.
BIP-341
The Taproot specification. Defines tapleaf hashing and script path spends, which the commit output uses.
Coin control
Choosing which outputs a wallet spends, and locking outputs so it cannot spend them. The main defence against an accidental reset.
CPFP
Child pays for parent. Spending an output of a slow transaction to raise the effective fee. Safe for a PATINA artifact only when the child spends an output that is not the carrier.
OP_RETURN
An output that is provably unspendable and carries data. Every PATINA marker is one.
P2TR
Pay to Taproot. The output type used for the commit.
RBF
Replace by fee. Replacing an unconfirmed transaction with a higher fee version. Changes the txid, which matters when the transaction is your reveal.
Script path spend
Spending a Taproot output by revealing a script from its tree, rather than with the key path. The reveal must do this.
x-only public key
A 32 byte public key encoding used by Taproot, with the y coordinate implied.