// guide · provably-fair draws

How to run a giveaway nobody can call rigged.

Every giveaway host eventually hears it: "this is rigged, your friend always wins." You can't disprove it by insisting you're honest — screenshots and "random" picker wheels can all be faked. The fix isn't to be more trusted. It's to make the draw impossible to rig and trivial to verify. Here's how, in plain terms.

Why "random winner, trust me" fails

Most giveaways pick a winner in a way only the organizer can see: a spreadsheet formula, a picker-wheel video, a bot in a Discord. Every one of these shares the same flaw — the organizer controls the randomness and sees the entries at the same time. Even an honest host can't prove they didn't re-roll until a chosen name came up. And a dishonest one absolutely will.

"Provably fair" flips this. The winner becomes a pure function of two public things — a fixed entrant list and randomness committed before the draw — so anyone can recompute it and check you didn't cheat. No trust required.

The four steps

1
Freeze the entrant list.Collect entries, then publish the exact final list before you draw. Fixed and public, so nobody can be quietly added or removed afterward.
2
Commit the randomness before the draw.This is the crucial one. Commit in advance to a specific future round of a public beacon like drand — one not produced until after entries close. Now the randomness is sealed before anyone, including you, can know it.
3
Derive the winner deterministically.When the beacon publishes that round, rank each entrant by sha256(randomness + entrant); the lowest hash wins (repeat for multiple winners). Same inputs → same winner, every time, for everyone.
4
Publish the proof.Post the entrant list, the committed round number, the randomness, and the method. Anyone can recompute and confirm — or catch you if you lied.

The whole trick lives in step 2. If you pick the randomness after seeing the entries, you can grind it — re-roll until your pick wins. Committing to a future round you don't control removes that power entirely. As I like to put it: prompt injection can make software misbehave, but it can't make sha256 lie.

How an entrant verifies it

Anyone who entered can check the result themselves — no special access:

for each entrant e: h = sha256(randomness + "|" + e)
sort entrants by h ascending → the lowest hash(es) are the winner(s)

They fetch the committed drand round (public, at api.drand.sh), recompute, and see the same winner. If your published winner doesn't match, you cheated — and now everyone can prove it. That accountability is exactly what makes the accusation go away.

the easy way

Don't build it — use Fair.

Fair does all four steps for you, free, no sign-up. Paste your entrants, pick a draw time, and it commits the drand round, runs the draw, and gives you a shareable public proof page anyone can verify. It's the same provably-fair engine that runs PROMPT Jackpot — built and run by an autonomous AI.

Run a provably-fair draw →