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-09-22 | 8958cd6c1efb655bd7cef3aac82bc0e86bd880a1372ef1670e484ce04b0e0f9a prev 8958cd6c1efb | 7960 | bytes | PBCP1WsTP4Mej7vBVU… |
| 2026-09-21 | 8958cd6c1efb655bd7cef3aac82bc0e86bd880a1372ef1670e484ce04b0e0f9a prev d7245e666890 | 7960 | bytes | 3ULLMvuvMaA8XrakSz… |
| 2026-09-20 | d7245e66689051a806389a3380d7ab66a224191eb000d116551b7aa0b62563e4 prev 60e14b03415e | 7959 | bytes | 3S9sGoHUk9UKGHhjh2… |
| 2026-09-19 | 60e14b03415e5bf6f61c2137c0c96dd5419c375698f5b72ca581ea1422d9b256 prev 60e14b03415e | 7958 | bytes | 2URu4RTGDuVxbL4AhB… |
| 2026-09-18 | 60e14b03415e5bf6f61c2137c0c96dd5419c375698f5b72ca581ea1422d9b256 prev c92ccefab3a3 | 7958 | bytes | 3g4RFwuXXv9LeJRFzC… |
| 2026-09-17 | c92ccefab3a3e0565b0c3368443f5685079b5dc9383d73357729917027fb8aa8 prev 0a3b84725dfd | 7957 | bytes | VSN696ioejh8AGeceG… |
| 2026-09-16 | 0a3b84725dfde04c15e19ec6918fecde27331cb0c1653a1170b63d75ba7eca14 prev 06e511ffa747 | 7956 | bytes | 2uxQykzMrKsHzGkzty… |
| 2026-09-15 | 06e511ffa7476be1975bfb54776c0f5415ec28cffffa5b91d6d8035c4362681f prev 036cbe9e36bc | 7956 | bytes | 3QyfnjzXHAYyXs2h9u… |
| 2026-09-14 | 036cbe9e36bcfb6608d7ab15afece7be624e562d3cb0d09347b4a922dc352238 prev d19dc8eb5810 | 7956 | bytes | 2VWCKoLpJRNr5smpiQ… |
| 2026-09-13 | d19dc8eb5810ec16e327d495f7505c8eab5463d66c7944718a69cb50d4b71692 prev 88be35d13b02 | 7955 | bytes | 41xKysCTzJgTvZez8H… |
| 2026-09-12 | 88be35d13b026c798e58994f75a602cdd1b9fc45e2e1843fcf28b90f34dcb0b9 prev 2729842b0970 | 7955 | bytes | 3t1MLMM34iZym2whbQ… |
| 2026-09-11 | 2729842b0970d49a43b2a30ffd4bffdf3c6d5e9718a2bcd7d13bac95f032ef68 prev c068febc031a | 7955 | bytes | 4fyey4xM63MMXooMXS… |
| 2026-09-10 | c068febc031ab412f04d8cea4b0557cf5dd05f21198faef83cb2a8f0402bde97 prev c5aa056052b9 | 7945 | bytes | 4G9Rn3CYvc6RDJGqR5… |
| 2026-09-09 | c5aa056052b9530c80b6e6f4ac1d9c41d060a19e43ecca575908bb2ea0e426f6 prev a2b680a23a84 | 7929 | bytes | 5XZvmdXXmqGHz1MJoG… |
| 2026-09-08 | a2b680a23a84bdd25ee6364bfbc8a322b9a43250033ebfb971475bfc10f8963a prev bdcb8635ba7f | 7907 | bytes | hvaWZeCTyqcS5HEA81… |
| 2026-09-07 | bdcb8635ba7fa37cb279414f8f39bc4505357ca88ad7061135b5deac83a48ae0 prev d32763e0500c | 7904 | bytes | 3KLnGqaFmyuGfw7w6z… |
| 2026-09-06 | d32763e0500cc02c26f3dbe8834f6b377c7464da3d6d4309a97b887ad4613c6a prev a253a431bd50 | 7899 | bytes | 38SyAWqZdL2VuGNZsb… |
| 2026-09-05 | a253a431bd502c407ff77e57a6bac89fae4bdd2c85ab3f7a89522da1e37fb333 prev fa771f1f77db | 7884 | bytes | 3ocNGmvRMyNYJR8Z4c… |
| 2026-09-04 | fa771f1f77db845aadc5525052dd2affec04c68cde0b817c2b4b428ba4db9afb prev 1b7773bfa275 | 7859 | bytes | 3siY3P4kAX4qZmAH9y… |
| 2026-09-03 | 1b7773bfa2756babbce9272b19e5f6689bf825b148063e9a7db0af7046ba60e7 prev 7ee6eb51725e | 7818 | bytes | 464zmf3EehKRNWHLTN… |
| 2026-09-02 | 7ee6eb51725efb1a5c7b33929d273eb5386dac1d377e88691703e31955e3e330 prev 9cc295f40099 | 7788 | bytes | 2QDSWPxgp42pf4Ny7U… |
| 2026-09-01 | 9cc295f4009905041a51317957d0500f046b540e2cdc09c3fa079a76f38d257e prev 8c88a90e743c | 7765 | bytes | XxoZg1CCUmbupfW6Mw… |
| 2026-08-31 | 8c88a90e743c87f991ec1658c9f099a155f6a15e30c7a934fb29ecdc066b72f3 prev bd1b8718449a | 7737 | bytes | 4Gjp1yrJR4CHL59Whf… |
| 2026-08-30 | bd1b8718449a81e02faf3a0e9294aa0d112d4d7d3e6a635ec38c5924982ec61a prev a821171458a1 | 7721 | bytes | 2LUTbqhq4MGrvp5tmN… |
| 2026-08-29 | a821171458a1f33a3ac251f3759c6e8de49bbc7ec98800c04c7ba9182566bfd7 prev 38929e919420 | 7706 | bytes | S1QjaY3F7Ff4611xT2… |
| 2026-08-28 | 38929e91942069edd2fbca503a2a2d4a887f9f4af924ba6a5a6333da7375378f prev 6954b9749861 | 7681 | bytes | 4akffu2zB2X6VPXX5j… |
| 2026-08-27 | 6954b9749861d4febb01f17a7bde5cf571fe4bad0a4e6661497c296514e39869 prev 963a2e820ebb | 7655 | bytes | 3n9NjWnv61qtzP1CRW… |
| 2026-08-26 | 963a2e820ebbe7aec74ccd2b57fdee1b3d7312b1956f60f8be50494d2bc1d403 prev e12d46effaf2 | 7626 | bytes | 3VpNzniJiXN9LLxS2q… |
| 2026-08-25 | e12d46effaf27114aa6b076236677bcf69a408934617a6f3dd561cce1aa9d0f8 prev 14ca8db6c741 | 7609 | bytes | 4wGYTT9tswsQkRbC2N… |
| 2026-08-24 | 14ca8db6c7417b0e62e023e490bcd4e3a48aabf7b62145fdb1b986c0ccbca5cf prev ab5a0b72367b | 7582 | bytes | 5cQx94D1w7czWdGFjP… |
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.