HONEST STATUS: This is a demo deployment on Arbitrum One using play-money RUSD (faucet token). Contracts are pre-audit — Sourcify-verified, 163/163 forge + 38/38 integration tests green, but no external audit yet. Current max bet is 3,125 RUSD/hand, bond-limited (design target at $300M TVL: $520k–600k). One V1 incident is fully disclosed in the audit package. Credibility is the product — read the gaps before the claims.

LIVE GAMES

Both games run on RAIN Channels (instant, gasless) with an on-chain per-action VRF/Entropy fallback mode. Play with faucet RUSD at rainsandbox.xyz.

DEMO STAKESPLAY-MONEY RUSDMAINNET · ARBITRUM ONEPRE-AUDIT

🃏 BLACKJACK — ENHC / S17

BlackjackRulesVerifier `0xFdcC…9293` · channel mode default, Pyth per-action fallback

Rules: European No-Hole-Card (dealer's hole card genuinely does not exist until the player finishes acting — the property the dispute system leans on), dealer stands on soft 17, blackjack pays 3:2, double on any two cards, split once (split aces receive one card each and auto-stand), no insurance or surrender, infinite continuous shuffle (% 52 with replacement). ENHC natural beats all including doubled/split gross; naturals push each other. The ~0.11% ENHC house-edge increase vs peek is disclosed and priced in.

OUTCOMEPAYS (ON GROSS AT RISK g)
Win2g back (1:1)
Natural blackjack (single, un-split hand)2.5g back (3:2)
Pushg refunded
Loss0 — lost gross to house minus the 1.25% protocol fee

Current table limit: 3,125 RUSD/hand (bond-limited; see limits derivation). Worst-case hand exposure: 8 × unit stake (split + double both hands, win both), enforced by the ChannelManager. Measured mainnet latency: ~300 ms average per action over WSS.

PLAY BLACKJACK ↗

🎡 ROULETTE — EUROPEAN SINGLE-ZERO

RouletteRulesVerifier `0x5239…962f` · channel mode default (~470 ms spins), VRF fallback for outside/straight bets

One wheel, 37 pockets (0–36), exact casino payouts. Bets are batched (≤40 per spin), dual-signed before any randomness is exchanged, then a single mutual reveal pair produces the number: keccak(pRev, hRev, sessionSeed, channelId, k) % 37.

BET TYPECOVERSPAYS
Straight up1 number35:1
Split2 adjacent numbers (incl. 0-splits 0|1, 0|2, 0|3)17:1
Street3 numbers (row)11:1
Corner4 numbers8:1
Six line6 numbers (two rows)5:1
Dozen (1st/2nd/3rd)12 numbers2:1
Column12 numbers2:1
Red / Black · Odd / Even · 1–18 / 19–3618 numbers1:1

Per-spin solvency is verified on-chain at bet time (worst-case payout over all 37 numbers + max fee ≤ gross + house balance), and the house node caps worst-case payout at 8 × maxUnitStake — one spin can never risk more house funds than one blackjack hand. Racetrack/neighbours and call bets are available in the UI (Voisins/Tiers/Orphelins as straight-up approximations — disclosed in-app). VRF fallback mode supports straight and outside bets only (the legacy contract has no split/street/six-line types; the UI blocks them with an explanation).

PLAY ROULETTE ↗

FAIRNESS — HOW TO CHECK IT YOURSELF

  • Both games derive every outcome from mutual commit-reveal hash chains fixed at channel open + a Pyth Entropy session seed requested on-chain at open. Neither the player, the house, nor the RAIN foundation can predict or choose an outcome unless the counterparty colludes.
  • The SDK verifies every house reveal against the pre-committed chain root in O(1); a bad reveal is on-chain provable and forfeits the cheater.
  • Statistical fairness is transparency-only in v1: session logs are verifiable, but there is no on-chain statistical slashing yet. Stated plainly in the accepted risks.
  • The honest claim: "neither we nor anyone else can know or choose your next card — and if anyone stops playing, the chain pays you what you're owed." "Fully trustless" would be false and we don't claim it (spec §1.2).