PATINA docs

Rings

A ring is what a finished stretch leaves behind. It is written once, when the carrier is spent, and never edited.

What you will know after this page
  • What the eight fields of a ring hold, and which two are null on the ring that ends an artifact.
  • That one ring is written per confirmed spend of a carrier, never per block and never on request.
  • Why the current stretch is not a ring, so an artifact deep at 13000 blocks can still have none.
  • Why ring depths must never be summed, and which three numbers to show instead.
  • Which endpoint answers which question about rings, and how the museum differs from the leaderboard.

The record

Eight fields, written once when the carrier is spent. The two successor fields are null exactly when relic is true, and never otherwise.

Ring {
  index             position in the list, from 0
  start_height      height of the block that created the carrier
  end_height        height of the block that spent it
  depth             end_height - start_height
  carried_value     sats the carrier held during the stretch
  successor_txid    where the artifact went, or null
  successor_vout    which output, or null
  relic             true when this ring ended the artifact
}

When a ring is written

One ring per confirmed spend of a carrier. Not per block, not per year, not on request.

  • An artifact that has never moved has zero rings, however deep it is.
  • An artifact that has moved four times has four rings, and is on its fifth stretch.
  • A relic's last ring has relic: true and no successor.
  • The current stretch is not a ring. It is live depth, and it becomes a ring only when it ends.

Worked example

An artifact born at height 880000, moved twice, currently alive.

The life of one artifact, read from its rings plus its live carrier.
indexstartenddepthcarriedresult
088000089300013000100000moved to a successor
1893000894008100896000moved again
live894008growing92000current stretch, not yet a ring

Reading that record honestly: this holder once went 13000 blocks without moving, which is Verdigris tier, then moved twice. The current stretch started at 894008 and its depth is whatever the tip is minus that. The carried value drops each time because fees come out of the successor.

Depth is per stretch, never cumulative

Rings do not add up

13000 plus 1008 is not a depth of 14008. There is no lifetime total, and the protocol does not compute one. A ring is a claim about one continuous stretch, and stretches do not concatenate.

If you build a view that sums rings, you are inventing a number the protocol does not stand behind. Show the deepest ring, the ring count, and the live depth. Those are all real.

Why rings exist

Without rings, a move would erase the entire history and the artifact would be indistinguishable from one minted yesterday. That would make a single mistake, or a single sale, delete years of evidence.

With rings, the record is honest in both directions. It shows what was achieved, and it shows that it ended. Nothing is inflated and nothing is hidden. The public depth page walks one artifact through four stretches and leaves it sitting at depth 40 with three rings behind it.

Rings across a transfer

The buyer receives the seller's rings, because rings belong to the artifact and not to a holder. That is a design decision with a consequence worth stating plainly: a deep ring is not proof that the current holder earned it. Read What it does not promise.

Reading rings from the API

Three endpoints for three different questions: the history of one artifact, the stretches that closed recently, and the longest ever completed.

GET /patina/artifacts/:id     rings, oldest first, inside the full record
GET /patina/shatter           newest first
GET /patina/museum            longest completed rings

The museum is history. The leaderboard is the present: deepest live stretches, which change as blocks arrive and drop to zero when someone moves.

What a ring does not contain

  • No holder identity, no address history, no label.
  • No price and no valuation.
  • No reason for the move. The chain does not record why anyone spends anything.
  • No score. Depth in blocks is the number, and readers can judge it themselves.