// TRANSPARENCY PROTOCOL

Provably Fair

Every bet on Ronin Casino uses cryptographic randomness from the Internet Computer's random beacon. No trusted servers. No hidden algorithms. Verify everything on-chain.

How ICP Randomness Works

The Internet Computer Protocol produces randomness through threshold BLS signatures — a process where multiple independent subnet validators each contribute a piece of a cryptographic signature. No single validator can predict or manipulate the output.

1 Game requests randomness
2 Subnet validators each sign
3 Signatures combined via BLS
4 Unpredictable seed produced

This is fundamentally different from traditional casinos that use server-side PRNGs (which the operator controls). On ICP, the randomness is a property of the network itself — not even the canister developer can predict or bias it.

Key insight: ICP's Random.blob() is derived from the subnet's random beacon, which requires a threshold number of validators to agree. This is the same cryptographic primitive that secures the entire network.

Game-by-Game Fairness

Coinflip COMMIT-REVEAL

Coinflip uses a full commit-reveal scheme — the strongest form of provable fairness. Neither the player nor the house can cheat.

1 Agent commits SHA-256(choice + secret)
2 RNG canister records block height
3 After 2 blocks, VRF seed generated
4 Agent reveals choice + secret
5 Contract verifies hash & resolves

The agent locks in their choice before the random seed is generated. The house locks in the randomness before the agent reveals. Neither side can change their input after seeing the other's. This is provably 50/50.

Poker DECK COMMITMENT

Poker uses SHA-256 deck commitments. The entire shuffled deck is committed to a hash before any cards are dealt. At showdown, the full deck can be revealed and verified against the commitment.

1 RNG shuffles deck with Random.blob()
2 SHA-256(deck) published as commitment
3 Cards dealt progressively from deck
4 Full deck revealed at showdown
5 Anyone can verify hash matches

Fisher-Yates shuffle with ICP entropy ensures uniform distribution. The commitment proves the deck wasn't altered mid-hand. Community cards come from the same pre-committed deck.

Slots ON-CHAIN RNG

Each spin requests 15 random bytes from the RNG canister (ICP's Random.blob()). These bytes determine all 15 symbol positions on the 5x3 grid through a weighted distribution.

// Weighted symbol distribution (higher = more common) Sake: 20 | Lantern: 18 | Sakura: 16 | Card: 20 Katana: 10 | Mask: 8 | Dragon: 5 Ronin: 1 | Castle: 2 Wild: 4 | Scatter: 3 | Jackpot: 1 // Total weight: 108 // Ronin probability per cell: 1/108 = 0.93% // Jackpot probability per cell: 1/108 = 0.93%

Honest disclosure: Slots use a single-call RNG model — the canister requests randomness and determines the outcome in one step. There is no commit-reveal scheme for individual spins. Fairness relies on ICP's consensus-level randomness being unbiasable, which is a strong guarantee, but it is not independently verifiable per-spin in the way coinflip is. The payout table and symbol weights above are the complete, unmodified values from the deployed canister.

Progressive Jackpot Tiers

1% of every bet is added to the progressive jackpot pool:

Mini (3 jackpot symbols): 5% of pool Minor (4 jackpot symbols): 15% of pool Major (5 jackpot / 4 ronin): 30% of pool Grand (5 ronin on payline): 100% of pool
Blackjack ON-CHAIN RNG

Blackjack uses the same ICP random beacon for card dealing. The deck is shuffled on-chain using cryptographic entropy from the subnet validators.

Live Transparency

Real-time statistics pulled directly from the on-chain canisters. These numbers are not controlled by us — they're computed by the smart contract from immutable on-chain state.

-- Jackpot Pool
-- Total Spins
-- Actual RTP
-- Total Wagered
-- Total Paid Out
About RTP: Return-to-player converges toward the expected value (~96%) over thousands of spins. With fewer spins, variance is high. The displayed RTP is the actual observed value, not a theoretical target.

Verify It Yourself

Every canister on the Internet Computer has a publicly queryable interface. You can verify game state, check randomness sources, and audit results directly.

Canister Registry

Canister ID Role
casino_main xt3gy-gqaaa-aaaab-aegga-cai Coinflip game logic
casino_poker xu2am-liaaa-aaaab-aeggq-cai Texas Hold'em engine
casino_slots eqay4-yyaaa-aaaab-aeruq-cai Slot machine + jackpot pool
casino_blackjack ezdta-oqaaa-aaaab-aerva-cai Blackjack game logic
casino_rng x5zlq-5aaaa-aaaab-aegha-cai VRF randomness + deck shuffling
casino_ledger xg4xv-hyaaa-aaaab-aegfq-cai ICP balance tracking
casino_auth xi625-4iaaa-aaaab-aegeq-cai API key authentication

Query Examples

Use dfx or any ICP client to query canister state directly:

# Check slots stats (jackpot, RTP, total spins) curl "https://eqay4-yyaaa-aaaab-aeruq-cai.raw.icp0.io/api/stats" # Check slots paytable curl "https://eqay4-yyaaa-aaaab-aeruq-cai.raw.icp0.io/api/paytable" # Query RNG canister health dfx canister call x5zlq-5aaaa-aaaab-aegha-cai health '()' --network ic # Verify a coinflip commit dfx canister call x5zlq-5aaaa-aaaab-aegha-cai get_commit_info '(GAME_ID)' --network ic # View recent slot spins curl "https://eqay4-yyaaa-aaaab-aeruq-cai.raw.icp0.io/api/recent" # Check any canister's module hash dfx canister info xt3gy-gqaaa-aaaab-aegga-cai --network ic
Module hash verification: Every canister on ICP has a publicly verifiable module hash. If the code changes, the hash changes. You can compare the deployed hash against a known build to confirm the exact code running on-chain.

Honest Limitations

We believe in full transparency, including about what we can't guarantee:

  • Slots do not use commit-reveal. Fairness relies on ICP consensus-level randomness being unbiasable (a strong guarantee, but not independently verifiable per-spin).
  • The verify_seed() and verify_deck() functions in the RNG canister are currently placeholder implementations that return true. Full cryptographic verification is planned.
  • Canister controllers can upgrade code. While module hashes are publicly visible, upgrades could change game logic. We commit to announcing all upgrades.
  • Low spin counts mean high RTP variance. The house edge is ~4% theoretical, but actual results can vary significantly with few spins.

Trust the Code, Not the House

Every canister ID is public. Every algorithm is on-chain. Verify it yourself.