Over £250,000 paid out to winnersNew instant win drops every weekFree postal entry on every competitionDownload the app for early access to selected draws

Verify a draw

Verify a draw

Drop in a proof file and your browser checks the draw itself. Nothing is sent to us.

Drop a proof file here

The proof is a small .json file. Download it from any drawn competition page.

Choose a file
Check it outside our site

You do not have to trust us, or this page. Download the proof and run our open reference script on your own computer. It needs Node.js, and two small libraries to check drand's own signature.

node verify-draw.mjs proof.json

How a draw is worked out

Winners are picked by a computer process that gives results anyone can check. Nobody, including us, can choose or change the outcome, and the whole draw can be re-run by anyone from a small file. This is the whole method, called fairdraw-v1.

The random number

We use drand, run by the League of Entropy: independent organisations around the world (including Cloudflare and EPFL) who together make a new random number every 3 seconds. Each number is signed by the group, so it is proven to be theirs, and nobody can know it before it is published.

The steps

  1. Lock the entries. The sold ticket numbers are put in order and hashed (SHA-256). This is the entry fingerprint. When every ticket number is in the draw (sold or not), the full range is fingerprinted too, so which numbers were sold is fixed as well.
  2. Commit to a future round. We choose a drand round that does not exist yet and sign a commitment: the fingerprint, the competition, the number of winning places, the settings and that round. After this the entries cannot change and there is no way to re-roll.
  3. Wait for the round. drand publishes round N at a fixed time (start time plus 3 seconds per round). We fetch it from several public servers, and they must agree.
  4. Make the seed. seed = SHA-256 of "fairdraw-v1 | chain | round | random number | commitment".
  5. Pick. Value k of the stream is the first 6 bytes of SHA-256(seed + k). To choose from n items, take a value x, throw it away if x is at or above the largest multiple of n that fits in 48 bits (so no item is favoured), otherwise the pick is x mod n.
  6. Winners, place by place. A number already chosen, an unsold number (when all tickets are in the draw) or a second ticket of a customer who already has a place (when not allowed) is skipped and the next value is used.

Check it yourself

Every drawn competition has a Download the proof button. Drop that file in above, and your browser re-does steps 1 to 6 and checks drand's signature. Or run the open reference script on your own computer. The same steps are written down for developers in the first lines of that script.

What this proves, and what it does not

  • It proves the entries were fixed before the random number existed, that the number came from drand and not from us, and that the winner follows from both by this method.
  • It does not prove that the prize was delivered. That is covered by our terms.
Verify a draw | CompDemo Ltd