How competition draws work
Perfect Prizes uses commit–reveal randomness you can check yourself — no trust required. There are two related flows:
- Main prize draw — which ticket wins the competition’s main prize(s) after entries close.
- Instant-win ticket allocation — which pool ticket numbers your purchase receives (revealed in-game after checkout).
Main prize draw
Every prize draw competition (and the optional main draw on some instant-win comps) uses a competition-wide seed.
Step by step
- Seed commit — before the draw, we generate a secret seed and publish only its SHA-256 hash.
- Entries close — ticket purchases stop at the competition close time.
- Seed reveal — at draw time the original seed is published.
- Winning ticket(s) — we hash the revealed seed and map it to ticket number(s) between
1and total tickets sold. - Winners — the holder of each winning ticket number wins the prize for that rank.
Tickets are numbered 1 … N in the order they are sold. The draw only picks which position wins — it does not reshuffle who owns which number.
The formula
random seed → SHA-256 → H (64 hex characters, public)
↓
treat H as huge integer R
↓
winning ticket = (R % N) + 1
For multiple prize ranks we run a deterministic Fisher–Yates shuffle from the same seed (SHA-256(seed|perm|i)) so each rank gets a unique winning ticket.
What you can verify
- The seed hash was published before the draw.
- The revealed seed matches
SHA-256(revealed) === H. - The winning ticket calculation matches the formula above.
- The winner corresponds to the ticket ownership record.
Example — 10 tickets
If N = 10 and the hash interprets to integer 94231:
(94231 % 10) + 1 = 2 → ticket #2 wins.
On each competition page you will see the commitment log (seed hash and, after draw, revealed seed and winning ticket numbers).
Instant-win ticket allocation
Instant-win competitions also use commit–reveal — but per order, when tickets are assigned from the prize pool.
Step by step
- Order seed commit — at checkout we generate a secret order seed and publish only its SHA-256 hash.
- Pool snapshot — before assigning that order, we freeze which ticket numbers are already taken.
- Pick each line — for line index
0, 1, 2…in the order:pickIndex = SHA-256(seed + ":" + lineIndex) mod remainingCount
then take the Nth free slot in the pool. - Seed reveal — when the order finishes assigning, the seed is revealed so the same picks can be replayed.
- Play / claim — you reveal prizes in the instant-win game; the math above is what chose your ticket numbers.
What you can verify
- On a closed instant-win competition page: the public allocation proof (chronological orders + per-step pool map).
- On your order (while signed in): the per-order assignment proof with the same formula.
- Any main draw on that competition still uses the separate competition seed described above — not the order seeds.
Where to look on the site
- Prize draw comps — seed proof panel on the competition page.
- Instant-win comps (after close) — allocation proof section on the competition page.
- Your purchases — order / purchase history links into play and proof details where available.

