Guide
How to verify a prize draw.
Short answer: you can only verify a draw if the operator published the right things before and after it. If they did, you can check it in three steps. If they did not, you are being asked to trust them.
What has to be published
To check a draw independently, you need three things from the operator:
- A commitment to the entry list, published before the draw. Usually a cryptographic fingerprint (a hash) of the full list of eligible entries.
- A random input nobody could choose. Ideally from a public source, named before its value existed.
- The method. How the random input is turned into a winning entry, precisely enough that you can repeat it.
After the draw you also need the entry list itself, or enough of it to recompute the fingerprint, and the published random value.
Check 1: does the list match its commitment?
Compute the fingerprint of the published entry list using the stated method and compare it with the fingerprint published before the draw. If they match, the list was not changed after the commitment. If they differ, something was added, removed or altered.
Check 2: was the randomness fixed in advance?
Look at when the randomness source was named and when its value appeared. The source should have been identified before the value existed. If the operator generated a random number privately and then announced it, you have no way to know it was not re-rolled.
Check 3: does the winner recompute?
Apply the published method to the committed list and the published random value. You should get the announced winning entry. If you get a different one, the result does not follow from the published evidence.
All three pass, and you do not need to trust anybody.
Red flags
- A video of a random number website, with no list commitment beforehand.
- A commitment published after the winner was announced.
- A random value generated privately by the operator.
- A method described vaguely, such as "selected at random by our software".
- "Provably fair" in the marketing with nothing published to prove it.
Verifying a Beaver draw
Beaver draws commit the entry list before selection, name a future public randomness source, refuse a changed list, select without avoidable bias and publish what is needed to reproduce the result. The public verifier runs the three checks for you. How the verifier works.
What verification does not tell you
It tells you how the winner was selected from the committed entries. It does not tell you whether the promotion was lawfully structured, whether free entries were properly available or whether the prize was delivered. See UK prize draw compliance.
Practice
Run the three checks on an example draw.
Run a draw on 1,000 example entries, then check it. Then change an entry after the commitment and check again.
- 1Commit the entries
- 2Reveal the randomness
- 3Select the winner
- 4Check it yourself
Entry list 1,000 entries
Commitment (SHA-256 of the list)
Not committed yet
Randomness
Named before the draw, published after. Nobody knows it yet.
Winning ticket
Pending
Verification
- Entry list matches its commitment
- Randomness was named before it existed
- Winner recomputes from the published values
Press Run the draw to start.
A demonstration of the method, running in your browser. It is not a live Beaver draw, and it does not use Beaver's exact algorithm or randomness source. The "randomness" here is a stand-in for a public value published after the entries are committed.