Draw proof
A fingerprint of the seed is published before entries close. Every number lands here as the draw runs.
- Seed commitment publishedsha256: 4d45c3e97071e0fcd5225e29a627033ef25740f3a99648c0ae2a0ef55dc246e3The Discord message carrying this hash
- Entries frozenfreezes when entries close
- Seed revealedsealed until the draw runs
- Commitment matches revealed seedchecked when the seed is revealed
- Winners drawn and pingedafter the draw
The ladder has not run yet
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("<revealed after the draw>").digest("hex"))'
# expect: 4d45c3e97071e0fcd5225e29a627033ef25740f3a99648c0ae2a0ef55dc246e3
# 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 = "<revealed after the draw>";
const msg = (k) => ["5gw-draw-v1", "2", "4d45c3e97071e0fcd5225e29a627033ef25740f3a99648c0ae2a0ef55dc246e3", "<published when entries freeze>", 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.
The ladder has not run yet
The frozen ledger
0 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.
The ledger is empty
Join order
Joining is first come, first served. A store an admin added is marked as such.
Draw algorithm: 5gw-draw-v1.