How Beaver draws work

Published before. Verifiable after.

A Beaver draw is built so that each step can be checked by somebody who was not there. This page walks through the method in order.

Boab reading a plan.

Step 0

Before the draw: the entries close

Sales close at the time the competition says they close. Accepted free entries, from the online or postal route, are already in the same pool as paid entries.

Tickets that were reserved during checkout but never paid for are released back to the pool automatically. Reserved is not sold, so it is not entered.

Commit

Step 1: commit the entry list

The final eligible entry list is frozen. Beaver computes a cryptographic fingerprint of it, a hash, and publishes that fingerprint before any winner is selected.

A hash has one useful property here: change anything in the list, one ticket, one owner, one character, and the fingerprint comes out completely different. Once it is published, the list cannot be quietly altered.

Freeze the list. Publish the fingerprint.

More detail on committed entry lists.

Randomness

Step 2: name the randomness before it exists

A draw needs a random input. The risk with any random input is that somebody picks it after seeing the entries, trying values until a preferred winner comes out.

Beaver removes that option. The public source of randomness is identified before the value it will produce exists. Nobody, including the operator and Beaver, can know or choose it in advance.

You cannot choose a number that does not exist yet.

Integrity

Step 3: refuse a changed list

Before selection, the entry list is checked against its published commitment. If it no longer matches, the draw does not run.

This is tamper refusal. It is not a warning or a flag in a report. The draw stops.

Select

Step 4: select the winner without avoidable bias

The winner is selected from the committed list using the published randomness.

Turning a random number into a ticket number is easy to do slightly wrong. The naive approach, taking the remainder after dividing by the number of tickets, gives some tickets a marginally higher chance than others. Beaver selects without that avoidable bias, so every eligible ticket gets its fair share of the chance.

Publish

Step 5: publish enough to check it

The result is published with the values somebody needs to reproduce it: the entry commitment, the randomness and the selection. Anyone can run the check and get the same winner, or find out that they do not.

Published odds are also part of the competition page and the draw record, so the chance the customer was sold is on the record too.

Evidence, not reassurance.

Instant wins

Instant wins: sealed before sales open

An instant win result is known the moment the ticket is bought, so it needs a different shape. Beaver commits the instant win allocation before sales open, then reveals as tickets are bought. The allocation cannot be rearranged once people are playing.

We sell the sealed allocation engine, not game skins: scratch cards, wheels and similar formats are not available today.

Fulfil

After the draw: the winner and the prize

Draw processing runs every minute, so scheduled draws happen on schedule. A postal free entrant without an account can still be selected, and the operator can contact them.

Prize fulfilment, including age checks before a prize is released, dispatch and delivery evidence, is tracked in the Operator Console.

See the method run

Commit. Reveal. Select. Check.

The same five steps, running in your browser on 1,000 example entries.

  1. 1Commit the entries
  2. 2Reveal the randomness
  3. 3Select the winner
  4. 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.

    Verify a draw

    Don't take our word for it. Check it yourself.