Verify a round.
Paste an exported proof below. Verification runs locally in your browser, with no API calls. You can save this page with fair-core.js and verify.js to verify offline.
Algorithm · obsidian-v1
SHA-256 of the UTF-8 server seed is committed before betting. HMAC-SHA256 uses the UTF-8 server seed as key. Messages are JSON.stringify(["obsidian-v1", clientSeed, nonce, game, block]), with blocks 0–31 (0–63 for Blackjack). Each digest provides eight unsigned 32-bit big-endian words. Rejection sampling maps words uniformly to each requested range; words at or above floor(2³² / range) × range are discarded.
Slots samples three independent integers 0–3 (Cherries, Bell, Diamond, MintPlay logo) for the center payline. Triple payouts are 2×, 4×, 9× and 30× respectively; exactly one matching pair returns 0.51×, and three distinct symbols return zero. Settings require one center line. All 64 combinations sum to 63.36× in returns, for 99% theoretical RTP before integer rounding. Coinflip samples a uniform integer in {0,1}, with 0 = Heads and 1 = Tails. Settings record the selected side. Correct calls pay floor(stake × 198 / 100), including stake; incorrect calls pay zero. Wheel samples a uniform index from 0 to N−1, where N is the recorded segment count (10, 20, 30 or 40; older proofs default to 20). Published risk tables in fair-core.js use integer hundredths of a multiplier. Payout is floor(stake × table[segment] / 100). Each table sums to 99 × N, giving 99% theoretical return before rounding. The original 20-segment tables are unchanged. HiLo samples 21 independent card IDs 0–51 with replacement. Rank is card ID % 13 + 1 (Ace low). Higher/lower predictions are strict and ties lose. Proofs contain the ordered predictions and cashout flag. A successful cashout pays floor(stake × 99 × 13^wins / (100 × product of favorable rank counts)), with 20 guesses maximum and a 10,000-coin payout cap. Verification rejects actions after a loss and unfinished rounds. Roulette samples a uniform integer 0–36. A straight number returns 36× the stake, dozens/columns return 3×, and red/black, odd/even or low/high return 2×. Zero loses outside bets. Settings record the bet type and selection; the verifier checks the same published rules. Dice samples 0–9999 and divides by 100. Limbo samples u = integer(1,000,000) / 1,000,000 and returns max(1, floor(99 / (1 − u)) / 100). Keno starts with 1–40 in ascending order, samples an index from the remaining pool and removes that number, repeating ten times. Blackjack shuffles unique card IDs 0–311 by sampled removal from an ascending six-deck pool. Rank is card ID % 13 + 1; suits repeat each 52 cards. Initial deal is player [shoe[0], shoe[2]], dealer [shoe[1], shoe[3]], with subsequent draws from index 4. Verification replays the recorded actions, dealer standing on soft 17, 3:2 naturals, 1:1 ordinary wins, pushes, and double stakes. Plinko consumes N uniform integers in {0,1}, where N is the recorded row count (8–16); the ordered values are the left/right path and their sum is the landing slot. Risk weights are published in fair-core.js. Each risk table is normalized by its exact binomial expectation to a 99% theoretical return, with integer payouts rounded down. The proof records the row count and selected risk. Twelve-row tables retain their original weights; other rows linearly interpolate the symmetric twelve-row weight profile and normalize by their own binomial probabilities. Mines shuffles the complete 0–24 tile pool by repeatedly removing a sampled index. The first configured number of shuffled tiles are mines. Completed proofs record the ordered reveals and cash-out flag. The multiplier is 0.99 × C(25, safe reveals) / C(25 − mines, safe reveals); integer payout uses exact rational arithmetic. Verification rejects reveals after a mine and unfinished rounds. Settlement rules and payout tables are in fair-core.js. Payouts are integer demo base units (10⁻⁸ of the recorded currency), rounded down.
Keep a copy of the original commitment and round proof before rotating. A matching hash proves the revealed seed matches that commitment; it does not prove licensing, solvency, or that a server cannot refuse a bet. Legacy rounds cannot be verified.