How we prove our draws are fair

Grand Draws picks winners with a commit-reveal draw tied to the drand public randomness beacon. Before entries close, we publish a SHA-256 commitment to a secret seed and name a future drand round, whose value nobody can predict, us included. The draw runs automatically at 9pm on the closing date: the seed and the beacon value are combined with HMAC-SHA256 and reduced to a winning ticket number. We then reveal the seed, so anyone can confirm it matches the commitment and recompute the winner at /draw-check.
Why we built it this way
A fair draw should be something you can check after the event, not only something you're asked to believe. So we designed ours around published data. Every value that decides a result is either locked in before entries close or produced by an independent network, and all of it is published afterwards.
That's also why our draws run automatically rather than on camera. We explain that choice in its own guide: why we don't livestream our draws.
How it works, step by step
Four steps, and each one removes a way for the result to be steered:
- Commit. Before entries close, we generate a secret random seed and publish its SHA-256 hash, the commitment. Change the seed afterwards and the hash no longer matches, so we're locked in.
- Name a future round. At the same time we name a round of the drand beacon that will only be produced after entries close. This is the load-bearing part: a round that had already been published could be picked for a value someone liked, so naming a future one is what makes the guarantee real.
- Draw. At 9pm on the closing date the draw runs automatically. The seed is the key and the beacon value, tagged with the winner's position (1 for the first winner), is the message in HMAC-SHA256. The first 8 bytes of the result, read as a whole number, are divided by the number of qualifying entries, and the remainder plus one is the winning ticket. Further winners are drawn the same way from the tickets not yet drawn, so no ticket wins twice.
- Reveal and recompute. We publish the seed with the result. Anyone can hash it to check it matches the commitment, fetch the named round from drand, and rerun the arithmetic to land on the same ticket.
Why neither side can steer the result
The randomness comes from drand, a public beacon run by the League of Entropy, a group of independent organisations. It publishes a new value every 30 seconds, produced jointly so that no single member can predict or bias it. We don't operate it, we can't influence it, and we can't know a future value any more than you can.
Our seed is locked in by the commitment before that value exists. That's the whole point: the guarantee doesn't rest on our honesty. It rests on the arithmetic, and on the order in which things are published.
It also fits the standard the CAP Code sets for prize draws, which may use a computer process that produces verifiably random results. Our statement on every competition is the same: winners are selected at random from all qualifying entries, in accordance with the laws of chance, using a verifiable random draw.
Check one yourself
Our draw checker at /draw-check takes a draw's revealed seed, its beacon, its entry count and its published commitment. It recomputes the commitment and the winning ticket in your browser, and fetches the named round from drand to confirm the beacon value is genuine. You don't have to take our word for a single step of it.
Sources
- drand: distributed randomness beacon (League of Entropy)
- drand documentation: Cryptography (how each round is produced and verified)
- FIPS 180-4: Secure Hash Standard, which specifies SHA-256 (NIST)
- RFC 2104: HMAC, keyed-hashing for message authentication (IETF)
- CAP Code, section 8: promotional marketing (ASA)
Checked against these sources on .
Common questions
What is a randomness beacon?
A public service, run by an independent network, that publishes a fresh, unpredictable random value on a regular schedule. drand, the one we use, publishes a new round every 30 seconds. Anyone can read it, and nobody can predict or alter it in advance.
What stops you picking a favourable beacon round?
The round is named before entries close, so at the moment we choose it nobody knows what value it will produce, us included. Picking a round that had already published would void the guarantee, which is why the order matters.
Can I verify a draw after it has happened?
Yes, at any time. The commitment, the seed, the beacon round and the entry count are all published, and drand keeps every past round available, so a result can be rechecked years later.
Are your draws live-streamed?
No. Draws run automatically at 9pm on the closing date. Instead of a video, we publish everything you need to recompute the result yourself.