Draw proof
A fingerprint of the seed was published before entries closed, and the seed itself after the draw. Anyone can repeat the draw from the numbers on this page.
- Seed commitment publishedsha256: ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b
- Entries frozen63 entries · 55 tickets · 5 excluded · ledger sha256: 84beb20d76b33fb55fae79cd4cb5ed964769efee1ed609e6684b0c7241b93bd2The Discord message carrying this hash
- Seed revealedseed: 6c6f58b9884b4366de36614edf8abeb6daf20d3887e862adcf356d860639e9bd
- Commitment matches revealed seedsha256(seed) == commitment
- Winners drawn and pinged5 winners · 3 pinged in Discord
- #1Weisepassed to 𝑺𝒂𝒊𝒛2009💙💙, next on the backup ladder10€ GIFT CARD27 · 332ddbd1…d2e9
- #2Sponkpassed to ARULPLAYZ, next on the backup ladder10€ GIFT CARD41 · 2143209f…5807
- #3!!!佑passed to NiaaazL, next on the backup ladder10€ GIFT CARD13 · e9742480…44c2
- #4ARESnot marked received, no backup was left10€ GIFT CARD36 · a71693c5…a1d8
Show all 5 ranksShow fewer
- #5DevilBadAzznot marked received, no backup was left10€ GIFT CARD12 · f6ff6916…e6fc
Hash the revealed seed and compare it with the commitment. Then run the ladder with the same two hashes: you should get the ranks above.
Show the maths
In a terminal
It needs Node and nothing else. The seed is used exactly as printed, as text; each winning ticket is taken from the digest by rejection sampling over the tickets still in play.
# 1. The seed we revealed is the seed we committed to.
node -e 'console.log(require("crypto").createHash("sha256").update("6c6f58b9884b4366de36614edf8abeb6daf20d3887e862adcf356d860639e9bd").digest("hex"))'
# expect: ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b
# 2. Recompute the ladder. Each step's message is fixed by the two published
# hashes and the step number; nothing else feeds into it.
node -e '
const { createHmac } = require("crypto");
const seed = "6c6f58b9884b4366de36614edf8abeb6daf20d3887e862adcf356d860639e9bd";
const msg = (k) => ["5gw-draw-v1", "9", "ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b", "84beb20d76b33fb55fae79cd4cb5ed964769efee1ed609e6684b0c7241b93bd2", k].join("|");
for (let k = 0; k < 10; k++) {
console.log(k, createHmac("sha256", seed).update(msg(k)).digest("hex"));
}
'
# compare each line against the HMAC output printed on this page.Every step
Including the ones that awarded nothing. A rejected sample fell in the biased tail of the digest and was discarded to keep the draw uniform; a skip is a candidate the prize could not go to, either because they no longer qualified or because Discord would not confirm them. Drawn or skipped, an entry leaves with all of its tickets. A step marked Repeat gave a second prize to someone who already won: that happens only once every ticket has been drawn and a prize is still unhanded.
- k = 0AwardedWinner 1
- Tickets in play
- 55
- Winning ticket
- 27
- Entry
- J7ZCH1NT6Y76
HMAC message5gw-draw-v1|9|ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b|84beb20d76b33fb55fae79cd4cb5ed964769efee1ed609e6684b0c7241b93bd2|0HMAC-SHA256 output332ddbd1a5aacce453be0b10b22e37b15fef7cd24a6f4b90577e043dbe2ed2e9 - k = 1AwardedWinner 2
- Tickets in play
- 54
- Winning ticket
- 41
- Entry
- G0F78Q1QNQJQ
HMAC message5gw-draw-v1|9|ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b|84beb20d76b33fb55fae79cd4cb5ed964769efee1ed609e6684b0c7241b93bd2|1HMAC-SHA256 output2143209fabdc8f634e5f0b1f2c0350b79667ce0494cffe2ef37a546aa4ea5807 - k = 2AwardedWinner 3
- Tickets in play
- 53
- Winning ticket
- 13
- Entry
- QEB9CCDCWDNB
HMAC message5gw-draw-v1|9|ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b|84beb20d76b33fb55fae79cd4cb5ed964769efee1ed609e6684b0c7241b93bd2|2HMAC-SHA256 outpute974248078bda32620b59951029ca55176c5e1dd9525dfd9aa62d72189e644c2 - k = 3AwardedWinner 4
- Tickets in play
- 52
- Winning ticket
- 36
- Entry
- D5G61TGQKPF1
HMAC message5gw-draw-v1|9|ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b|84beb20d76b33fb55fae79cd4cb5ed964769efee1ed609e6684b0c7241b93bd2|3HMAC-SHA256 outputa71693c54f462b19f3a0d6fb53b6b306a053a2fbd25fff17b0437187888ba1d8 - k = 4AwardedWinner 5
- Tickets in play
- 51
- Winning ticket
- 12
- Entry
- WP9DMDDH48V0
HMAC message5gw-draw-v1|9|ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b|84beb20d76b33fb55fae79cd4cb5ed964769efee1ed609e6684b0c7241b93bd2|4HMAC-SHA256 outputf6ff691665c8d8f36471000893484b97881f76c917f446fe63780ffdf476e6fc - k = 5AwardedBackup 1
- Tickets in play
- 50
- Winning ticket
- 5
- Entry
- FQGG1GR7AT27
HMAC message5gw-draw-v1|9|ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b|84beb20d76b33fb55fae79cd4cb5ed964769efee1ed609e6684b0c7241b93bd2|5HMAC-SHA256 output0ed4f86925dec7161d13831b9808e2dfbb238d0f383174f6a07d3dcc0facce22 - k = 6AwardedBackup 2
- Tickets in play
- 49
- Winning ticket
- 6
- Entry
- DS3WJ3S41FSM
HMAC message5gw-draw-v1|9|ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b|84beb20d76b33fb55fae79cd4cb5ed964769efee1ed609e6684b0c7241b93bd2|6HMAC-SHA256 output75d07a53877e353906c04ed9b4abd9ba1a814be47975fa2c6eacbc5a43ba21f0 - k = 7AwardedBackup 3
- Tickets in play
- 48
- Winning ticket
- 23
- Entry
- MJQ9WQ18WJFP
HMAC message5gw-draw-v1|9|ef9ea704b6df790264999de1dcc66180bad3b928217acbc22b4283d10bd75a9b|84beb20d76b33fb55fae79cd4cb5ed964769efee1ed609e6684b0c7241b93bd2|7HMAC-SHA256 outputfff712d0b69fd4a2997874df9a7112862a370cb12e4bcfab29c9141866f4098c
The frozen ledger
63 rowsEvery entry in order, under a per-giveaway pseudonym. One ticket for each store server the entrant was verified in, laid end to end from 1 in this order. Zero tickets is a real row that cannot win: an excluded entry, or an entrant who was in none of the servers.
| # | Entry | Tickets | Ticket range | Status at freeze |
|---|---|---|---|---|
| 1 | 62E9PXTYBCFX | 1 | 1 - 1 | In the draw |
| 2 | KCH5VM12V08V | 1 | 2 - 2 | In the draw |
| 3 | H9FDYEM6G2YX | 1 | 3 - 3 | In the draw |
| 4 | G0NQAVTV271E | 1 | 4 - 4 | In the draw |
| 5 | FQGG1GR7AT27 | 1 | 5 - 5 | In the draw |
| 6 | DS3WJ3S41FSM | 1 | 6 - 6 | In the draw |
| 7 | 9BM3J1HSBQ5R | 1 | 7 - 7 | In the draw |
| 8 | JXMACSPZ80RV | 1 | 8 - 8 | In the draw |
| 9 | 0NPQ38KGSW65 | 1 | 9 - 9 | In the draw |
| 10 | 0HMY3PGXECXF | 1 | 10 - 10 | In the draw |
| 11 | QC4P855TZ0CY | 1 | 11 - 11 | In the draw |
| 12 | WP9DMDDH48V0 | 1 | 12 - 12 | In the draw |
| 13 | QEB9CCDCWDNB | 1 | 13 - 13 | In the draw |
| 14 | JKEBX6MVYADM | 1 | 14 - 14 | In the draw |
| 15 | R7B4YC61M8YQ | 1 | 15 - 15 | In the draw |
| 16 | 30FP9C6H9A0W | 1 | 16 - 16 | In the draw |
| 17 | 2PEJ0X1DQN2V | 1 | 17 - 17 | In the draw |
| 18 | CZ2BRMEWD874 | 1 | 18 - 18 | In the draw |
| 19 | EXCEVSBSWXWN | 1 | 19 - 19 | In the draw |
| 20 | BZ2VZC035PMY | 1 | 20 - 20 | In the draw |
| 21 | EDE9VFRKZM4T | 1 | 21 - 21 | In the draw |
| 22 | 5Q0XN2C6W9NH | 1 | 22 - 22 | In the draw |
| 23 | MJQ9WQ18WJFP | 1 | 23 - 23 | In the draw |
| 24 | ABV2P0SEX4YK | 1 | 24 - 24 | In the draw |
| 25 | TAQJ13NSC4FR | 1 | 25 - 25 | In the draw |
| 26 | 72P58643V4VC | 1 | 26 - 26 | In the draw |
| 27 | J7ZCH1NT6Y76 | 1 | 27 - 27 | In the draw |
| 28 | V444BWAG3DAJ | 1 | 28 - 28 | In the draw |
| 29 | 8A4VK6PP6DG8 | 1 | 29 - 29 | In the draw |
| 30 | 1MXPEGVR1S97 | 1 | 30 - 30 | In the draw |
| 31 | 1N8P274NDV7H | 1 | 31 - 31 | In the draw |
| 32 | MHNSXZTE3MFZ | 1 | 32 - 32 | In the draw |
| 33 | J2FFZNRRC32H | 1 | 33 - 33 | In the draw |
| 34 | 879KBAYCBTGQ | 1 | 34 - 34 | In the draw |
| 35 | ZNPHS5FNFGSF | 1 | 35 - 35 | In the draw |
| 36 | D5G61TGQKPF1 | 1 | 36 - 36 | In the draw |
| 37 | RCH0QNEWAW9V | 1 | 37 - 37 | In the draw |
| 38 | 9MY2AQ8KP94H | 1 | 38 - 38 | In the draw |
| 39 | 4F39WZ8EZW8Q | 1 | 39 - 39 | In the draw |
| 40 | NDKWGWMBJQ71 | 1 | 40 - 40 | In the draw |
| 41 | G0F78Q1QNQJQ | 1 | 41 - 41 | In the draw |
| 42 | X58K71ZJ9C52 | 1 | 42 - 42 | In the draw |
| 43 | G179EX5AR51Q | 1 | 43 - 43 | In the draw |
| 44 | SZWHSAP3X0C9 | 1 | 44 - 44 | In the draw |
| 45 | WV43GM0NJNMD | 1 | 45 - 45 | In the draw |
| 46 | NNPV032EAS46 | 0 | - | Held back |
| 47 | KNH8AYZ2572V | 1 | 46 - 46 | In the draw |
| 48 | 9XGT8X9K8RX5 | 0 | - | Held back |
| 49 | MVGQ1QP5718H | 1 | 47 - 47 | In the draw |
| 50 | RQ19N2Y9MSVQ | 0 | - | In the draw |
| 51 | 9383M6Z0CYS5 | 0 | - | In the draw |
| 52 | GFPQS83MVK04 | 1 | 48 - 48 | In the draw |
| 53 | 26TEZBSGNZEX | 1 | 49 - 49 | In the draw |
| 54 | QCKHYJ0TET18 | 0 | - | In the draw |
| 55 | 7MVN4S3MHVDD | 1 | 50 - 50 | In the draw |
| 56 | ZXS6HV3N919W | 1 | 51 - 51 | In the draw |
| 57 | T52ZJDYSVGXM | 0 | - | Held back |
| 58 | TGA22P1KCVCN | 0 | - | Held back |
| 59 | CTNVBCTC4RKA | 0 | - | Held back |
| 60 | WBKW166HBWCH | 1 | 52 - 52 | In the draw |
| 61 | NNKBFPYD5635 | 1 | 53 - 53 | In the draw |
| 62 | QV2AQGV25CMN | 1 | 54 - 54 | In the draw |
| 63 | 7KK565V2BP9R | 1 | 55 - 55 | In the draw |
Join order
Joining is first come, first served. A store an admin added is marked as such.
| Order | Store | Joined | Status | Added by |
|---|---|---|---|---|
| #1 | DEVHUB | Posted | Joined in queue |
Draw algorithm: 5gw-draw-v1.