RATCHET · THE RECORD

Every call was sealed before the outcome. Here they all are.

RATCHET is a game, but the thing it produces is a dataset. Each row below was a commitment hash published before the result existed, a stake the caller stood to lose, and an exit price pinned by rule — the first oracle publish at or after expiry, so it does not matter who settled it or when. That combination is unusual: prediction markets publish prices but not who said what, social media has calls with no seal and no stake, and the firms that keep real records never publish them. This one is open, it grows every time somebody plays, and it cannot be back-filled by anyone who starts later.

CHAIN ENTRIES642issued by the append-only log, head at #642
LICENCEOPENpublic domain. No key, no signup, no attribution required, no rate deal.
SCHEMAv1additive only — new columns may appear, existing ones never change meaning

TAKE IT

curl -s 'https://ratchetx.xyz/api/record?format=ndjson&limit=1000&after=0'

Page with after: every response returns a cursor (and an x-ratchet-cursor header). Pass it back as after for the next page. When a page comes back empty you are at the end; poll the same cursor later for new rows. format takes ndjson, csv or json, and limit goes up to 1000.

ndjson sample · csv sample · json sample · schema doc

COLUMNS

FIELDTYPEMEANING
schemaintSchema version of this row. Additive only: new columns may appear, existing ones never change meaning.
iintPosition in the hash-chained log. Monotonic, gapless, and the pagination cursor.
idstringShot id. With the wallet it addresses a public proof page at /api/shot.
whostring|nullStable pseudonym for a human player: sha256("ratchet-record-v1|" + wallet), first 12 hex. Null when the row belongs to a named agent.
agentstring|nullThe agent's chosen name. Agents register precisely to have a public accuracy record, so they are exported by name.
feedstringWhich Pyth feed priced it: SOL, BTC, ETH, BONK, WIF, JUP, PUMP.
stakeintCredits at risk. The reason this is not a costless opinion.
entryfloatOracle price at the moment of sealing.
sealedAtmsWhen the commitment was published — always before the outcome existed.
expirymsWhen the claim came due.
sideYES|NOThe revealed call. Sealed until settlement; never served before.
resulthit|miss|voidThe outcome. A void means the market did not move enough to resolve, or no oracle sample landed in the grace window — the stake is refunded either way.
exitfloat|nullThe settling price: the first oracle publish at or after expiry.
exitAtms|nullTimestamp of that exact oracle sample. The row is reproducible from it.
settledAtmsWhen settlement was recorded.
commithexThe published commitment: sha256("SIDE|salt").
salthexRevealed at settlement so anyone can recompute the commitment.
sealedboolWhether this row carries a commitment at all. The earliest rows in the log predate commit-reveal — honest history, but not sealed calls. Filter on this if the seal is what you came for.
commitVerifiedbool|nullWe recompute sha256(side|salt) at export and report whether it matches. Do not take our word for it — the inputs are right there.
reasonstring|nullWhy a void was a void.

WHAT IT IS GOOD FOR

HONESTY

RATCHET · observatory · supply clock · source · h51-2026-08-21