Provably fair draws

In short
Get Hot Drop publishes a hash of a lot's seeds before the first seat is taken and reveals each round's seed right after its draw, so anyone can replay every spin. This proves a result wasn't changed afterwards. It doesn't prove the seed was random: we make the seeds, and nothing from outside is mixed in yet.
How it works
Commit, play, reveal.
Commit
When a lot is created we fix a secret seed for every round and put their hash on the lot page. A hash is a fingerprint: it can't be turned back into the seed, and no other seed matches it.
Play
Players take seats and boost. The seats and their slices are public, and the formula that turns a seed into a spin is fixed.
Reveal
Right after each round we publish its seed. Anyone can hash it, compare it with the fingerprint and work the spin out again.
If a revealed seed doesn't hash to the fingerprint, or the formula gives a different winner, the draw was tampered with, and anyone can see it.
What it proves, and what it doesn't
You can check
- The result wasn't changedThe seed was fixed first, and its hash was public before the first seat.
- The wheel you watched is the drawThe replay rebuilds the spin from the seed and the public slices.
- The slices were the players' ownAfter a draw every seat, slice and weight of the round is public.
You can't, yet
- That the seed was randomWe make the seeds and hold them until the reveal, so the check can't rule out our knowing a result before a round.
- An outside auditThe method is public, but no outside lab certifies the draws.
The usual fix for the first gap is a public randomness beacon: a number nobody controls, mixed into the seed after entries close. Mixing in the drand beacon is planned and not built yet.
A worked example
A made-up final of three players. Seat 11 bought a boost, so its slice is wider.
Check the roll. Hash the final's revealed seed with the round and the spin number, keep the first 13 hex digits, and take the remainder:
printf '%s' "acce7f7c8f2d6b60c5ddc40ff70dd8e212c0390700d2c4b7954afec9b1b6e49b:3:1" | shasum -a 256 | cut -c1-13
# 631753ae94886
python3 -c 'print(int("631753ae94886", 16) % 35000)'
# 15574Check the seed. Hash the round 3 seed three times. The last line must be the seed hash the lot page showed before the first seat:
s3=acce7f7c8f2d6b60c5ddc40ff70dd8e212c0390700d2c4b7954afec9b1b6e49b s2=$(printf '%s' "$s3" | shasum -a 256 | cut -d' ' -f1) s1=$(printf '%s' "$s2" | shasum -a 256 | cut -d' ' -f1) printf '%s' "$s1" | shasum -a 256 | cut -d' ' -f1 # 05dd3dba3100c9e1aaa8719f07a2cb2253a3392b0634072269adbd244cafbc33
A seed is hashed as the text you see, with no line break after it. On Linux, sha256sum does the job of shasum -a 256. A real lot is checked the same way with the seeds from its page.
The formula
seed_k = sha256(seed_k+1) one seed a round, chained backwards seed hash = sha256(seed_1) on the lot page before the first seat roll(s, n) = int(first 13 hex of sha256(seed_k + ":" + k + ":" + s)) mod n
Slices lie in seat order, each as wide as its weight. In a cut round the wheel stops under a window that starts at roll(2, total) and is min + roll(1, max − min + 1) units long; every slice it touches goes through. In the final the slice holding roll(1, total) wins.
Revealing round 1's seed tells you nothing about round 2's, because a hash can't be run backwards.
Five questions for any "provably fair" site
- Is the commitment public before you pay? A hash published after entries close proves nothing.
- Is the list of entries public? A fair roll over a list you can't see doesn't tell you your chance.
- Can you replay the result without the site's own tool? The formula should be written down and run anywhere.
- What does the proof cover? It shows the roll wasn't changed, not that the odds or the prices are fair.
- Who chose the seed, and is anything outside mixed in? A beacon, a player's own input or an auditor each close a different gap.
Our answers: yes, on the lot page; yes, after each draw; yes, the formula is on this page; the draw only, not whether a seat is worth its price (that is on the odds page); we choose the seed, and nothing outside is mixed in yet.
