The Day One draw, drawn so anyone can check it
The entry list was sealed when entries closed, a public randomness beacon supplied the draw the next day, and a script of about thirty lines reproduces the result.

The Day One keynote ended with a six-character code under the credits. Anyone who entered it on the event page within 30 minutes was in a draw for seventeen prizes: a Day One box and $20, two boxes and $10, four prizes of $5, and ten of $5 in CodeNav credit. Entry was free. We said the draw would be made in the open the next day, and this is how.
How it was drawn
- The list was sealed when entries closed, at 12:46 UTC on 19 October. Each entry got a public number: the first sixteen characters of a hash of a random token stored with it, which says nothing about the email behind it. The sorted list and its SHA-256 seal went on the results page before anything else happened.
- The randomness came from drand, the public beacon run by the League of Entropy: round 6568887 of the mainnet chain, the first round after 12:00 UTC on 20 October. Its value is published by the beacon’s relays, and nobody, us included, could know it before that moment.
- The order is a hash. Each entry is ranked by the SHA-256 of
randomness:number, lowest first. Rank 1 takes the first prize, ranks 2 and 3 the second, 4 to 7 the third, 8 to 17 the credit. A prize that is forfeited passes to the next entry in rank order, and the page shows each such step.
Anyone can repeat it. The verifier is a script of about thirty lines with no dependencies; read it, then run it:
curl -O https://codenav.dev/day-one/draw/verify.mjs
node verify.mjs
It fetches the sealed list and the drand round and prints the same order the results page shows.
The result
Eight entries were in the sealed list, so every entry won: one first prize, two second, four third and one credit prize. The nine credit prizes left over were not awarded. Winners hear from us by email, each with a page of their own to give delivery and payout details.
Nothing in the outcome rests on us. The list existed before the randomness did, the randomness came from a beacon we do not run, and the ordering is a hash anyone can recompute.