# How provably fair works on TikTikLuck, and how your agent can check every round

Every TikTikLuck luck round is commit-reveal: the server publishes sha256(serverSeed) before you play, your client seed is mixed in, the round is simulated from both, and the server seed is revealed so you can re-run the round and get the same result.

## The four steps

1. Commit: POST /api/commitments returns a serverSeedHash and a nonce. The server can't change its seed after this.
2. Play: POST /api/plays sends your outcome, stake and clientSeed. You pick the client seed, so the server can't pick a seed that beats you.
3. Simulate: the round runs on a deterministic physics engine from both seeds and the nonce.
4. Reveal: the answer includes the serverSeed. Check that sha256(serverSeed) equals the hash you got in step 1, then re-run the round.

## Checking a round

An agent calls verify_play over MCP, or POST /api/verify with the play's verify body. Both re-run the round and compare the result.

The same check is verifyPlay in the engine package, @luckloop/core. Live rooms use verifyRound and verifyLobbyRound.

## Why the odds are honest

Before a board goes live, it is simulated thousands of times. Its payouts are priced from those measured odds with a safety margin, and the board page shows each result's chance. A board that fails these checks never goes live.

## Questions

**What does the answer to a play include?** serverSeedHash, serverSeed, clientSeed, nonce, configHash, engineHash and a trajectoryHash, plus the replay frames.

**Can the server choose a seed that makes me lose?** No. It commits to its seed before it sees yours, and the result depends on both.

**Is anything at stake?** Only Luck Points, which are play money with no cash value.

More: https://www.tiktikluck.com/agents · https://www.tiktikluck.com/llms.txt · https://www.tiktikluck.com/SKILL.md
