The Morning Slate · Verifier
Verify a prediction
Recompute the SHA-256 hash of any prediction we've published. The hash math runs in your browser — we never receive what you compute. If you arrived via a prediction <code>?id=</code> link, your browser also fetches that prediction's canonical fields from our public dataset to populate the form; the hash computation itself never leaves your machine. You can also do it yourself, fully offline, with the snippets below.
How verification works
(i) Where to find a prediction's hash
Every day's predictions are anchored in our public attestation ledger at github.com/eifok/themorningslate-attestations. Each file contains the SHA-256 hash for every prediction published on that date.
(ii) What an attestation entry looks like
{
"id": "cm1dee88bcb264b3b4f06719ab",
"hash": "59c5949ca01c8faf60a24f1bcd382de28aab1c60b9ef5715f36346400fd653da",
"predictionSchemaVersion": "betclarity-prediction-v2",
"publishedAt": "2026-05-29T03:00:03.584Z"
}Each entry's `hash` is the SHA-256 of the prediction's canonical content. Paste the `id` into the form below and we'll fetch that prediction's canonical fields and recompute its hash in your browser.
Note: this is the attestation entry summary, not the prediction's full canonical payload. To verify a prediction, enter its `id` in the form below — we'll fetch the canonical payload for you. The Advanced form further down expects the canonical payload's shape, not this entry's shape.
(iii) Verifying a single prediction
Paste the prediction's `id` into the form below. We'll fetch the prediction's canonical fields from our public dataset (a server lookup) and recompute the SHA-256 hash in your browser (the math runs locally). If our recomputed hash matches the one in the attestation file, the prediction's content is unchanged since publication.
(iv) Verifying a full day's rootHash (no The Morning Slate trust required)
Or skip the per-prediction step and verify the entire day's `rootHash` directly. Copy every `hash` value from an attestation file (one per line) into the command below and run it in any shell with `sha256sum`:
# Replace the hashes below with the ones from your attestation file
# (one per line, in any order — the script sorts them):
echo -n "0ddadf492b6ea9f9126c98abe2397f5718d39c6cb426dcbc075593d24f338bb0
13f42734e540b8a61551698f114402c0e3d331d51bb85663e02c5cea35a4515e
# ... paste all of the day's prediction hashes here, one per line ...
" | sort | tr -d '\n' | sha256sumThis computes the `rootHash` of an entire day's predictions using only standard Unix tools. If the output matches the `rootHash` field in the attestation file, every prediction in that day is anchored as expected — no The Morning Slate server, code, or library required.
Verify a prediction by ID
From an attestation file? Paste the prediction's `id` here to recompute its hash.
Advanced: verify with a canonical payload you've already constructed
Use this if you've computed or fetched a prediction's full canonical payload via a script or API. For verifying a prediction you found in the attestation file, use the "Verify a prediction by ID" form above instead — that's the common case and it works end-to-end without leaving this page.
The prediction
Full canonical payload — should contain: fixtureId, market, selection, modelProbability, edgePercent, drivers, risk, kickoffAt, publishedAt, schemaVersion. NOT the attestation entry's `(id, hash, predictionSchemaVersion, publishedAt)` summary.
The hash you're checking against — typically from `attestations/YYYY-MM-DD.json`'s `hash` field for the prediction you're verifying.
Live recomputation
(Verification will appear here once data is provided.)