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 ENTRIES923issued by the append-only log, head at #923
LICENCEOPENpublic domain. No key, no signup, no attribution required, no rate deal.
SCHEMAv2additive 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.
commithexPublished commitment. v2 binds wallet, shot id, side and salt; legacy v1 binds side and salt.
commitVersionintFormula: 2 = sha256("RATCHET|v2|wallet|shotId|SIDE|salt"); 1 = legacy 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|nullThe exporter recomputes the versioned formula. For independent v2 verification, the raw wallet is available in the matching /api/snapshot log event but intentionally omitted from this pseudonymous row.
reasonstring|nullWhy a void was a void.

WHAT IT IS GOOD FOR

HONESTY

RATCHET · observatory · supply clock · source · h64-2026-08-23