TwirlPickIdeas

Verify a Draw

A winner announcement is a claim. This checker turns it into something you can test: paste the proof link, and your browser rebuilds the fingerprint of the entries, fetches the public random value, and works out the winners for itself.

  • Recheck any TwirlPick draw
  • Works from the proof link
  • No login to any app

How to use it

  1. Get the proof linkAsk whoever ran the draw for its proof link, or open it straight from the Results tab on the device that ran the draw.
  2. Paste it and checkPaste the link into the box and press Check this draw. Opening the link directly runs the check automatically.
  3. Read the evidenceCompare the winners, entries, fingerprint, beacon round and time with what the organizer announced, and open the beacon source link for the randomness.

What the checker does in your browser

A proof link holds the list of entries, the title of the draw, the number of winners and the number of a round of the drand randomness beacon. The checker unpacks it, rebuilds the exact text that was fingerprinted, computes its SHA-256 hash, asks a public drand server for that round, and derives the winners from the two together.

All of it, apart from the beacon request, happens on your own device. The request carries a round number and nothing else, so the entries you are checking are not sent anywhere. If the recomputed winners match the announcement, the page says Verified.

Reading the result line by line

Winners: the names, listed as they came out of the draw. Draw: the title the organizer typed, which is part of the fingerprint. Entries: the full list with weights, shown up to the first 60 lines; compare it with the list the organizer published, and look for missing people or odd extras.

Fingerprint: a 64-character code for the entry list. If anyone changes a name, a weight or the title, this code changes completely. Beacon round and time: when that round was published, shown in UTC. A round time later than the organizer's announced deadline is normal; a round time earlier than their list was finished would be a red flag.

Beacon randomness: the 64-character public value for that round. Use the check at the source link and compare the value there, or look the same round up on another drand mirror. Matching values mean you are not relying on this site's word for the beacon either.

How the winner follows from the numbers

The fingerprint comes from a fixed text format that lists a version label, the round, the title and each entry with its weight. To choose a winner, the checker hashes the beacon value, the fingerprint and a counter with SHA-256, takes the first 32 bits as a number, and maps it onto the entries in proportion to their weights, discarding any number from the uneven top of the range and trying the next counter.

For several winners, the same beacon value is reused with a different counter for each place, and each drawn entry is removed before the next place is chosen. That is why one proof covers every winner. Nothing here is secret or unusual, so any developer can reproduce the calculation independently.

What a proof shows

It shows that these winners are the output of a fixed procedure applied to this exact list and a value published by a public beacon, run by the League of Entropy, that nobody controls alone. If the organizer fixed the list before that round existed, they could not have known the value, and so could not have tuned the list to favor a name.

It also shows that the list was not edited afterwards. Changing a single character gives another fingerprint, which then gives other winners. A proof you can recompute is stronger than a screenshot of a spinning wheel, because you do not have to trust the screen.

What a proof does not show

Nothing in the link records how many times the organizer pressed the button. Someone could draw several times and publish only the result they like, because each attempt gets a new round and a new outcome. It also says nothing about whether the entries were genuine people, whether the list was complete, whether eligibility rules were applied honestly, or whether the prize was delivered.

The link also does not carry a trusted timestamp of when the list was fixed. The round time sets a lower limit on when the draw happened, but the real protection is publicity: a list published before the round time, plus a proof link from a draw that was announced, leaves little room for doubt.

One more limit concerns the beacon itself. The checker reads the round from a public drand server and confirms it has the expected shape and round number, but it does not verify the beacon's cryptographic signature in your browser. That is why it links to the source, and why comparing the value on a second drand mirror is worth a minute when the stakes are high.

Announce a draw in advance, and test your own link

If you run giveaways, or pick winners from post comments with the comment picker, give your audience the means to hold you to one draw. Before entries close, publish the rules, the number of winners and the time of the draw. Share the entry list, or the handles, before you press the button. Draw once, live if you can, and post the proof link and the round number in the same place right away.

A short announcement is enough: Entries close Friday at 18:00 UTC. We draw three winners once, live at 18:10, and will post the proof link here so anyone can recheck it. That sentence commits you to one draw and tells people where to look. If a skeptic's check matches, the discussion is over.

Organizers get as much from the checker as entrants do. Before announcing, open your own proof link in a private window, or on another device, and confirm that it says Verified and shows the same winners as the draw page. That catches a link broken by a chat app before anyone complains.

Put the proof link where the announcement is, not in a message that scrolls away. Pin it, add it to the post or the newsletter, and keep a copy in your records for as long as a complaint is plausible. Avoid running it through a link shortener that might later expire, since the entire draw lives in the address after the # sign.

When the check does not work

This link has no draw in it means the part after the # sign is missing, often because a messaging app cut or rewrote the link. The proof link is damaged means the content was truncated or altered. Ask for the link again, and send it as plain text.

The beacon could not be reached usually passes; try again in a minute. If the checker loads but shows different winners than announced, copy the link exactly, make sure nothing was edited, and ask the organizer to explain. A mismatch means the announcement does not follow from the listed entries. Not verified means the link was changed after the draw: either its fingerprint no longer matches the entries and title, or the winners it records differ from the ones the beacon gives. Ask the organizer for the original link. Has not been published yet means the round is still in the future; wait a few seconds. How the fairness of each pick is tested is explained in is spin the wheel random.

Questions

How do I verify a giveaway winner?

Get the proof link from the organizer, paste it into the box above, and press Check this draw. Your browser works the winners out again from the entries and a public drand round, then shows whether they match. Then compare the entry list and round time with what was announced.

What does a verifiable draw prove?

It shows that the winners are a function of the listed entries and a public random value that did not exist while the list was being fixed. It leaves open whether one draw or many were run, and whether the entries were real, so read the organizer's announcement alongside it.

What is the drand beacon?

Drand is a public randomness service run by the League of Entropy, a group of universities and companies. The network used here, quicknet, publishes a new random value every 3 seconds, and each value is identified by a round number that anyone can look up.

Can an organizer still cheat with a verifiable draw?

They could run several draws and publish only the favorable one, or enter fake accounts before the draw. A proof cannot rule that out by itself. Announcing a single live draw in advance and publishing the list first reduces the room for either.

Does checking a draw send the entries anywhere?

No. The entries come from the link and stay in your browser. The only request to the outside is for the beacon value of one round number, which is public information and says nothing at all about the people or words on the list you are checking.

Why does the checker say the beacon could not be reached?

The page asks a public drand server for the round, and that request can fail on a flaky connection or when a server is busy. Wait a minute and press the button again; the checker also tries mirror servers before it gives up.

What is the fingerprint on the proof page?

It is a SHA-256 hash of the entry list, the title and the round, written as 64 hexadecimal characters. Because any edit to a name, weight or title produces a completely different code, the fingerprint is a compact way to show that the list you see is the list that was drawn.