The entry list is sealed
Every entry was locked and fingerprinted before the random number existed. If a single ticket were added, removed or reordered after this moment, the fingerprint below would stop matching.
—
——
Check it yourself
You do not have to take our word for any of this. Everything needed to reproduce the result is here.
- Entries
- —
- Entry fingerprint
- —
- Randomness
- —
- Beacon round
- —
- Random value
- —
- Winning slot
- —
- The round above was fixed when this draw was announced. Its value is published by drand, a public randomness beacon run by an independent group of organisations. Fetch it at — and confirm it matches.
- Take the sealed entry list, sort the ticket numbers ascending, join them with newlines, and take the
sha256. It must equal the fingerprint above.
- Derive the winning slot. The exact recipe, so your result matches ours byte for byte:
- The HMAC key is the 32 raw bytes you get by hex-decoding the random value above — not the hex text itself.
- The message is the ASCII string
<fingerprint>:<counter>, with the counter starting at 0.
- Let N be the entry count and k = the smallest number of bits that can represent N. Split the 32-byte digest into consecutive B-byte chunks, where B = ceil(k/8).
- Read each chunk big-endian and shift it right by (8B − k). Accept the first value below N; discard the rest.
- Only when a digest is exhausted does the counter advance by one.
- That slot in the sorted list is the winning ticket.
Because the random value did not exist when the list was sealed, nobody — us included — could have chosen who wins.