Fairness & verification
Every settled round is provably fair: LootBox Solutions commits to a secret before the outcome is known, and reveals it afterwards so anyone can reproduce and verify the result. Players (and regulators) never have to trust that the draw wasn’t manipulated — they can check it.
How it works
- Commit. A per-player seed pair is created: a random
serverSeedand itsserverSeedHash. Only the hash is shown up front (in the bootstrap andfairness/state). - Client seed. The player contributes (or accepts a generated)
clientSeed. - Nonce. Each draw consumes the next integer
noncein the player’s seed pair — a strictly increasing counter, so every round has a unique input. - Draw. The outcome is derived deterministically from
(serverSeed, clientSeed, nonce)via the named algorithm (hmac_sha256_v1). Same inputs ⇒ same outcome, always. - Reveal. When the player rotates their seed pair, the previous
serverSeedis revealed. They can then confirmsha256(serverSeed) == serverSeedHashand recompute every round drawn under it.
commit: serverSeedHash = sha256(serverSeed) ← shown before playdraw: outcome = f(serverSeed, clientSeed, nonce) ← nonce increments per roundreveal: serverSeed ← shown on rotation; verify the hashWhat’s recorded per round
Each settled round snapshots everything needed to verify it: serverSeedHash,
clientSeed, nonce, and algorithmKey. These appear on the round in
purchase responses and in the game app’s round
detail.
Rotating seeds
POST /api/play/fairness/rotate reveals the current server seed and starts a new
pair. Pass a clientSeed to set the new pair’s client seed, or omit it to carry
the previous one forward. Players typically rotate before a session to set their
own seed, then again afterwards to reveal and verify.
Verifying a round
Given a revealed serverSeed and a round’s clientSeed + nonce:
- Check the commitment:
sha256(serverSeed)equals theserverSeedHashthe round recorded. - Re-run the published
hmac_sha256_v1algorithm with(serverSeed, clientSeed, nonce)and confirm it yields the same outcome.
Because the server seed was committed (hashed) before the nonce existed, LootBox Solutions could not have chosen an outcome after the fact.