Verification

How every giveaway draw can be checked

A giveaway is only fair if nobody, including the host and us, can choose or predict the winner. Here is exactly how GetSocialExport draws winners, and how anyone can check a draw from its certificate.

The four steps of a draw

  1. The entrant list is locked. The host's extension collects the comments, applies the giveaway rules, and sends the list of eligible entrants to our server. The list is put in a fixed order and its SHA-256 fingerprint is recorded with the time. From then on, changing a single name would change the fingerprint.
  2. A future random number is chosen. At that moment the server picks a drand round that will only be published about 30 seconds later. drand is a public randomness beacon run by the League of Entropy (Cloudflare, Protocol Labs, universities and others): its numbers can't be predicted or influenced, and each one carries a signature anyone can check.
  3. The winners are computed. Once the round is published, a seed is made from the giveaway code, the draw number, the list fingerprint and the random number. Winners are picked from that seed with SHA-256, without bias, giving extra weight only to entrants with bonus tickets defined by the rules.
  4. Everything is published. The certificate shows the winners, the fingerprint, the round, the seed, the time the list was locked, every redraw with its reason, and (unless the host made it private) the full entrant list.

What you can check on a certificate

Open any certificate (scan its QR code) and your browser checks it by itself, without trusting us:

  • the published entrant list matches the fingerprint recorded before the draw;
  • the random number comes from drand, with a valid BLS signature from the League of Entropy;
  • the list was locked before that random number existed;
  • recomputing the draw gives exactly the same winners.

You can also type your name in Did you enter? to confirm you were in the draw, even when the host keeps the list private.

What a certificate does not prove

The draw itself is provably fair. The certificate can't prove that the host applied reasonable rules or delivered the prize. The entrant list comes from the host's own extension, which is why it is published for participants to check, and why every redraw is shown with its reason.

Technical details

  • Algorithm: socialexport-draw-v1. Canonical list: one line per entrant, id⇥name⇥tickets, sorted by id, joined with line feeds; fingerprint = SHA-256 of that text.
  • Randomness: drand network quicknet, chain 52db9ba70e0cc0f6…, a round every 3 s, BLS signatures on G1 (RFC 9380).
  • Seed: SHA-256 of the algorithm name, giveaway code, draw number, list fingerprint, round and randomness, joined with line feeds.
  • Picking: SHA-256(seed ‖ counter) gives 64-bit numbers; values above the largest multiple of the range are rejected (no modulo bias); each pick removes the winner and their tickets.
  • Certificates are signed by our server (ECDSA P-256) to prove when each list was recorded. Public key: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEQdshCP/QsGG2k29W80CHSmWbwYpBNgrrIjTf0qPyQuB8cXXLxsCRaty97SO44XaM3aYr6PMwI4dYc/MnSQ3/aw==

Run your own verified giveaway →