Provably Fair
The tower commits to its outcomes before you choose. After your run, it reveals the seed so you can verify every portal yourself.
1 · Server Seed Commit
When you start a run, the server generates a 32-byte server seed, hashes it with SHA-256, and stores both. Only the hash is visible during the run.
2 · Client Seed + Nonce
Your client provides a random seed. Each floor increments a nonce. HMAC-SHA256(serverSeed, clientSeed:nonce) → first 4 bytes / 2^32 → a number in [0,1) used to deterministically shuffle portals.
3 · Reveal & Verify
When your run ends (cashout or death), the server seed is revealed in the run record. Re-compute the HMACs yourself with your client seed and nonce — they will match the floors you walked.
Pseudocode
hmac = HMAC_SHA256(server_seed, client_seed + ":" + nonce) u32 = first 4 bytes of hmac, big-endian f = u32 / 2^32 // in [0,1) // Fisher–Yates shuffles portals using f; first N become "safe"