Proof
Two independent guarantees: every call is committed on-chain before its outcome exists, and the whole graded record is rooted daily so grades can't be quietly edited afterwards. Neither requires trusting this site.
1 · Verify a single call
Every prediction row on the scoreboard links (⛓) to a Solana memo transaction from Workshop's proof wallet:
The memo is workshop:pred:<id>:<sha256>, where the hash commits
the exact call text and creation time:
sha256( prediction_text + "|" + created_at + "|" + prediction_id )
- Open any call's
/claim/<id>page and its explorer link. - Recompute the hash from the shown text/timestamp/id; compare to the memo.
- Check the transaction's block time is earlier than the call's resolution.
2 · Verify the whole record
Once a day the entire public record — every call with its grade, including
annulled ones — is serialized canonically, hashed, and the root committed
on-chain as workshop:root:v2:<day>:<rows>:<sha256>:<prev12>,
where prev12 chains each day to the previous root. The exact bytes each
root hashed are stored and served back at
/record.json?day=YYYY-MM-DD (kept ~90 days; the roots themselves are permanent
on-chain), so verification compares three independent copies — the served
snapshot, the published root, and the chain memo:
DAY=2026-07-05
curl -s "https://workshopmind.com/record.json?day=$DAY" | python3 -c "
import json,sys,hashlib
d = json.load(sys.stdin)
h = hashlib.sha256(d['canonical'].encode()).hexdigest()
print('recomputed :', h)
print('published :', d['root'], '(match:', h == d['root'], ')')
print('now compare against the memo in the Solana tx below for', d['day'])
print('tx:', d['tx_signature'])"
The memo on-chain is the copy this site cannot edit. If any historical
grade were changed, that day's stored snapshot would no longer hash to its
on-chain root — and the prev12 chain means a rewritten day breaks every
memo after it. Bare /record.json serves the LIVE
record (it matches the next root at publish time, not past memos).
| Day | Root | Rows | Snapshot | Solana tx |
|---|---|---|---|---|
| 2026-07-14 | da60e3a7c33bc381caccbeac80d173f351c4dd0ddc55c0ac2feadf6bcb743fb9 prev aef6b4bf3531 | 6727 | bytes | mwMpRfoHR7hSVE1s72… |
| 2026-07-13 | aef6b4bf3531c6aa58bd647bef86aaa4901cc48146a9fd79d1803414feb8f3ed prev 3bbebcbf4e85 | 6701 | bytes | 3spDhn7Gir3MP72VRA… |
| 2026-07-12 | 3bbebcbf4e856da4a9238affb1e1b679fd65176e7ad18a6c42bf6c749958be0d prev 84ad31947db9 | 6689 | bytes | 5j2Y4KWGT1xYVJqF4K… |
| 2026-07-11 | 84ad31947db9a4b64bcd4d72ecfe6136779a413983a14706db5e0db3f6a1c9fb prev 073052d8bfc0 | 6678 | bytes | 46C5JP3wGLaXqWRYSZ… |
| 2026-07-10 | 073052d8bfc01c776587f8422547c6424b39754171ecf82cc8057eb39b28430a prev 29b66a399558 | 6652 | bytes | 54nuAtpF4ZZc427jvz… |
| 2026-07-09 | 29b66a399558d58c65ef38f36795a879314cc83ba0270d875ce4fbf33c6dde5e prev d05d97b4de84 | 6626 | bytes | 5iECaVKwFxz18vM5kz… |
| 2026-07-08 | d05d97b4de841b91a0f098f1d60252aab01971d7ececb27dbf171bc070314647 prev 159dd9b87251 | 6601 | bytes | 9WcaBJzDSakuGRBA83… |
| 2026-07-07 | 159dd9b87251757002df9d0fb04ef627da5a7658346e82a1012534d7bd255b6f prev 567443534629 | 6582 | bytes | 5cKFvESGHmcwaksSVw… |
| 2026-07-06 | 5674435346295ea46050e70aa26632544f6f3b21c057f981e6847b6c40416a23 prev 9098f54cb977 | 6564 | bytes | 3tuYdx86FhvHttPhir… |
| 2026-07-05 | 9098f54cb977c3d8e2e5fd03882aa4790acab56daf6d7da2f4a78c2f06be7dcd prev af5f88076c00 | 6552 | bytes | 4LANZhgKk45g52TH6T… |
| 2026-07-04 | af5f88076c00e8f2f35cc2a3315a597b369708e3ba5e667cc6af10b04df2b237 prev — | 6542 | pruned | 3YcA6qbRKoGoyqhHSR… |
Record changelog
Every restatement of the record, on the record. Disclosure is mechanical: each daily publish diffs the record against the previous day's frozen snapshot, and any change to an already-committed row that wasn't registered by a sanctioned repair is disclosed automatically — machine-readable manifest at /restatements.json.
- 2026-07-12 — Restatement: a direction-reading bug graded relative ("A outperforms B") calls backwards — the scorer read each call's own falsification clause as the call. 35 grades were recomputed from the same recorded price moves (14 wins → losses, 15 losses → wins, 6 score-only corrections); every regraded row keeps its original grade in its outcome text. Roots committed before 2026-07-12 notarized the old grades; roots from 2026-07-12 onward commit the corrected record.
- 2026-07-04 — Restatement: a full audit annulled 453 non-calls (abstentions and refusals that had been graded, 424 of them as wins) and 20 calls graded against the wrong asset's price series. Accuracy restated 64% → 57%. Every annulled row keeps its original grade in its outcome text for audit. Daily record roots begin, making any future edit to the record visible here.
- 2026-03-30 — Methodology: inconclusive predictions removed from accuracy metrics; numbers reflect only definitive verdicts.
A restated record with a paper trail beats a flattering one without. That's the product.