Full transparency

How VeriDraw certifies every draw

From the moment you create a draw to the second an entrant verifies the certificate. Here is exactly what happens at every stage, and why the result is impossible to manipulate.

1

Before tickets go on sale

Create your draw and lock it in

Set up your draw on VeriDraw. Name it, add your prizes, set the close date. Behind the scenes, VeriDraw generates a secret key and computes its SHA-256 hash. This is your commitment hash, mathematical proof that the draw method was locked in before anyone could buy a ticket.

VeriDraw draw creation form with commitment hash generation

What the commitment hash proves

The commitment hash is published before tickets go on sale. Once published, neither you nor VeriDraw can change the secret key behind it. It is a one-way function: you can verify the hash matches the key, but you cannot reverse-engineer the key from the hash. This is the foundation of the entire trust chain.

Publish the commitment hash before tickets go on sale. VeriDraw gives you a plain-text hash to copy and paste, ready-made HTML badge snippets, or an embeddable Smart Widget that updates automatically as the draw progresses from "created" through to "certified."

2

On draw day

Run the draw

Enter the total tickets sold, click "Run draw." VeriDraw fetches the latest Bitcoin block hash from three independent block explorers: mempool.space, blockchain.info, and blockchair.com. This block hash is the external entropy source — a 64-character hexadecimal string that no one on earth could have predicted. For instant-win draws, a Bitcoin block hash is also used at the moment of confirmation, before ticket sales open.

VeriDraw run draw page showing Bitcoin block hash fetching

Why Bitcoin?

The Bitcoin blockchain produces a new block roughly every 10 minutes. Each block hash depends on billions of dollars worth of transactions and computational work. No individual, company, or government can influence what the hash will be. It is the most publicly verifiable source of randomness available, and anyone can look it up on any block explorer. VeriDraw uses Bitcoin for both live draws and instant-win draws, so every certified result has an independent external component.

The secret key, the Bitcoin block hash, and the tickets sold are combined using SHA-256. The result is divided by the ticket count to produce the winning ticket number. For multi-winner draws, each prize position is appended to produce a unique winner per prize.

3

Immediately after

Share the certificate

A certificate is issued instantly at a permanent public URL. It shows the winning ticket, the draw date, your organisation name and logo, and every piece of data needed to independently verify the result. Share it everywhere: social media, your website, email to entrants.

VeriDraw certificate page with verification widget

Anyone can verify, in their browser

The certificate reveals the secret key, the Bitcoin block hash, and the formula. An entrant clicks "Verify" and their browser recomputes the entire calculation using the Web Crypto API. No server request, no trust in VeriDraw required. If the numbers match, the draw was fair.

The certificate URL is permanent. It never expires, cannot be edited, and does not require login. Entrants can also use the ticket lookup page to enter their ticket number and instantly see whether they won.

The difference

What draw “proof” looks like today, and what it should look like

Most operators post a screenshot of a random number generator and call it transparency. Here is what that actually proves, and what VeriDraw proves instead.

A typical “proof of draw”
google.com — random number generator847Min: 1   Max: 2,000

What this proves

That someone generated the number 847 at some point. Nothing else.

  • No proof the method was decided before tickets sold
  • No proof this was the first and only generation
  • No proof the screenshot was not taken after the result was known
  • No way for anyone to independently verify
  • No audit trail whatsoever
A VeriDraw certificate
veridraw.co.uk/certificate/VD-2026-00142Spring Raffle 2026Winning Ticket: #847  |  Verified ✓SHA-256 • Bitcoin Block #889,412 • 6-Step Verification

What this proves

That the draw method was locked before tickets went on sale, the entropy came from an unpredictable public source, and the winning number is mathematically inevitable given those inputs.

  • Commitment hash published before first ticket sold
  • Bitcoin block hash = unpredictable, public entropy
  • Formula is deterministic: same inputs always = same winner
  • 6-step verification runs in the entrant’s browser
  • Full audit trail: secret key, block hash, formula, certificate

Open-source maths

The formula behind every draw

Every VeriDraw certificate is produced by this formula. Nothing is hidden, nothing is proprietary. You can verify it yourself with a pen and a SHA-256 calculator.

Single-winner formula

winning_ticket = SHA-256(secret_key : block_hash : tickets_sold) % tickets_sold + 1

Multi-winner formula

winning_ticket = SHA-256(secret_key : block_hash : tickets_sold : prize_position) % tickets_sold + 1

secret_key

Generated by VeriDraw before draw opens. Kept secret until draw runs. Its SHA-256 hash (the commitment hash) is published in advance.

block_hash

The latest Bitcoin block hash, fetched live from 3 independent explorers at draw time. 64-character hex string. Publicly verifiable.

tickets_sold

Entered by the operator on draw day. Included in the hash input so changing the count produces a completely different result.

% modulo

The SHA-256 output (a huge number) is divided by tickets sold. The remainder + 1 gives a ticket number in range. Deterministic and fair.

The entrant experience

What your entrants see

When you share a VeriDraw certificate, your entrants do not just see a result. They get proof they can check themselves.

VeriDraw certificate page with verification widget
1

They click your certificate link

You share the permanent URL on social media, your draw page, or in an email. No login required, no app to download.

2

They see the full result

The certificate shows the winning ticket, draw date, your organisation, and the Bitcoin block used. Everything is laid out clearly.

3

They click "Verify"

The verification widget runs a 6-step check entirely in their browser. It recomputes the SHA-256 hash, checks the commitment, confirms the block hash, and validates the winning number.

4

They see "Verified" or they don't

If every step passes, the draw is mathematically proven fair. If anything is off, the verification fails publicly. There is no grey area.

Zero trust required

The 6-step verification, explained

Every VeriDraw certificate includes a verification widget that runs these six checks in the entrant’s browser. Zero server requests. Zero faith needed.

1

Confirm the commitment

Hash the revealed secret key with SHA-256. Does it match the commitment hash published before tickets went on sale?

SHA-256(secret_key) === commitment_hash
2

Verify the block hash

Check the Bitcoin block hash against public block explorers. Is it a real block? Does the timestamp match draw day?

mempool.space / blockchain.info
3

Combine the inputs

Concatenate the inputs with colon separators, exactly as VeriDraw did. For live draws: secret key, block hash, tickets sold, prize position. For instant-win draws: secret key, block hash, prize ID, instance number.

secret_key + ":" + block_hash + ":" + tickets (live) / prize_id + ":" + instance (instant)
4

Compute the hash

Run SHA-256 on the combined string. This produces a deterministic 256-bit output, the same every time for the same inputs.

SHA-256(combined_input)
5

Calculate the winner

Convert the hash to a number, divide by tickets sold, take the remainder, add 1. This gives a ticket number in range.

hash_as_number % tickets + 1
6

Match the certificate

Does the computed winning ticket match the one on the certificate? If yes, the draw is mathematically proven fair.

computed === certificate ✓

Questions

Common questions about the process

See it in action

The best way to understand VeriDraw is to use it. Create a draw, run it, and verify the certificate yourself.

VeriDraw draw dashboard