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: 329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33fThe Discord message carrying this hash
- Entries frozen2 entries · 2 tickets · 0 excluded · ledger sha256: 868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09The Discord message carrying this hash
- Seed revealedseed: 48341513bc4fd2b3057efb28dc4ad01064ed0b87e34540330a9295b37cb2edf4
- Commitment matches revealed seedsha256(seed) == commitment
- Winners drawn and pinged9 winners · 9 pinged in Discord
- #1lana86Test 1 prize 11 · 9129a947…8e85
- #2John DEVHUBTest 1 prize 22 · 2187c157…1575
- #3lana86Test 2 prize 11 · ca7197d2…a466
- #4John DEVHUBTest 2 prize 12 · aaa3516c…29e3
Show all 9 ranksShow fewer
- #5John DEVHUBTest 2 prize 22 · 70790474…e196
- #6lana86DH prize 11 · 4c14b122…4539
- #7lana86DH prize 11 · 40dc4500…1335
- #8John DEVHUBDH prize 12 · 5f5a7403…d0de
- #9John DEVHUBDH prize 12 · 1307e2cb…a783
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("48341513bc4fd2b3057efb28dc4ad01064ed0b87e34540330a9295b37cb2edf4").digest("hex"))'
# expect: 329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f
# 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 = "48341513bc4fd2b3057efb28dc4ad01064ed0b87e34540330a9295b37cb2edf4";
const msg = (k) => ["5gw-draw-v1", "3", "329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f", "868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09", 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
- 2
- Winning ticket
- 1
- Entry
- 3HAWDXVGFJYE
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|0HMAC-SHA256 output9129a947dfc184b67b739b3c60438e35295f5e5f6fe741cdfc20595169da8e85 - k = 1AwardedWinner 2
- Tickets in play
- 1
- Winning ticket
- 2
- Entry
- VPA4SW8AZCJ3
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|1HMAC-SHA256 output2187c1579ba1ca578b663c9be90aed4c4592bffbb2920660cad7c18ada7f1575 - k = 2AwardedWinner 3Repeat
- Tickets in play
- 2
- Winning ticket
- 1
- Entry
- 3HAWDXVGFJYE
Repeat award: the ticket space ran out while 7 prizes were still unhanded, so everybody who had already won went back into it and this entrant was drawn again.
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|2HMAC-SHA256 outputca7197d28b197bfe4a9414b516e29913fe593c9e7c85deb18b39f01ce780a466 - k = 3AwardedWinner 4Repeat
- Tickets in play
- 1
- Winning ticket
- 2
- Entry
- VPA4SW8AZCJ3
Repeat award: the ticket space ran out while 6 prizes were still unhanded, so everybody who had already won went back into it and this entrant was drawn again.
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|3HMAC-SHA256 outputaaa3516cc157311d1b3389f12bae212854be8401742cbd65541b8cb33fd829e3 - k = 4AwardedWinner 5Repeat
- Tickets in play
- 2
- Winning ticket
- 2
- Entry
- VPA4SW8AZCJ3
Repeat award: the ticket space ran out while 5 prizes were still unhanded, so everybody who had already won went back into it and this entrant was drawn again.
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|4HMAC-SHA256 output70790474d00397a33e1120f4917e8d3fdedc1a57e9077373d6e1e097d159e196 - k = 5AwardedWinner 6Repeat
- Tickets in play
- 1
- Winning ticket
- 1
- Entry
- 3HAWDXVGFJYE
Repeat award: the ticket space ran out while 4 prizes were still unhanded, so everybody who had already won went back into it and this entrant was drawn again.
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|5HMAC-SHA256 output4c14b1222f82a06cba89598784af03f0c833593d6271acec0bca00a42a354539 - k = 6AwardedWinner 7Repeat
- Tickets in play
- 2
- Winning ticket
- 1
- Entry
- 3HAWDXVGFJYE
Repeat award: the ticket space ran out while 3 prizes were still unhanded, so everybody who had already won went back into it and this entrant was drawn again.
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|6HMAC-SHA256 output40dc450061d1c32e5a7c0e6960712699d7fe2831e463c0f15ba0d8d1f9d31335 - k = 7AwardedWinner 8Repeat
- Tickets in play
- 1
- Winning ticket
- 2
- Entry
- VPA4SW8AZCJ3
Repeat award: the ticket space ran out while 2 prizes were still unhanded, so everybody who had already won went back into it and this entrant was drawn again.
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|7HMAC-SHA256 output5f5a7403995eed7a13f4404219240c891d30ac8576b43fe963c43005bcccd0de - k = 8AwardedWinner 9Repeat
- Tickets in play
- 2
- Winning ticket
- 2
- Entry
- VPA4SW8AZCJ3
Repeat award: the ticket space ran out while 1 prize was still unhanded, so everybody who had already won went back into it and this entrant was drawn again.
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|8HMAC-SHA256 output1307e2cba1ddbcbfec33da72263408618212b0c30803ea885fc7cdda7fe6a783 - k = 9No entries leftBackup 1
- Tickets in play
- 0
- Winning ticket
- 0
- Entry
- -
No entries left in the ticket space.
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|9HMAC-SHA256 output4ba46c65fc86464834601f3e5339dc65c93c68ed48b38cf3018e67dc932cb6fa - k = 10No entries leftBackup 2
- Tickets in play
- 0
- Winning ticket
- 0
- Entry
- -
No entries left in the ticket space.
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|10HMAC-SHA256 output841e42ea49eac1158984518bfcd24ddd058a1c635bbbf80156b11397a66664c6 - k = 11No entries leftBackup 3
- Tickets in play
- 0
- Winning ticket
- 0
- Entry
- -
No entries left in the ticket space.
HMAC message5gw-draw-v1|3|329f6945fd321a440577cf14814d26e47aa754a87042c9907e8d2a57e62ac33f|868a96265edea2e4d9be6f0d8f6d67520cf19492310d6f293dd33b96c9f2bc09|11HMAC-SHA256 output56d16a9545c2f25a3e3a38c4fa60972f0d9eec62224f2746f1c341e8730a4b2e
The frozen ledger
2 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 | 3HAWDXVGFJYE | 1 | 1 - 1 | In the draw |
| 2 | VPA4SW8AZCJ3 | 1 | 2 - 2 | In the draw |
Join order
Joining is first come, first served. A store an admin added is marked as such.
Draw algorithm: 5gw-draw-v1.