PATINA docs

Rules that keep renders honest

A render is the part of this system most people will actually see. It is also the easiest place to lie.

What you will know after this page
  • The five things every render shows, including the live tier when the live tier is Raw.
  • The twelve things a render must never do, and why summing rings into a lifetime total is one of them.
  • What an honest empty state looks like when the state could not be read, and which four substitutes are not acceptable.
  • What a share card may print, and what turns false the moment the next block arrives.
  • Five checks to run on your own render, starting with an artifact that was Elder and is Raw now.

Always show

Five things, on every render, at every size it supports. If one of them will not fit, the render is too small rather than the rule too strict.

  1. The height the numbers were read at. Depth changes every block.
  2. The live tier, even when it is Raw. Especially when it is Raw.
  3. The live depth in blocks, exactly, without rounding.
  4. Relic status, when the artifact has ended.
  5. Rings as history, visually separate from the live state.

Never do

Twelve entries. The second column is the part to read, because it names what the render would be getting wrong. Several of them exist because there is no supply plan, no cap and no price at all, which the public site states in full on the transparency page.

Each of these has been done by somebody, somewhere, and each one is a lie.
NeverBecause
Show the deepest ring where the live tier belongsIt presents past depth as present depth
Sum rings into a lifetime totalStretches do not concatenate. The protocol computes no such number.
Show a countdown that is not a real block countFake urgency. The only real countdowns are blocks to the next tier and blocks left in the window.
Show a supply cap, a mint count out of a total, or a sold out stateThere is no cap and there is no total
Show a price, a floor, an estimate, or a returnThe protocol has no price and makes no claims about value
Show a rank among holdersDepth is not a competition and the protocol assigns no ranks
Invent rarity, scores, or traits not derived from published stateIt is decoration presented as data
Animate depth increasing between blocksDepth is an integer that changes when a block arrives, not a smooth line
Hide a reset, or draw it as damageA reset is a holder spending their own coins
Imply a holder identity or continuity of ownershipThe chain cannot show that. See What it does not promise.
Render zero when the data could not be readZero is a measurement. Unknown is not.
Fetch anything at render timeIt breaks determinism and cannot be verified offline

Empty states

When state cannot be read, the render must say so and stop. Options that are acceptable: a plain frame with the words that the data could not be read, or nothing at all. Options that are not acceptable: a default artifact, a placeholder tier, a spinner that never resolves, or last known values without their height.

The test

Ask what a viewer would believe if they saw only your render, with no other context. If any part of that belief is not supported by the protocol state you were given, the render is lying, however small the detail is.

Share cards deserve extra care

A share card escapes its context immediately. It gets screenshotted, reposted, and read months later.

  • Print the height and the artifact id, so anyone can check it against an indexer, the way take nobody's word for it walks a reader through doing.
  • Never print anything that will become false as blocks pass, unless the height is next to it.
  • Do not print an achievement framing. "Unmoved for 26280 blocks as of height 906280" is a fact. Anything congratulatory is an interpretation.
  • Assume the card will be seen by someone who has never heard of PATINA. Facts survive that. Vibes do not.

Accessibility is part of honesty

A render that only conveys tier through colour hides its meaning from some readers.

  1. Never carry meaning by colour alone. Pair it with shape, texture, or a label.
  2. Text passes AA contrast against its actual background.
  3. Every meaningful element has a text alternative carrying the same facts.
  4. Animation is optional and respects reduced motion.
  5. The static form is complete on its own.

Self check

  1. Render an artifact that was Elder and is now Raw. Does the picture make the reset obvious?
  2. Render a relic. Would somebody know the artifact has ended?
  3. Remove the state and render. Does it show an honest empty state, or a default that looks real?
  4. Show the card to someone unfamiliar with the protocol. Ask what they think it says. Any belief they form that the state does not support is a bug in the render.
  5. Read every word on the card out loud. Delete any that a competitor could paste onto their own product without changing.