exactodds

ExactOdds

Audited checks npm MCP License: AGPL-3.0 OR Commercial

Run games? Read the operator one-pager · full paper · commercial license: corey@slidphilabs.com

What ExactOdds is

ExactOdds makes dice that can’t lie. It provides the core building blocks for games of chance — dice rolls, coin flips — with the math out in the open and every result verifiable. If a result can’t be proven fair, it is refused.

Here is why that matters. An online game runs the same code on many platforms — a phone, a browser, a server — and players have to trust that the house didn’t tilt the odds on any one of them. ExactOdds removes the need for trust: the reference games are run through five programming languages — Python, JavaScript, TypeScript, C, and C++ — and all five must print byte-identical results, checked mechanically, not claimed.

If five independent implementations agree down to the last byte, the game can’t favor the house on one platform and rob it on another. A disagreement isn’t smoothed over — it stops the line. The refusal is the guarantee.

The code is open source on GitHub, with a paper in the repository describing the method and an operator one-pager for anyone running games. It is dual-licensed: free under AGPL-3.0, or a commercial license from the lab.

Fair outcomes you can prove. Rules you can prove. Both, or neither.

ExactOdds is a protocol for provably-fair gaming with two halves: commit-reveal seeds (the outcome was fixed before your bet) and the exactness law (the game program produces byte-identical output on every target seat — Python, JavaScript, TypeScript, C, C++ — or the program is refused). Today’s “provably fair” proves only the outcome. ExactOdds proves the rules too: the program an auditor gates is the only program that can pass, so a house can’t run different rules in production than the ones it showed the auditor.

What’s here

All three consume the same emitted JS seat, so npm, MCP, and API can never disagree with each other — or with the Python, C, and C++ seats.

Verify a game in 5 steps (players)

You need the game’s source, a SHA-256 tool, and any one of: Python 3, node, or gcc.

  1. Get the source. games/provably-fair-coin-flip.exactodds in this repo, or the copy your house publishes.
  2. Hash it. sha256sum games/provably-fair-coin-flip.exactodds must equal the source_hash in receipts/provably-fair-coin-flip.receipt.json. If not, that’s a different game — stop.
  3. Check the revealed seed. After your round the house reveals its server_seed. echo -n "$server_seed" | sha256sum must match the commitment published before you bet.
  4. Re-run the round. Plug the revealed server seed, your client seed, and the round number into the program’s flip function — any seat works; the gate guarantees they all agree. The output must match the result the house reported for your round.
  5. Check the receipt. receipts/ holds the gated verdict. Auditors can re-run ./gate/run-gate.sh to reproduce the PASS.

Run the gate (auditors, operators)

./gate/run-gate.sh

This needs the ExactOdds reference compiler. Point it at your build:

PROVABLY_COMPILER=/path/to/cuni ./gate/run-gate.sh

It defaults to ../cuni-langs/target/debug/cuni (the lab tree), then ~/workspace/cuni-langs/target/debug/cuni, then cuni on PATH. For each game it emits all five native seats, runs them, demands byte-identical stdout, writes a fresh source-hash receipt into receipts/, and checks the output against the golden fixtures. Exit 0 means every game passed and no fixture drifted.

Reference

License

Dual-licensed: AGPL-3.0 (LICENSE.AGPL-3.0) or the SLID PHI LABS LLC Commercial License (LICENSE.COMMERCIAL) at $2,500/yr per operator. See LICENSE and NOTICE.

Copyright (c) 2026 SLID PHI LABS LLC.

What this is not

Not a casino, not a gaming license, no custody of funds, not a randomness source. See §5 of the paper.

Project Role
CuNi The exactness compiler behind the gate
Agent-Rider Signed agent identity, spend warrants, receipts
Quikgater Pay-per-fact web fetch for agents (x402)
AwLPay Multi-rail agent payments (USDC x402, PayPal sandbox bridge)
agenTill Drop-in payment box for agent storefronts
TNSSRC Local lossless compression engine
pulsar Free local best-path compressor (GPLv3 demo)
TRUSTREAM Lossless compression for live data streams
Chamber Two-key JSON sealing for secrets
Slid Phi Labs The lab

Security issues: see SECURITY.md. Contributing: see CONTRIBUTING.md.