No single operator
drand's randomness is produced jointly by many independent organisations (the League of Entropy). No one party — Jambala included — can bias it.
Jambala doesn't pick winners behind closed doors. Each draw is seeded by the drand public randomness beacon — a signed random number produced every few seconds by a network of independent organisations. Nobody, us included, can predict or change it. Give this page the round number and the ticket list and it will re-draw the exact same winner, right here in your browser.
Three public inputs, one reproducible result. There is nothing else in the box.
The moment a competition's close time is set, the exact drand round that will seed its draw is already fixed by the clock. We publish that round number in advance.
round = first beacon at/after close timeAt close, the drand network publishes that round: a random value with a BLS signature, identical across every mirror. It cannot exist before its time, and cannot be forged.
randomness = SHA-256(signature)We hash the randomness against the published ticket list to land on a ticket. Same inputs, same output — for us, for you, for anyone.
shuffle pool by SHA-256(seed | … | i), take first NThis is the whole algorithm. It is the same code that runs our draws and the same code running in the verifier below.
# 1. Canonical ticket pool — every entered ticket number, unique, ascending pool = sort(unique(entered_ticket_numbers)) poolStr = pool joined by "," # e.g. "1,2,3,...,1300" poolHash = SHA256(poolStr) # published, so the pool can't be swapped # 2. Seed — the drand randomness for the committed round seed = drand.round(R).randomness # 64 hex chars, publicly signed # 3. Shuffle the pool with the beacon; the first N tickets are the winners for i = 0, 1, ..., N-1 : input = seed | product_id | poolHash | pool_size | i j = i + ( SHA256(input) mod (pool_size - i) ) swap pool[i], pool[j] winner_i = pool[i]
Everything below runs in your own browser. Fill in a draw's public values — or leave the worked example as-is and press Verify to see it reproduce winners 46, 51 and 851.
Tip: to check a real draw, enter the round and ticket pool published with that
competition's result, then press Fetch round from drand to pull the signed randomness and reproduce the winners.
drand's randomness is produced jointly by many independent organisations (the League of Entropy). No one party — Jambala included — can bias it.
The round is fixed by the close time. We announce it before entries close, so we can't shop for a result we like.
Every round carries a BLS signature and reads the same on every public mirror. We check several and they must agree.
Past rounds are permanent and public. This draw can be re-checked next week or next year and will always give the same winner.
Independently anchored, too: each draw also records the first Bitcoin block after close as a second timestamp. The compliance basis is the DCMS Code of Practice for Prize Draw Operators (Clause 2.2) — a computer process producing verifiably random, auditable results.
No. The seed is a drand value we can't produce or predict, fixed to a round that's public before entries close. The winner is a pure function of that seed and the published ticket list. Change either and the pool hash won't match — which anyone can see.
The SHA-256 of the ticket pool is published with every draw. Alter one ticket and the hash changes, so a tampered list fails verification instantly.
The draw waits. It never falls back to an unverifiable method — if a signed round can't be confirmed, the draw simply runs a little later once the beacon responds. A result we can't prove is a result we won't publish.
No. The round comes straight from drand.love and its mirrors, and the algorithm above is short enough to run with any SHA-256 tool. This page is just a convenience.