Skip to content
FC Box
Do not trust. Verify.

Provably fair

You never have to take our word for a pull. Every open comes from numbers fixed before you opened, and you can recompute them yourself.

  1. 1. We lock a secret

    Before you open anything we pick a secret server seed and show you its fingerprint (a SHA-256 hash). The hash can not be turned back into the seed, but it pins the seed down: we can not swap it later.

  2. 2. You add your own seed

    Your client seed is yours. Leave the default or set your own in Settings. Every open also gets a nonce, a counter that goes up by one.

  3. 3. Two rolls decide the pull

    The site mixes the three together with HMAC-SHA256 to make two numbers between 0 and 1. The tier roll picks the tier. The player roll picks the card inside that tier.

  4. 4. Reveal and check

    Rotate your seed in Settings and we reveal the old server seed. Hash it, confirm it matches the fingerprint you saw, and recompute the rolls. The check below does all of that for you.

The exact recipe

The maths

This is the whole formula. It is the same code the server runs and the same code the checker below runs in your browser.

tierRoll   = HMAC_SHA256(serverSeed, clientSeed + ":" + nonce + ":tier")
playerRoll = HMAC_SHA256(serverSeed, clientSeed + ":" + nonce + ":player")

roll = (first 48 bits x 16 + next 4 bits) / 2^52      // a number in [0, 1)

tier   = walk the six tier chances in order; the tier roll lands in one
card   = walk that tier's card weights in order; the player roll lands in one

Sealed before

The seed hash is shown before you open, so it can not change after.

Frozen odds

Each open records the box version it used: the cards, weights and prices at that moment.

Two labelled rolls

Tier and player use separate, labelled rolls, so one can not nudge the other.

Check one yourself

Verify an open

Type the number of an open. If its server seed is revealed we recompute the hash and both rolls here and tell you whether they match. If it is still sealed, rotate your seed first.

Your open number is on the result screen and in your history. The check runs in your browser with WebCrypto, not on our server.