RAINRISK MARKETS · PROTOCOL
RAIN Risk Markets is an open protocol on Arbitrum One that turns any published probability distribution into an on-chain risk market: every payout collateralized before the round begins, every outcome derived from a verifiable truth source, every participant paid programmatically from one transparent fee waterfall.
This site is the protocol & documentation hub — for developers, auditors, operators and investors. If you want to play, the live dApp is at rainsandbox.xyz.
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, beyond any centralized venue, physical or digital. Three exposure rules (volatility cap, 1%-of-TVL tail cap, 5% global net exposure) bound the book mathematically. Whitepaper §3 · see the math run live.
Gameplay runs in two-party state channels: every card and spin is a mutual commit-reveal over pre-committed hash chains mixed with a Pyth Entropy session seed — random if either party is honest. Dual-signed EIP-712 states, on-chain fraud proofs (proveBadTransition), challenge windows and reclaimStale make disputes objective. Channels spec.
Two on-chain transactions per session; every action 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 other side vanishes. Architecture.
| CONTRACT | ADDRESS (ARBITRUM ONE · 42161) | STATUS |
|---|---|---|
| ChannelManager V3 (active) | 0xe13DC056111906aA4d3659880EBDC67138c76DA7 | Sourcify exact_match ✅ |
| GameMuxVerifier (manager's verifier) | 0x14155583112F87777B95AB0EA76786bf079c6A83 | Sourcify exact_match ✅ |
| BlackjackRulesVerifier | 0xFdcCE2DE2F8A28cBBdBaB01131C3bab138Eb9293 | Sourcify exact_match ✅ |
| RouletteRulesVerifier | 0x5239969ff32e5733F319d3e80eD64D19adF4962f | Sourcify exact_match ✅ |
| HouseBond (2×100k RUSD operator bonds) | 0x37E41E1d1EE2F96cE0203af06d639448547ade84 | Sourcify exact_match ✅ |
| RUSD (demo token, 6 decimals) | 0x260c7019E760763988843Bc5b873d749b5937469 | Play-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).
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.
Every release, transaction, incident and recovery is logged publicly. Highlights:
reclaimStale designed into V2/V3 as a direct consequence.forge coverage is unobtainable under via_ir — documented rather than hidden.