Public verification of the giveaway
The short version, no fluff
Winners are picked 100% at random and the result is verifiable by anyone. You don't have to trust us: below we explain why we couldn't cheat even if we wanted to.
1 · Every ticket has its number
When you participate you get numbered tickets. Before the draw we publish the full list of numbers, like showing all the balls before spinning the drum.
2 · We don't provide the randomness
The "lucky number" is emitted by drand, a public random-number lottery of the internet (run by Cloudflare, universities and others). Nobody can predict or change it: not us, not you, nobody. Winners come from there.
3 · You can check it yourself
Everything is published forever. With one click, your own browser redoes the math and shows you the result is exactly what it had to be, without trusting our server.
For nerds: the raw data
Target drand round, SHA-256 fingerprint of the snapshot, the exact formula, the complete k-sequence history, a WebCrypto verifier in your browser, a Python snippet and the public verification API.
Giveaway data
01 · FROZEN LIST
Before the draw we publish the 5714 tickets, the prizes and their digital fingerprint (SHA-256). Nothing can be changed without being noticed.
02 · PUBLIC RANDOMNESS
The randomness comes from drand round #31810416, a public randomness beacon; nobody (including us) can predict or manipulate it.
03 · ONE SPOT PER ROLL
ids[sha256(hash:k) mod N] repeats with k=0,1,2… filling the 20 spots in tier order. Repeated ones are skipped and recorded.
Snapshot fingerprint: 2cad537c93a525a7efffcd4104a120b2494104b9a87a81609994b10d68e919d9
Number of round #31810416: 6e623e3b315a94f380b449578345cc6334c0c92060a3c78ab8124fb7e1103530
Roll sequence (20 iterations for 20 spots)
Complete sequence history
| k | Ticket | Result | Prize | Reason | Date |
|---|---|---|---|---|---|
| 0 | #502051 | Winner | Minecraft Hosting · spot 1 | · | Sep 1, 2026, 3:50 AM UTC |
| 1 | #526368 | Winner | Minecraft Hosting · spot 2 | · | Sep 1, 2026, 3:50 AM UTC |
| 2 | #224394 | Winner | Minecraft Hosting · spot 3 | · | Sep 1, 2026, 3:50 AM UTC |
| 3 | #515548 | Winner | Minecraft Hosting · spot 4 | · | Sep 1, 2026, 3:50 AM UTC |
| 4 | #232901 | Winner | Minecraft Hosting · spot 5 | · | Sep 1, 2026, 3:50 AM UTC |
| 5 | #543524 | Winner | Minecraft Hosting · spot 6 | · | Sep 1, 2026, 3:50 AM UTC |
| 6 | #353533 | Winner | Minecraft Hosting · spot 7 | · | Sep 1, 2026, 3:50 AM UTC |
| 7 | #986645 | Winner | Minecraft Hosting · spot 8 | · | Sep 1, 2026, 3:50 AM UTC |
| 8 | #588688 | Winner | Minecraft Hosting · spot 9 | · | Sep 1, 2026, 3:50 AM UTC |
| 9 | #271381 | Winner | Minecraft Hosting · spot 10 | · | Sep 1, 2026, 3:50 AM UTC |
| 10 | #971971 | Winner | Minecraft Hosting · spot 11 | · | Sep 1, 2026, 3:50 AM UTC |
| 11 | #587556 | Winner | Minecraft Hosting · spot 12 | · | Sep 1, 2026, 3:50 AM UTC |
| 12 | #476639 | Winner | Minecraft Hosting · spot 13 | · | Sep 1, 2026, 3:50 AM UTC |
| 13 | #192323 | Winner | Minecraft Hosting · spot 14 | · | Sep 1, 2026, 3:50 AM UTC |
| 14 | #437560 | Winner | Minecraft Hosting · spot 15 | · | Sep 1, 2026, 3:50 AM UTC |
| 15 | #636935 | Winner | Minecraft Hosting · spot 16 | · | Sep 1, 2026, 3:50 AM UTC |
| 16 | #969874 | Winner | Minecraft Hosting · spot 17 | · | Sep 1, 2026, 3:50 AM UTC |
| 17 | #400436 | Winner | Minecraft Hosting · spot 18 | · | Sep 1, 2026, 3:50 AM UTC |
| 18 | #184858 | Winner | Minecraft Hosting · spot 19 | · | Sep 1, 2026, 3:50 AM UTC |
| 19 | #861740 | Winner | Minecraft Hosting · spot 20 | · | Sep 1, 2026, 3:50 AM UTC |
Current winners: Minecraft Hosting · spot 1 → #502051 (d***@g***.com) · Minecraft Hosting · spot 2 → #526368 (s***@h***.com) · Minecraft Hosting · spot 3 → #224394 (l***@g***.com) · Minecraft Hosting · spot 4 → #515548 (l***@h***.com) · Minecraft Hosting · spot 5 → #232901 (r***@g***.com) · Minecraft Hosting · spot 6 → #543524 (t***@g***.com) · Minecraft Hosting · spot 7 → #353533 (s***@g***.com) · Minecraft Hosting · spot 8 → #986645 (j***@g***.com) · Minecraft Hosting · spot 9 → #588688 (c***@g***.com) · Minecraft Hosting · spot 10 → #271381 (r***@g***.com) · Minecraft Hosting · spot 11 → #971971 (d***@g***.com) · Minecraft Hosting · spot 12 → #587556 (m***@g***.com) · Minecraft Hosting · spot 13 → #476639 (l***@g***.com) · Minecraft Hosting · spot 14 → #192323 (m***@g***.com) · Minecraft Hosting · spot 15 → #437560 (i***@g***.com) · Minecraft Hosting · spot 16 → #636935 (r***@g***.com) · Minecraft Hosting · spot 17 → #969874 (j***@g***.com) · Minecraft Hosting · spot 18 → #400436 (y***@g***.com) · Minecraft Hosting · spot 19 → #184858 (v***@g***.com) · Minecraft Hosting · spot 20 → #861740 (j***@g***.com)
Or by hand, with Python
It verifies the snapshot checksum, that the number used is EXACTLY the one published by the drand beacon, and that EVERY published iteration k comes from that number. Skips (already-awarded participant) are declared with their reason in the same API.
import hashlib, json, urllib.request
data = json.load(urllib.request.urlopen("https://sorteos.holy.gg/api/public/verificacion"))
ids = data["snapshot"]["entryIds"]
seed = data["giveaway"]["drandRandomness"] # numero aleatorio publico de drand
# 1) checksum == sha256(snapshot)
canon = json.dumps(ids, separators=(",", ":")).encode()
assert hashlib.sha256(canon).hexdigest() == data["snapshot"]["checksumSha256"]
# 2) el numero es EXACTAMENTE el que publico el faro drand (no lo pusimos nosotros)
chain = data["giveaway"]["drandChain"]
rnd = data["giveaway"]["drandRound"]
beacon = json.load(urllib.request.urlopen(f"https://api.drand.sh/{chain}/public/{rnd}"))
assert beacon["randomness"] == seed, "el seed no coincide con drand"
# 3) k -> ids[sha256(seed:k) mod N]
for r in data["rolls"]:
d = hashlib.sha256(f"{seed}:{r['k']}".encode()).hexdigest()
assert ids[int(d, 16) % len(ids)] == r["entryId"], f"k={r['k']} mismatch"
print("OK")
for r in data["rolls"]:
lot = r.get("prizeLot") or {}
seat = f"{lot.get('label')} · lugar {r['seatIndex']}" if r.get("seatIndex") else ""
print(r["k"], r["entryId"], r["status"], seat, r.get("reason") or "")Questions about the process? Write to us on the Discord · Back to the giveaway