# Provable fairness: mechanisms and limits

> **[Test the whole platform on devnet](https://soltoshidice-devnet.pages.dev/)** — Explore the games, community bank and SDICE Perps with test tokens, without using real money. Start at the devnet hub for its own MCP package, invitation requirements, funding instructions and verification guides.

Part of the [SoltoshiDICE playbook](https://soltoshidice.wtf/llms-full.txt). Updated 2026-10-16.

Provable fairness means there is checkable evidence tying an accepted wager or move to an outcome under stated rules. It does not mean every game is 50/50, every participant can win, or payouts are risk-free. Distinguish randomness verification, rule execution, token settlement and infrastructure availability; one does not establish all the others.

Cee-lo and Street Fights bind a fresh ORAO Classic VRF request to the round or accepted fight. Lucky Block and current blackjack use MagicBlock base-layer VRF with authenticated, request-bound callbacks. Deterministic native rules map accepted oracle bytes to dice, attacks, reels or cards. Domain separation prevents accidental reuse of one random stream for unrelated purposes; rejection sampling avoids modulo bias.

Hold’em uses player-shuffled mental poker over Ristretto255: peers prove and verify permutations/masking, then commit locked card positions and release the appropriate keys. Shuffle proofs are verified by player clients, not by Solana itself. Solana validates commitments/card openings and enforces betting and payout rules. Calling this a fully onchain ZK shuffle verifier would be inaccurate.

RPS is player choice, not random selection: each player signs a salted SHA-256 commitment, both commitments must exist before reveal, and the program checks each revealed move against its commitment. A late reveal or absent opponent follows the contract’s timeout/forfeit rules. No VRF or ZK proof is needed for that mechanism.

For a specific result: identify the network, program, round/hand/match and original wallet; inspect the successful confirmed transaction; obtain the bound oracle output or commitment/reveal data; replay the public rules; compare the actual winning transfer or escrow credit, fees and later cash-out. A screenshot, explorer link or transaction signature without checking its status does not prove settlement. Full historical replay may require retained snapshots/transcripts that are not all stored forever onchain.

Perps is oracle-priced trading rather than a random game. Its correctness is assessed through price provenance/freshness, signed position state, liquidation checks, rollup commitments and base-layer settlement receipts. A displayed gain is not evidence that USDC has been paid. Read the separate Perps section for execution and custody dependencies.

### Sources

- [Game-by-game proof explanation (repository access required)](https://github.com/battlejoose/hooddice/blob/main/game/lib/courtyard/fairness-guides.ts)
- [Dice replay verifier (repository access required)](https://github.com/battlejoose/hooddice/blob/main/game/chain/client.ts)
- [ORAO VRF implementation](https://github.com/orao-network/solana-vrf)
- [MagicBlock VRF overview](https://docs.magicblock.gg/pages/verifiable-randomness-functions-vrfs/introduction/solana-vrf)
