How every draw works
Fair isn’t a promise here. It’s arithmetic. Before entries open we lock in a secret and a future moment of public randomness. At the deadline the entrant list is sealed. Then one published number picks the winner — and anyone, including you, can re-run the exact calculation and land on the same name.
Three public facts, one name
The app’s secret
A random secret we generate and immediately fingerprint with SHA-256. The fingerprint is published before entries open; the secret itself is revealed at draw time, so you can confirm we never swapped it.
The sealed list
At the deadline every entry is sorted and hashed into one root. Nothing can be added, removed, or reordered afterwards without changing that root — so the list you see is the list we drew from.
The world’s dice roll
A drand round: public randomness a league of independent parties produces on a fixed schedule. No one — not even us — can predict or bias it. We commit to the round number before entries open.
The whole calculation
winner = HMAC(secret, dice_roll : sealed_list) mod entriesIn plain terms: mix the revealed secret with the public dice roll and the sealed list, turn the result into a number, and count that far down the list. Same three inputs, same winner, every time — on our servers or in your browser.
Re-run a real draw, right here
Paste any draw’s serial. We fetch its published values and recompute the winner in your browser — the same verifyDraw() our worker used to record it.
The honest limits
We can’t change the list after sealing. The root is published at the deadline; any edit makes it stop matching.
We can’t re-roll.One drand round is committed in advance. If we didn’t like the result, there is no second draw to reach for.
We can’t verify likes.X keeps them private, so a like never decides a draw. If we can’t check a condition, it doesn’t affect your odds.
Questions worth asking
Can you see who's going to win before the deadline?
No. The winning number comes from a drand round whose randomness does not exist until after entries close. We commit to that round's number before entries open, so we can't shop for a friendly one either.
Could you swap the secret after seeing the entries?
No. We publish a SHA-256 fingerprint of the secret before entries open. At draw time we reveal the secret itself; anyone can check it still hashes to the fingerprint we committed to. A swapped secret fails that check.
What stops you adding or removing entries after the fact?
At the deadline the full entrant list is sorted, hashed, and its root published. Change one entry — add, remove, or reorder — and the root no longer matches. The verifier catches it.
What is drand, exactly?
A public randomness beacon run by a league of independent organisations. Every few seconds it publishes a new random value with a signature that proves the whole network produced it — no single party, including us, can bias or predict it.
Why isn't 'like the post' a winning condition?
X keeps likes private, so we can't verify them. We never make a condition we can't verify decide your odds — likes are honour-system only, and marked as such.
Do I have to trust your server to believe a result?
No. The verifier on every certificate runs in your browser against the published values. There's also an open-source verifier you can run yourself — same inputs, same name, no server involved.