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

The protocol for trading risk itself.
Games. Predictions. Insurance. One trade — one protocol.

Humans trade risk in three forms: at random through games, for profit through predictions, and as protection through insurance. Underneath, it is always the same trade — a risk seller (the vault), a risk buyer, an agreed uncertain event, trustless resolution, and instant, pre-collateralized settlement. RAIN Risk Markets is the open protocol for that trade, built for insurers, trading firms, and gaming operators.

This site is the protocol & documentation hub — for developers, auditors, operators and investors. The live proof runs at rainsandbox.xyz.

01GAMES — LIVE

Risk bought at random. 13 provably-fair games live on Arbitrum One over state channels — blackjack, roulette, baccarat, crash and more — with a unified bankroll across all games: ~300 ms per action, zero gas, provable fairness with on-chain fraud proofs. If the protocol can settle a $520k blackjack hand in 300 ms with fraud proofs, it can settle any risk. Vertical →

02PREDICTIONS — LIVE VIA RAIN MARKETS

Risk traded for profit. The Rain prediction-markets side runs permissionless markets with an order book, liquidity, split/merge, and an AI + dispute + appeal resolution layer — the protocol's oracle for world events — shipped as rain-sdk-v2. Vertical →

03PARAMETRIC INSURANCE — SUPPORTED

Risk sold away as protection. A parametric cover is a prediction-market position bought as protection: flight delayed, rainfall > X, price < Y — resolved on public data, underwritten by vault capacity, paid instantly. Personal/individual insurance (private loss events, claims assessment): roadmap, Stage 2. Vertical →

RANDOMNESS AS A SERVICE

The protocol produces secure, decentralized, trustless randomness as a core capability: since v2.6.0 it is fully oracle-free — a two-party commit-reveal session seed fixed at channel open, unbiased if either party is honest, with on-chain fraud proofs. No Pyth, no Chainlink, no external randomness provider anywhere in the path. The games are the most adversarial consumer of randomness that exists, and they run on it in production. Research →

TOKEN-AGNOSTIC VAULT

The ChannelManager takes the settlement token and vault as constructor parameters. Any deployment settles in USDC, USDT, or its own token; limits, bonds, and the fee waterfall follow. RUSD is our demo instance's choice — not a protocol requirement. An insurer can run its own USDC instance tomorrow. Deployment config →

THE DEEPEST LIMITS IN THE MARKET

Position limits are a pure, public function of vault TVL — not a negotiation. At the design target of $300M TVL the protocol underwrites $600,000 even-money positions. Three exposure rules bound the book mathematically. Whitepaper §3 · see the math run live.

01PROVABLE FAIRNESS

All 13 games — verify any round yourself at the public fairness verifier. Gameplay runs in two-party state channels: every card and spin is a mutual commit-reveal over pre-committed hash chains, mixed with an oracle-free session seed fixed at channel open — instant, free, and random if either party is honest. As of v2.6.0 no external oracle is used anywhere: fairness is anchored purely in the two parties' own commitments. Dual-signed EIP-712 states, on-chain fraud proofs (proveBadTransition), challenge windows and reclaimStale make disputes objective. Channels spec.

02INSTANT, GUARANTEED SETTLEMENT

Two on-chain transactions per session; every risk position in between is an off-chain signed state — ~300–500 ms per action, zero gas, measured on Arbitrum mainnet over WSS. On-chain settlement enforces the last dual-signed state even if the counterparty vanishes: forceClose is the self-custody guarantee — the player can always exit unilaterally with their funds. Sessions survive disconnects via deterministic session recovery, and the operator side runs a serialized transaction queue so on-chain settlements never race each other. Architecture.

03ONE UNDERWRITING VAULT

The risk vault is the protocol's risk seller: it prices spread against variance for any listed distribution — a blackjack hand, a market position, a parametric cover. Exposure caps and limits are computed live from vault float. Limits derivation.

WHITE-LABEL PLATFORM — LAUNCH YOUR OWN PROVABLY-FAIR CASINO IN MINUTES

The protocol is now multi-brand. One deployed contract stack, any number of operator brands on top — each with its own identity, markup, and on-chain revenue account. Reference brand #1 is live: maycasino.xyz.

01BRAND.JSON CONFIG LAYER

A whole casino brand is a single config file: name, theme, games, operator address, fee markup. The create-a-brand wizard generates brand.json + a brand kit and gives an instant live preview of your casino on the reference deployment — before any contract interaction.

02OPERATOR CRM & BACK-OFFICE

Wallet-gated operator dashboard: live KPIs (open channels, sessions, deposit volume, GGR proxy, forced closes — computed from on-chain ChannelManager events), per-player list with proofs and Arbiscan links, AML posture view, and a claimBrand button that pulls accrued brand revenue directly from the on-chain FeeSplitter. See it live: maycasino.xyz/admin.html.

03MULTI-BRAND ACCOUNTING, ON-CHAIN

Brand address and markup (0–2.5%, disclosed) are contract-level parameters. Every session accrues the brand's share on-chain; operators withdraw with claimBrand — no invoices, no trust, no settlement lag. Revenue is verifiable by anyone on Arbiscan.

WALLET-REPUTATION BONUS ENGINE

Bonuses without the fraud: tiers are computed from a wallet's settled real wagers and on-chain deposits — sybil-resistant by construction, since reputation costs real play. Tier grants are locked credit with transparent wager-through unlock, and payouts are on-chain RUSD claims. Every player can inspect their own reputation panel; the rules are public, not a marketing black box.

OPEN-LIST AML SCREENING

Deposit screening against the public OFAC SDN list (open data, mirrored on-chain), gated before funds enter a channel — a decentralized compliance posture with no proprietary vendors and no hidden scoring. Status and dry-run check endpoints are public; flags are transparent, not silent.

Honest scope: the white-label stack runs on the demo deployment (play-money RUSD, pre-audit). The wizard, CRM, bonus engine and AML gate are live and inspectable at maycasino.xyz today — that is the claim, nothing more.

v2.6.0 — ORACLE-FREE PROVABLE FAIRNESS (SESSION SEED)

The headline change in v2.6.0: the randomness path no longer touches Pyth, Chainlink, or any external oracle. Fairness comes entirely from a two-party commit-reveal session seed fixed at channel open — verifiable by anyone, dependent on no one.

01COMMIT BEFORE YOU SEE

At channel terms, before seeing the player's seed, the house commits houseSeedCommit = keccak256(abi.encode(houseSeed)). The player's EIP-712 OpenChannel signature then binds both playerSeed and houseSeedCommit — so the house cannot re-commit after seeing the player's contribution, and the player cannot deny what they signed.

02CONTRACT-ENFORCED REVEAL

On open, the contract enforces keccak256(abi.encode(houseSeed)) == houseSeedCommit and sets sessionSeed = keccak256(abi.encode(houseSeed, playerSeed, channelId)). The channel goes Active in the same transaction, and the SessionSeedCommitReveal event is the public, on-chain fairness anchor for the whole session.

03CLIENT-VERIFIABLE ROUNDS

Every round k: outcome = keccak(playerReveal_k, houseReveal_k, sessionSeed, channelId, k) mod N. Every input is either on-chain or dual-signed — recompute any card or spin yourself with the seed-recompute widget. Random if either party is honest; no oracle to trust, bribe, or censor.

STATE CHANNELS — LIGHTNING FOR RISK

One on-chain open (deposit stays self-custodial), then ~300 ms off-chain signed rounds, then one on-chain close. If the house vanishes mid-session, forceClosefinalizeClose (and reclaimStale for abandoned channels) guarantee the player always exits with the latest dual-signed state. Fast, near-zero cost, provably fair — and the funds are always the player's.

ONE SESSION AT LOGIN

One signature + one channel open at login — then all 13 games, unlimited hands, one bankroll, with zero reopen friction between games. Done playing? CASH OUT ALL settles the whole session in a single on-chain close. Try it via the reference brand maycasino.xyz, spin up your own with the wizard, or read the integration docs.

Honest scope: v2.6.0 runs on the demo deployment (play-money RUSD, pre professional audit). The commit-reveal mechanics above are enforced by the Sourcify-verified ChannelManager V4 contract and verifiable by anyone on-chain — that is the claim, nothing more.

LIVE ON ARBITRUM ONE — WHAT'S ACTUALLY DEPLOYED TODAY

Honest numbers. Demo stakes, play-money RUSD, pre-audit. The design targets are in the whitepaper; these are the live facts. Play with any wallet — injected or via WalletConnect — with deterministic session recovery across disconnects.
GAMES LIVE (STATE CHANNELS)
13 provably-fair games
PER-ACTION LATENCY (MAINNET, MEASURED)
~300–480 ms
CURRENT MAX BET (BOND-LIMITED)
3,125 RUSD / hand
DESIGN TARGET @ $300M TVL
$520k–600k / position
CONTRACTADDRESS (ARBITRUM ONE · 42161)STATUS
ChannelManager V4 (active — oracle-free session seed)0xD8a856BD76ad773875dcF9EA8c9255A3805e678aSourcify exact_match ✅
ChannelManager V3 (legacy — Pyth-seed era, superseded)0xe13DC056111906aA4d3659880EBDC67138c76DA7Sourcify exact_match ✅
GameMuxVerifier (manager's verifier)0x14155583112F87777B95AB0EA76786bf079c6A83Sourcify exact_match ✅
GameMuxVerifier3 (current mux — routes all 13 games)0x5289cbE7F668362ee648e0a9d3026A6c9FE93fa5Deployed · Arbiscan
BaccaratRulesVerifier (new)0x1c3cF9D0f5757F420C06d64b28612Cca3A3E57fDDeployed · Arbiscan
BlackjackRulesVerifier0xFdcCE2DE2F8A28cBBdBaB01131C3bab138Eb9293Sourcify exact_match ✅
RouletteRulesVerifier0x5239969ff32e5733F319d3e80eD64D19adF4962fSourcify exact_match ✅
HouseBond (2×100k RUSD operator bonds)0x37E41E1d1EE2F96cE0203af06d639448547ade84Sourcify exact_match ✅
RUSD (demo token, 6 decimals)0x260c7019E760763988843Bc5b873d749b5937469Play-money faucet token

Why 3,125 and not 520k? The exposure engine clamps the table limit by the smallest of: float-derived cap (1733 ppm of vault float), operator bond headroom (slashable/32) and operator liquidity. Today the 100k RUSD bond is the binding constraint. Raising bonds raises the limit automatically — no redeploy. Full derivation in DEPLOYMENT.md (v4.2.0).

ONE PRIMITIVE, EVERY PRODUCT

A Position is {stake, distribution, payoutTable, spread}. The engine is product-agnostic and distribution-aware: a blackjack hand, a roulette spin, a flight-delay index, a threshold on a weather reading — the protocol knows only distributions, payout tables and spreads. Listing is decided by math, not committees: Σ(pᵢ·payoutᵢ) ≤ 1 − 1.25% and the exposure profile must be computable.

Base spread 1.25%, decomposed on-chain: 0.15% protocol fee → RAIN buyback & burn · 0.25% distribution · ~0.17% trader rebates · 0.05% Anchor Reserve standby · ~0.63% residual to the risk vault. Brands add 0–2.5% markup, disclosed on-chain.

Whitepaper — full economics →

TRACK RECORD, INCLUDING THE FAILURES

Every release, transaction, incident and recovery is logged publicly. Highlights:

  • 163/163 forge tests + 38/38 Anvil integration tests green, incl. fraud-proof and conservation fuzzing.
  • Mainnet dispute drill executed — real forced close with a full challenge window on Arbitrum One.
  • Known V1 incident, fully disclosed: one stranded V1 channel (2,500 RUSD) with no recovery path — player refunded from treasury, house allocation written off, and reclaimStale designed into V2/V3 as a direct consequence.
  • Honest gap: forge coverage is unobtainable under via_ir — documented rather than hidden.

Full audit package →

EXPLORE