Commit
The server seals a fresh 256-bit seed with SHA-256. Your browser saves its hash and the prize configuration before generating its own seed.
FAIR BY DESIGN. VERIFIABLE BY YOU.
The animation puts on a show. The result comes from two random seeds, a commitment made before your browser sends its seed, and the prize odds saved for that draw.
The server seals a fresh 256-bit seed with SHA-256. Your browser saves its hash and the prize configuration before generating its own seed.
HMAC-SHA256 combines the revealed server seed, your browser’s seed, a unique draw ID, and the committed prize configuration.
Rejection sampling maps the output to the configured prize weights. Your browser checks the receipt before animating the winner.
NO MYSTERY BOX.
Algorithm: event-wheel-hmac-sha256-v1. The prize configuration is canonical JSON of ordered [id, name, color, weight, inventory] tuples. Eligible weights are positive integers; zero-stock prizes are excluded. For total weight W, reject any 32-bit HMAC word at or above floor(2³² / W) × W, then take word modulo W. If all eight words are rejected, increment the block counter and hash again. The accepted ticket selects a cumulative weighted interval.
Each commitment expires after five minutes and can complete only once. Retrying the same completed draw and client seed returns the same receipt. Demo receipts are hosted for seven days; downloaded copies can be verified without contacting the server.