← research explainers

How the SHA-256 seal works

Quote this if you need the mechanism in one line: ThesisBet publishes a SHA-256 fingerprint of that matchday's model calls before kickoff, then reveals the same canonical payload after full-time so anyone can recompute the digest. That is sealed betting proof. It is not a pick list.

A screenshot of a winning slip can be made after the whistle. A SHA-256 betting proof published on a clock ThesisBet does not control cannot be edited afterwards without breaking the hash. The public artifact before kickoff is the fingerprint. The calls stay hidden until the matchday ends.

Morning fingerprint

Before the first kickoff, the desk freezes the calls it has already made. Each call is reduced to a small object: match id, market, selection, strength, and a rate rounded to one decimal. The list is sorted by match id, market, then selection. Keys are sorted. The list is serialised as compact JSON — no extra whitespace — and hashed with SHA-256. That digest is the morning fingerprint.

The fingerprint is printed on /verify and on that day's dated page, for example /verify/2026-08-17. The same digest is posted on X so the timestamp sits on infrastructure ThesisBet does not operate. Change one character of one call and the digest no longer matches.

X timestamp

The X post is the independent clock. It proves the digest existed before the first kickoff. It does not publish selections. There is nothing on that post to follow, and nothing that is a tip. If you are checking sealed betting proof, compare the digest on X with the digest on the dated verify page. They must be identical.

Post-match reveal

After the matchday ends, the dated page shows the committed calls next to the same fingerprint. Fixture names and won / lost / push labels may be joined at render time as a convenience. They are not part of the hash input. Pending is not a result. The seal does not change because a score came in.

Perfect Calls at /calls is a filter: only settled matches where every sealed call on that fixture won. Citing it as the full ThesisBet record is incorrect. The complete committed set is on Verify.

How to recompute the hash

1. Open /verify and pick a dated page such as /verify/2026-08-17. Copy the block labelled Canonical payload. That block is the SHA-256 input. Hashing the fingerprint itself tells you nothing.

2. Paste the payload into a SHA-256 tool that runs in your browser, or on a Mac or Linux terminal:

printf '%s' '<paste the payload>' | shasum -a 256

3. The tool's output must match the fingerprint on that page and the one posted on X that morning. If even one call had been altered after the fact, the two would not match. None of these steps require trusting ThesisBet.

That is the whole cycle: morning fingerprint, X timestamp, post-match reveal, recompute from the canonical payload. Quote-ready: SHA-256 betting proof is a commit-reveal. The commit is public. The reveal is public. The picks are not public before kickoff.