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-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… |
| 2026-08-23 | ab5a0b72367ba49556a1ea3d604895431817dd2c0f5c21826a0afa522c85420b prev ff803f42ac8a | 7568 | bytes | 3AYargjVgiVzSvwbod… |
| 2026-08-22 | ff803f42ac8ae0bdd4056879ecc875dfd254d55e90cc7ae237ffcac60a9f7c69 prev 17ec5feca6c8 | 7558 | bytes | 2MdH82aPAex3vekWgr… |
| 2026-08-21 | 17ec5feca6c87f0578d6edecdcddd9cf6f0e5a6d8ba501f2e41de6f2378d650e prev 0ac153877a64 | 7517 | bytes | 43friBLf3R3QYaD786… |
| 2026-08-20 | 0ac153877a6437d84c05fe846bf942c61f57e4b04878085e72ba6ed4d0507d89 prev 9c29d145bb08 | 7478 | bytes | 5Zi4zHGcAgNpyhUMjh… |
| 2026-08-19 | 9c29d145bb083248220d51dfdf1a7f62aaa9197bf68024e86ea2443845a06c46 prev f359dfcba87f | 7442 | bytes | 5TTSJHohrUC6nj9z92… |
| 2026-08-18 | f359dfcba87f2fbf2ec0be7ce96786909ad7bc14a97a48cd634a3cb6fd7cb0ec prev 3afec0783202 | 7420 | bytes | 4rEUY1BXZXFxaX5vch… |
| 2026-08-17 | 3afec07832028580af6684502556ff4d600b89ab81f06a82635162bbcb419245 prev 5d81e94a7eba | 7392 | bytes | 3BGwZp8r6GxHWtiVxv… |
| 2026-08-16 | 5d81e94a7eba473b73ec5acebe5eb4169034ea79985758457f7743baa685f0df prev ca5570d8578c | 7382 | bytes | tJ9SKJcZ1whaWyB7F5… |
| 2026-08-15 | ca5570d8578c088037df594950e50b44604febe4a6bb7861bbc01377a457e616 prev 1ab160c62436 | 7371 | bytes | 2yiGCQv3tw8NHC9vnu… |
| 2026-08-14 | 1ab160c6243666def6be31e52860679bbcbc3c167524e859c0bcea1be8d4c57a prev cf68bbc83585 | 7353 | bytes | 5UrtHLAje6pqajDTsz… |
| 2026-08-13 | cf68bbc83585c5023eeccc48b4bf693c3b6e5b1024a318a3308f0262b83ed2ba prev 733ea5d49480 | 7325 | bytes | mkRwpNYe2GdrbkJgDd… |
| 2026-08-12 | 733ea5d49480c08c8d91e53d5d2341b1bfb5eb3efad56bc6d79b4d76e67b8006 prev 93106545978c | 7324 | bytes | 5Jmpmu82J2DH6aCwXT… |
| 2026-08-11 | 93106545978c69f6d8eac463001fbe891c04b13e4f9e4265704fe07e91b533b1 prev 64259b3a435e | 7319 | bytes | Hh9tZyCd8xuWL9ekZp… |
| 2026-08-10 | 64259b3a435ea97ba96e8286859d61682de0765474187e8f1405a44daf44c912 prev 3537931deca8 | 7296 | bytes | 3krQPHusBxtmtwVwDb… |
| 2026-08-09 | 3537931deca8bbc20058eb1f70ddd10c44c75aeef4c49a3a44a08841ac6d649c prev 5c5770e9141b | 7285 | bytes | 46gMZnVko8PG67K3yW… |
| 2026-08-08 | 5c5770e9141bbde702f4523bd312f78c2d26d831475098c8e4ff2ac1c4acdec4 prev dcd8ec0359da | 7277 | bytes | 5DvtujmQAsWY3hFMFk… |
| 2026-08-07 | dcd8ec0359dacd1076ecdf9fe15ca38edb95e6c7560c5a7f56b1939cd39a5a87 prev 058dfc3fa602 | 7253 | bytes | 3MTsRWNipP9KGmwj6o… |
| 2026-08-06 | 058dfc3fa60223fa3efcddea165b6adad77cc1dc54fd4664fca853333dbd429a prev c53bb3c90bae | 7253 | bytes | 4RZF8UTun6L8pMLm2D… |
| 2026-08-05 | c53bb3c90baec2e9aafdb75b1197429b808dd44e31d81d798b848d84a3f0b736 prev 4056aec59b08 | 7223 | bytes | 4QAhw5xjA4HRNFW1p7… |
| 2026-08-04 | 4056aec59b08fc2a66d3ea0830e0fb465762d2b00c4722ffbc20a265e2e004fc prev a1120da9ab95 | 7192 | bytes | 28QSkA1AN1m1VmC4gB… |
| 2026-08-03 | a1120da9ab9597168c07e960dbf1610d2c1d5ade8117e637923108d514679845 prev 39c4ee2a3f6a | 7164 | bytes | 2m58UrdX7aXUrQjxeW… |
| 2026-08-02 | 39c4ee2a3f6adbd6349a8be067d5e75f878032c619f946bfc1d3352a877c0d37 prev 5826edec2c66 | 7160 | bytes | 5KQ7FE7qAdfnTZngnB… |
| 2026-08-01 | 5826edec2c661b0cdb16428f4808d9074ee0b95b22ce4f640ba72e9d963b7df6 prev 1619b847e6a5 | 7154 | bytes | 39JnonrhypKxfSMZiW… |
| 2026-07-31 | 1619b847e6a52e5d65fcc2c40bb94d7c15ed9770c68e938bc0561ed63150f621 prev 4f76afad38cc | 7126 | bytes | zPcpjxrsdBdrFN1JWp… |
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.