PROVABLY FAIR

Don't trust our draw. Check it.

Every Chance Infinite contest ends with one winner chosen by a cryptographic draw. The seed, its commitment hash, and the exact formula are published for every finished contest — so anyone, including people who don't trust us, can re-run the math.

How the draw works

Every ticket a player earns during a contest is one entry in the draw — the more tickets, the better the odds. When the contest window closes:

  1. The server generates a secret random 32-byte seed and locks in its SHA-256 hash — the commitment — before the winning number is computed.
  2. The winning number is derived from that seed with HMAC-SHA256: the seed is the key, the message is "draw-<contest>:99:0", and the first 4 bytes of the result become a number between 0 and 1.
  3. That number lands on one player along the line of everyone's cumulative ticket weight — a weighted random draw over every entry.
  4. After the draw, the seed is revealed and published permanently next to its hash in the public draw record. Each seed is used exactly once.

Company and test accounts are excluded from every draw in code — a rule pinned by automated tests that run before any release.

Verify a past draw right now

This button fetches the public draw record and re-runs both checks in your browser with the standard WebCrypto API — our server isn't involved in the math:

The published draw records

The same values the verifier fetches, stated in plain text for the record. The hash was committed before each draw; the seed was revealed after it. A new record appears here automatically after every draw.

Contest 2 · Drawn August 21, 2026 · @DelDad won $100 of 4,616 entries
server_seed_hash (committed before the draw): 658741036c2cdd8f5de8ea2ec90ae2093fa21e6aeb19e6c23c97b8bffd0268bb
server_seed (revealed after the draw): c8ef5a346f8b05a4c0fc6b852f13477f25611fb111e5a9cfacb4bb46f7f88c16
HMAC message: "draw-contest_2:99:0"
Contest 1 · Drawn July 21, 2026 · @sketchyechey won $100 of 334 entries
server_seed_hash (committed before the draw): 1bb94baa371fb20fd2e9a7d415bc894c5bddc97338e835ecddd4bd7f1512cbf4
server_seed (revealed after the draw): 40aa8978b4f3d88531da3664bdef23f5e98ff49b6d16d07006b90233bb0c3173
HMAC message: "draw-contest_1:99:0"

Or do it without our page

A verification that runs on our own site still asks for some trust. So here's the whole thing as a snippet — paste it into any browser console or Node.js, on any machine:

const rec = (await (await fetch('https://b2see-backend.luck-inc.workers.dev/chance/winners')).json()).winners[0];
const f = rec.fairness;
const bytes = h => new Uint8Array(h.match(/../g).map(x => parseInt(x, 16)));
const hex = b => [...new Uint8Array(b)].map(x => x.toString(16).padStart(2, '0')).join('');
// 1) the commitment: SHA-256 of the revealed seed must equal the recorded hash
console.log('commit ok:', hex(await crypto.subtle.digest('SHA-256', bytes(f.server_seed))) === f.server_seed_hash);
// 2) the winning number: HMAC-SHA256(key = seed, msg = `${clientSeed}:${nonce}:0`), first 4 bytes / 2^32
const key = await crypto.subtle.importKey('raw', bytes(f.server_seed), {name:'HMAC', hash:'SHA-256'}, false, ['sign']);
const sig = new Uint8Array(await crypto.subtle.sign('HMAC', key, new TextEncoder().encode(`${f.client_seed}:${f.nonce}:0`)));
console.log('winning number for', rec.name, '=', (((sig[0]<<24)|(sig[1]<<16)|(sig[2]<<8)|sig[3])>>>0) / 2**32);

What this proves — and what it doesn't

It proves the winning number was produced by the published formula from a seed matching its committed hash — not hand-picked. The derivation is deterministic: the same seed can only ever produce the same number.

It doesn't prove the entries themselves, because the full entry ledger contains every player's private balance and is not published. What we publish per draw is the total entry count, the winner's public handle, and the prize — and the exclusion of company accounts from the draw is enforced in code and pinned by tests.

Honest scope beats big claims. If you're auditing us, the winner record carries every draw ever run, and the official rules bind us to all of it.

Fair enough to play?

A contest is running right now — watch ads, play games, earn entries. One winner takes the whole pool.

Download Chance Now

No purchase necessary. Open to U.S. residents 18+. Odds depend on the number of eligible entries. Official rules.