Fair play
The provably fair idea
"Provably fair" is a way to make sure the outcome of a run is determined in advance and could not be changed by the server after the game began. Each run is reproducible from a server seed, a client seed, and a nonce.
There is no rigging against the player: a floor's outcome is a deterministic function of the seeds.
How it works
Commit before the run: the server publishes SHA-256(serverSeed); the seed itself is hidden.
Floor draw: roll = HMAC-SHA256(serverSeed, clientSeed:nonce:floor); the first 8 hex are divided by 2³². The floor is passed if the roll is less than the tier's chance.
Reveal afterward: the server reveals the server seed — you can check its hash and recompute all the rolls.
How to verify your run
After a run, open the /fair page — there you'll find the hash commit, the revealed server seed, the client seed, the nonce, and each floor's roll. Compare SHA-256(serverSeed) with the commit.
For an independent recheck there is a POST /game/verify endpoint: pass serverSeed, clientSeed, nonce, a list of tiers, and the multiplier-table version (tableVersion) — the service will return the same rolls and outcomes.
Advertised return
The theoretical return is 99% per attempted floor, including the probability of failure and golden doors. This is an expected value, not a guaranteed return per run or session; risk compounds across successive floors.
Multiplier table version
The active table is version 3, in effect since 2026-08-05: 5 risk tiers, depth 15 floors, with a ×5 golden door on the risky tiers.
Runs played earlier stay fully verifiable — pass the run's own table version (tableVersion 1, 2, or 3) to /game/verify and the run reproduces against its table. The archived version 2 table (3 tiers, depth 12, no doors) is shown below.
| Tier | Pass chance | Floor multiplier | Golden door |
|---|---|---|---|
| Easy | 98% | ×1.0112 | — |
| Medium | 94% | ×1.0487 | — |
| Risk | 87% | ×1.1366 | — |