Verify: BP big prize 89hbjj
Conducted by BP Test VFW Dept of Nevada 89hbjj · drawn Nov 5, 2026 1:09 PM PST
Winning ticket
#249
of 1,200 eligible tickets · prize $6,000.00
- ✓ The ticket list below matches the fingerprint frozen when sales closed (after payments were reconciled)
- ✓ The revealed secret matches the fingerprint published before sales opened
- ✓ Recomputing the drawing gives the same winning ticket
| Drawing | DRW-001666 |
|---|---|
| Eligible tickets (M) | 1200 |
| Eligible set fingerprint | b84c6c89b39a1678c6a5a534ff4bca667b38ac53ea255bdd8dc9408c530a410b |
| Sales closed | 2026-11-05 21:08:13 UTC |
| Method | GBC-5050-v3 · UNCERTIFIED |
| Published fingerprint | 202dc695ae5caab4f8e4fe65086cbe4491b428fdd7fe47a0d84683f8d6d7f28a |
| Revealed secret | 3c135dfb5c17bb6c3558fd0cfddf254c324b1a9b3c4c0bb3b367bd2cd45b4638 |
| drand round | 6616064 |
| drand randomness | e4921cb1bba122b05c78b17f15bfbaf9594a5d01d10a8daea4cc494603b9dc72 |
Check it yourself (Python 3)
import hashlib, hmac
seed = bytes.fromhex("3c135dfb5c17bb6c3558fd0cfddf254c324b1a9b3c4c0bb3b367bd2cd45b4638")
assert hashlib.sha256(seed).hexdigest() == "202dc695ae5caab4f8e4fe65086cbe4491b428fdd7fe47a0d84683f8d6d7f28a"
ref = "DRW-001666"
# Eligible ticket numbers frozen after sales closed and payments were reconciled
ranges = [(1, 1200)]
setHash = hashlib.sha256("\n".join(f"{a}-{b}" for a, b in ranges).encode()).hexdigest()
assert setHash == "b84c6c89b39a1678c6a5a534ff4bca667b38ac53ea255bdd8dc9408c530a410b"
m = sum(b - a + 1 for a, b in ranges)
randomness = "e4921cb1bba122b05c78b17f15bfbaf9594a5d01d10a8daea4cc494603b9dc72" # from the drand round link above
limit = ((1 << 48) // m) * m
used = set()
for rank in range(1, 1 + 1): # selection 1, then alternates / further prizes
c = 0
while True:
part = f"{rank}|" if rank > 1 else ""
msg = f"GBC-5050-v3|{ref}|{m}|{setHash}|{randomness}|{part}{c}".encode()
v = int.from_bytes(hmac.new(seed, msg, hashlib.sha256).digest()[:6], "big")
c += 1
if v >= limit or (v % m + 1) in used:
continue
k = v % m + 1
used.add(k)
break
for a, b in ranges:
if k <= b - a + 1:
print("selection", rank, "ticket", a + k - 1)
break
k -= b - a + 1
# (a prize raffle with "one prize per person" also skips a buyer's other tickets — the server applies that rule from the frozen data)