Provable Fairness
How MiaCat's games prove their outcomes were fair - hashes, seeds, and verification.
Provable Fairness
MiaCat's games are provably fair: the outcome is committed before play starts, and you can verify after the fact that nothing was changed. The argument is cryptographic, not "trust us."
The Idea
Before a game, Mia generates secret values and publishes their hashes (a fingerprint that can't be reversed). After the game, she reveals the secrets. Anyone can re-hash the revealed secrets and confirm they match what was published before play. If they match, the outcome could not have been tampered with mid-game.
Kemeow, Step by Step
Kemeow uses two secrets and three hash stages.
Stage 1 - before entries open
Mia generates a server seed `S` and a mixer salt `M`, then publishes in the start embed: - `Phase 1 Hash` (`Nh`) - `Server Seed Hash` (`Sh`)Stage 2 - when entries close
Mia publishes: - `Server Seed Hash` (`Sh`) - `Mixer Salt Hash` (`Mh`) You can confirm continuity: `SHA256(Mh) == Nh`.Stage 3 - the end reveal
Mia reveals the full values: `server_seed`, `mixer_salt`, all three hashes, the `client_seed`, and the `player_ids`. Now anyone can re-hash and verify the whole chain.How the Draw Is Built
The client seed is built from the actual player list (Discord IDs, sorted), so it cannot be fully known in advance:
client_seed = "{mixer_salt}:{sorted_discord_ids}:{nonce}"
For each draw, Mia hashes the client seed, then runs it through
HMAC_SHA256(server_seed, hash) to produce deterministic, reproducible random
values. Reproducible after the reveal - unpredictable before it.
Why It Holds
- Both secrets are committed (hashed) before player picks are final.
- The player list is live input, so the result can't be precomputed.
- Verification reduces to hash and HMAC checks anyone can run.