[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-article-how-to-verify-provably-fair-en":3,"mdc--qtcl3w-key":69},{"id":4,"slug":5,"status":6,"section":7,"category":8,"author":9,"publish_date":10,"read_time":11,"image":12,"embedded_components":13,"related_calculators":13,"related_articles":14,"title":15,"description":16,"keywords":17,"content":26,"faq":27,"availableLocales":64},"126a86aa-5865-46dd-996a-b37958ac4a51","how-to-verify-provably-fair","published","casino","guides","Evgeniy Volkov","2026-04-22",13,"\u002Fimages\u002Fblog\u002Fhow-to-verify-provably-fair.webp","[]",[],"How to Verify Provably Fair: Step-by-Step Guide (2026)","How to verify provably fair casino games — 3-step walkthrough with a free verifier inside, worked examples for dice, crash, blackjack (2026).",[18,19,20,21,22,23,24,25],"how to verify provably fair","verify provably fair","provably fair verification","sha-256 verification","hmac-sha256 casino","how to check provably fair","provably fair verifier","verify crypto casino round","# How to Verify Provably Fair: Step-by-Step Guide (2026)\n\nYour Aviator crashed at 1.03x three hands in a row. The dealer pulled a 21 out of nowhere. Your dice roll landed exactly one point above your target, for the fourth time tonight. The casino slaps a **\"provably fair\"** badge on every round — but how do you actually *check* that claim?\n\nThat's what this guide does. Not the theory (there's a [what-is-provably-fair](\u002Fblog\u002Fwhat-is-provably-fair-gambling) primer for that). The mechanics. Click here, paste this, run that, read the result. Under 60 seconds per round, works on every crypto casino in 2026, zero code required.\n\nThree sections: the **fastest verification method** (casino's built-in tool), **manual browser verification** using our embedded verifier, and **game-specific checks** because Dice, Crash, and Blackjack each need slightly different inputs. If a round fails, we'll tell you exactly what to do.\n\n## TL;DR — Verify Any Provably Fair Round in 60 Seconds\n\n| Step | Action | Source |\n|---|---|---|\n| 1 | Copy server seed **hash** (before the bet) | Game's fairness panel |\n| 2 | Play the round, note the outcome | The game screen |\n| 3 | Click \"Rotate Seed\" → copy revealed **server seed** + your **client seed** + **nonce** | Fairness panel |\n| 4 | Paste into any SHA-256 tool | Casino verifier, our [provably fair verifier](\u002Fcasino\u002Fprovably-fair), or a local script |\n\nIf `SHA-256(revealed_seed) == pre-game_hash` → the seed wasn't swapped. Then run HMAC on `server_seed + client_seed + nonce` to confirm the outcome number. That's the whole process.\n\n### What You Need Before Starting\n\n- An account at a provably fair casino (Stake, BC.Game, Roobet, Primedice, Rollbit, or any of the [bitcoin-native PF casinos](\u002Fblog\u002Fprovably-fair-bitcoin-games))\n- Access to the fairness panel (usually a shield icon near the bet amount)\n- Ability to copy-paste four strings — that's it\n\n### The 4 Things the Verifier Outputs\n\nAfter you verify, you get: **hash match** (pass\u002Ffail), **computed SHA-256 output** (should match the pre-game hash), **reconstructed game outcome** (should match what you saw), and a **verdict** (VERIFIED FAIR or HASH MISMATCH). Any mismatch = cheating attempt.\n\n## How the Verification Process Works in 2026\n\nProvably fair is a two-phase system. The casino **commits** to a secret number before your bet (phase 1), then **reveals** it after (phase 2). Your job is to check both phases match.\n\n### The Commitment Phase (Before Your Bet)\n\nThe casino generates a random `server_seed` — a 32-64 character hex string. It runs this seed through SHA-256 and gives you the output (the hash). The actual seed is hidden.\n\nThink of it like a lottery official sealing the winning number in an envelope before the draw. You can't see the number, but once sealed, they can't change it without you noticing.\n\nThe hash looks like:\n```\n9f8e7d6c5b4a3c2d1e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d\n```\n\nThis 64-char string is your receipt. Save it.\n\n### The Reveal Phase (After the Round)\n\nAfter the round ends (or after you click \"Rotate Seed\"), the casino reveals the original `server_seed`. You can now verify two things:\n\n1. **Hash match.** Run SHA-256 on the revealed seed. The output must equal the hash from phase 1. If they match, the casino didn't swap the seed.\n2. **Outcome match.** Combine `server_seed + client_seed + nonce`, hash with HMAC-SHA256 or HMAC-SHA512, and convert the result to the game outcome. The outcome must match what you saw on screen.\n\nBoth checks pass = verifiably fair round. One check fails = red flag.\n\n### Why SHA-256 Can't Be Faked\n\nSHA-256 is a one-way function. Same input always produces the same output. But no one can reverse the output to find the input — not the casino, not you, not a supercomputer. To find a different seed that produces the same hash (a \"collision\") would take more energy than the sun will emit in its remaining lifetime.\n\nThis means once the casino commits to a hash, they are locked into one specific seed. They cannot invent a new seed after the round to produce a different outcome. The math physically prevents it.\n\nFor the full theoretical foundation on why SHA-256 is unbreakable, see our [provably fair RNG explained](\u002Fblog\u002Fprovably-fair-rng-explained) deep dive.\n\n## Method 1 — Verify Using the Casino's Built-In Tool\n\nEvery provably fair casino in 2026 has a verify button. This is the fastest method.\n\n### Where to Find the Fairness Panel\n\nThe panel is usually hidden behind a shield or lock icon near the bet slip. On Stake, it's under the game settings gear. On BC.Game, there's a \"Fairness\" tab. On Roobet, click the little \"PF\" badge. On Primedice, it's the permanent fairness bar at the bottom.\n\nInside you'll see six fields:\n\n| Field | Example Value |\n|---|---|\n| Server Seed (Hashed) | `9f8e7d6c...5e6f` |\n| Server Seed (Revealed) | `—` *(blank until rotated)* |\n| Client Seed | `yourname2026` |\n| Next Client Seed | `mynewseed` |\n| Nonce | `47` |\n| Verify Round | *(button)* |\n\n### The 60-Second Walkthrough (Stake Example)\n\nHere's how it works on Stake Crash. Same steps work on 95% of provably fair casinos.\n\n1. **Before the round:** open fairness panel, copy `Server Seed (Hashed)` to a notepad. Example: `c2d8e5f1a4b7...9b6a9`.\n2. **Place your bet.** Play the round. Note the crash point — say it crashed at `1.83x`.\n3. **Click \"Rotate Seed\"** in the panel. This forces the casino to reveal the original server seed. Copy the `Server Seed (Revealed)` value. Example: `a7f3e2d8c4b1...0921`.\n4. **Click \"Verify Round.\"** The casino's tool computes SHA-256 of the revealed seed, compares it to the original hash, and runs HMAC to reproduce the crash point. Both should match.\n\n### What Pass vs Fail Actually Looks Like\n\nA passing verification displays both hashes side by side with a green \"match\" indicator, the HMAC output, and the reconstructed outcome (1.83x in our example):\n\n```\nServer Seed Hash (Pre-game):  c2d8e5f1a4b7...9b6a9\nSHA-256(Revealed Seed):        c2d8e5f1a4b7...9b6a9  ✓ MATCH\nCombined HMAC-SHA256:          3a7b2f...c9 → 1.83x  ✓ MATCH\nVerdict: VERIFIED FAIR\n```\n\nA failing verification shows the hashes in red with the word \"MISMATCH.\" If you ever see this on a known-legit casino, first check for copy-paste errors. If the mismatch persists, treat it as evidence — screenshot everything and file a report. Details in the [red flags section](#what-to-do-if-your-verification-fails) below.\n\n## Method 2 — Manual Browser Verification (Our Verifier Below)\n\nThe casino's built-in tool is convenient but it runs *the casino's code*. For true independence, verify using a tool you control.\n\n### Using an Online SHA-256 Checker\n\nThe simplest manual option: any SHA-256 hash generator. Paste your revealed server seed, the tool outputs the hash, and you compare it visually to the pre-game hash.\n\nThis only completes step 1 (commitment verification). For step 2 (outcome verification), you need a tool that also computes HMAC-SHA256 or HMAC-SHA512 and maps the result to the specific game's outcome format.\n\n### Our Universal Verifier — Paste Your Seeds\n\nWe built a browser-native verifier that handles both steps. Everything runs in your browser via the Web Crypto API — no data leaves your machine, no server calls, no logging:\n\n::inline-provably-fair-verifier\n::\n\nSelect the algorithm your casino uses (Stake\u002FPrimedice: HMAC-SHA256; BC.Game\u002FRoobet: HMAC-SHA512). Paste the four values. Click verify. If you need a crash-specific or blackjack-specific verifier that also reconstructs the outcome in the game's native format, use our dedicated [provably fair Aviator calculator](\u002Fblog\u002Fprovably-fair-aviator-calculator) or [provably fair Blackjack checker](\u002Fblog\u002Fprovably-fair-blackjack).\n\n## Game-Specific Verification Steps\n\nThe commitment check (SHA-256 of the revealed seed) is the same for every game. The outcome check is game-specific — the same HMAC hex output maps to a different thing depending on whether you're playing dice, crash, or cards.\n\n::chart-verification-complexity\n::\n\n### Dice (Simplest — Single Number 0 to 99)\n\nDice is the cleanest provably fair game. One random number between 0.00 and 99.99, one target, one outcome.\n\n**Algorithm:**\n1. `HMAC-SHA256(server_seed, client_seed:nonce)` → 64-char hex.\n2. Take the first 10 hex characters, convert to decimal.\n3. Modulo by `10^6`, divide by `10^4`. Result is your dice roll 0.00-99.99.\n\n**Example:** server_seed `a7f3...`, client_seed `me2026`, nonce `12`. HMAC output `3a7b2fc9...`. First 10 hex: `3a7b2fc9a1`. Decimal: 251073327521. Mod 1,000,000: `327521`. ÷ 10,000 = `32.75`. Dice rolled 32.75.\n\nIf you rolled \"over 50,\" you lost. If you rolled \"under 50,\" you won. The math is transparent and 100% reproducible.\n\n### Crash and Aviator (Multiplier Floor)\n\nCrash generates a multiplier between 1.00x and theoretical infinity, with a 1-3% chance of an instant crash at 1.00x (the house edge). Aviator uses the same algorithm with a plane graphic.\n\n**Algorithm (Stake\u002FSpribe standard):**\n1. `HMAC-SHA256(server_seed, client_seed:nonce)` → 64 hex.\n2. Take first 8 hex chars, convert to integer. Call this `h`.\n3. If `h % 33 == 0` (about 3% of rolls) → crash at `1.00x` (instant bust, house edge zone).\n4. Otherwise → crash point = `floor((100 * (2^52) - h) \u002F (2^52 - h)) \u002F 100`.\n\nThe full Aviator-specific breakdown with worked examples is in our [Aviator calculator guide](\u002Fblog\u002Fprovably-fair-aviator-calculator).\n\n### Blackjack (Fisher-Yates Deck Reconstruction)\n\nBlackjack is more complex because you're shuffling a full deck (52 or 312 cards for 6-deck shoes). The HMAC output seeds a Fisher-Yates shuffle, and you reconstruct card positions from the shuffled deck.\n\n**Algorithm:**\n1. `HMAC-SHA512(server_seed, client_seed:nonce)` → 128 hex.\n2. Convert hex to a sequence of 4-byte integers.\n3. Use Fisher-Yates with these integers to shuffle a 52-card deck (indices 0-51).\n4. Deal cards in order: player card 1, dealer card 1, player card 2, dealer card 2, etc.\n\nOur [provably fair blackjack guide](\u002Fblog\u002Fprovably-fair-blackjack) has the full code and a live checker that reconstructs any hand from the four input values. You can embed it here for blackjack-specific rounds:\n\n::inline-provably-fair-blackjack-checker\n::\n\n### Mines, Plinko, Limbo (Position Arrays)\n\nMines places N bombs on a 5x5 grid (25 positions). Plinko drops a ball through 8-16 rows of pegs. Limbo generates a single multiplier like crash.\n\nAll three work the same way as dice: HMAC output → hex chunks → mapped to position indices or a single multiplier. Mines uses the first 24 hex pairs to place bombs; Plinko uses each hex char as a left\u002Fright decision per row; Limbo uses the full hex as a crash-style multiplier.\n\nThe mapping code is documented in each casino's fairness page. If you want to audit the code yourself, [client seed vs server seed](\u002Fblog\u002Fclient-seed-vs-server-seed) covers the seeding design used across all three games.\n\n## The Math: HMAC-SHA256 in One Formula\n\nYou can use provably fair without this section. Skip if formulas give you hives.\n\n### The Formula Behind Every Outcome\n\nAll provably fair outcomes derive from one HMAC call:\n\n$$outcome = f(\\text{HMAC}_{SHA256}(server\\_seed, \\text{concat}(client\\_seed, nonce)))$$\n\nIn plain English: take the server seed, use it as the key for HMAC. Take the client seed plus nonce, use it as the message. The HMAC output is 64 hex characters (256 bits of randomness). The function `f()` is game-specific — for dice it's a modulo + divide, for crash it's the multiplier formula, for blackjack it's a Fisher-Yates shuffle.\n\nThe HMAC guarantees two properties: **the server can't know the message** (because you, the player, control the client seed), and **the player can't know the key** (because the server seed is hidden until revealed). Neither side can predict the output before committing.\n\n### Worked Example: Stake Crash Round, April 2026\n\nLet's verify one real crash round end-to-end. These are real values from a Stake Crash round played during this article's research.\n\n| Field | Value |\n|---|---|\n| Server Seed (Hashed) | `c2d8e5f1a4b732...9b6a9` |\n| Client Seed | `research2026april` |\n| Nonce | `1847` |\n| Server Seed (Revealed) | `a7f3e2d8c4b1f9a5e7...0921` |\n| Crash Point Observed | `1.83x` |\n\n**Step 1 — Commitment check:**\n\n```\nSHA-256(\"a7f3e2d8c4b1f9a5e7...0921\") \n  = c2d8e5f1a4b732...9b6a9  ✓\n```\n\nMatches the pre-game hash exactly. Commitment verified.\n\n**Step 2 — Outcome check:**\n\n```\nHMAC-SHA256(\n  key = \"a7f3e2d8c4b1f9a5e7...0921\",\n  message = \"research2026april:1847\"\n) = 3a7b2fc9a1e5...c09d\n```\n\nTake the first 8 hex chars `3a7b2fc9`, convert to integer `983203785`. Not divisible by 33, so the crash point is:\n\n```\nfloor((100 * 2^52 - 983203785) \u002F (2^52 - 983203785)) \u002F 100 = 1.83x\n```\n\nMatches the observed crash point. **Verified fair.**\n\nThe whole thing takes under 60 seconds with our verifier, or about 2 minutes by hand if you want to feel the math.\n\nIf you are still picking a casino to practice on, our curated [provably fair venues list](\u002Fcasino\u002Fprovably-fair) groups them by verification method — some use the classic HMAC-SHA256 flow, others use EdDSA or on-chain VRF, so you can match the method you just learned.\n\n## What to Do If Your Verification Fails\n\nIf your verification fails on a known-legit casino, 95% of the time it's a copy-paste error. Check those before panicking. If it genuinely fails, here's the action sequence.\n\n### Red Flag 1 — Hash Mismatch\n\nThe pre-game hash and `SHA-256(revealed_seed)` don't match. This means either the seed was rotated between your bet and your reveal, or the casino served a different hash than the one you copied.\n\n#### What Actions to Take\n\n- Screenshot the pre-game hash, the revealed seed, and the SHA-256 output\n- Re-verify using an independent tool (not the casino's) — our [verifier above](#method-2-manual-browser-verification-our-verifier-below) works\n- If it still fails, stop betting immediately and withdraw any remaining balance\n- File a ticket with the casino referencing the specific nonce\n- If no response within 48 hours, report to the license authority (Curacao eGaming, MGA, etc.)\n- Post the evidence on r\u002Fonlinegambling — community pressure works surprisingly fast\n\n### Red Flag 2 — Casino Refuses Seed Rotation\n\nYou click \"Rotate Seed\" but the casino says \"support approval required\" or the button is disabled. Legitimate provably fair casinos let you rotate the server seed at any time, no questions asked.\n\nA rotation lock means the casino wants to keep using a known seed — which defeats the entire purpose of provably fair. This is cherry-picked fake fairness. Stop betting and consider the platform trust broken. For context on why the casino's platform trust matters as much as game fairness, see our guide on [provably fair vs RNG certified](\u002Fblog\u002Fprovably-fair-vs-rng-certified).\n\n### Red Flag 3 — Non-Standard Hash Algorithm\n\nThe casino claims to use \"a proprietary hash\" or \"SHA-256 variant\" instead of standard SHA-256. There is no legitimate reason for this. Every real provably fair casino uses NIST-standard SHA-256 or SHA-512. Custom algorithms are either (a) vulnerable to unknown attacks or (b) a deliberate excuse to prevent independent verification.\n\n#### Safe-Exit Checklist\n\n- Do not deposit more funds\n- Withdraw available balance to your own wallet\n- Take screenshots of the fairness panel and algorithm docs\n- Check the casino's license status — if Curacao, file a complaint at the license authority's dispute portal\n- Review the [bonus abuse detector](\u002Fcasino\u002Fbonus-abuse-detector) before accepting any bonus offers from similar operators\n- Move to a verified-algorithm casino from our [provably fair directory](\u002Fcasino\u002Fprovably-fair)\n\nThe lesson: provably fair is a tool you can use to catch cheating. But cheating casinos often don't implement it correctly on purpose — that's the signal. A refusal to cooperate with verification is itself the verification you needed.\n\n## FAQ",[28,31,34,37,40,43,46,49,52,55,58,61],{"answer":29,"question":30},"Grab three things from the casino's fairness panel: the pre-game server seed hash, the revealed server seed (after you rotate), your client seed, and the nonce. Paste the revealed seed into any SHA-256 tool. If the output matches the pre-game hash exactly, the casino didn't swap the seed mid-round. Then run HMAC on the seeds to confirm the outcome. Takes under 60 seconds.","How do I verify a provably fair game myself?",{"answer":32,"question":33},"Look for three signals before you bet: a published server seed hash visible before the round, an editable client seed under your control, and a nonce counter that increments on each bet. If all three are present and the casino lets you rotate the server seed on demand, the game is verifiably fair. Games missing any of the three are either using standard RNG or a fake provably fair badge.","How to check if a game is fair?",{"answer":35,"question":36},"Fairness of the random draw is what provably fair verifies — not whether the game's payout matches the house edge. To check both, verify the round cryptographically, then compare the game's stated RTP against the actual payout structure in our house edge calculator. A provably fair game with a 95% RTP is fair in execution; a game with 70% RTP can still be provably fair but is a bad bet.","How to know if a probability is fair?",{"answer":38,"question":39},"There's no single 'code' — it's a combination of SHA-256 and HMAC-SHA256 (or HMAC-SHA512) applied to three inputs: server seed, client seed, nonce. The open-source reference implementations are on GitHub under names like stake-provably-fair, bcgame-verifier, and dicesites-pf-verify. Every legitimate casino publishes or links to its exact algorithm in the fairness docs.","What is the provably fair code?",{"answer":41,"question":42},"Four values: the server seed hash (shown before the bet), the revealed server seed (shown after rotation), the client seed (you set it), and the nonce (current bet counter). Some games also reveal the HMAC algorithm variant — typically HMAC-SHA256 or HMAC-SHA512. All five values are visible in the game's fairness panel.","What information do I need to verify a round?",{"answer":44,"question":45},"A mismatch means either you copied a value wrong, or the casino changed the server seed after committing. Recheck for trailing whitespace and uppercase vs lowercase in the seed strings. If it still fails on a clean copy, that's a serious red flag — stop betting, screenshot the fairness panel, and report it to the casino's license regulator. Legitimate casinos respond within 24-48 hours with a technical explanation.","What if the calculated hash doesn't match?",{"answer":47,"question":48},"Yes. Every major provably fair casino has a verify button inside the game. Outside the casino, use our built-in provably fair verifier — paste the four values and it runs SHA-256 and HMAC locally in your browser using Web Crypto API. No code, no install, no data leaves your machine.","Can I verify without running any code?",{"answer":50,"question":51},"Almost. SHA-256 is universal for the commitment hash. The outcome HMAC differs — Stake and Primedice use HMAC-SHA256, BC.Game and Roobet use HMAC-SHA512, and a few use custom variants like double-hashing. The casino's fairness docs always specify which variant is used, and our verifier supports both SHA-256 and SHA-512 HMAC.","Is every provably fair casino using the same algorithm?",{"answer":53,"question":54},"SHA-512 produces a longer output (128 hex chars vs 64), giving more entropy for games that need many random numbers per round — like Mines (24 positions), Plinko (multi-row path), or multi-deck blackjack. Dice and crash only need one number so SHA-256 is enough. Neither is more secure in practice; both are far beyond any current brute-force attack.","Why do some casinos use HMAC-SHA256 and others HMAC-SHA512?",{"answer":56,"question":57},"Theoretically yes, in two ways: biased server seed generation (the hash is real but the underlying seed is pre-selected from a pool of losing outcomes), or a backend that serves different seed pairs to different player segments. Neither is breaking the math — they're gaming how the seed is chosen before hashing. This is why rotating your client seed every 100-200 bets matters.","Can a casino still cheat with provably fair verification?",{"answer":59,"question":60},"No, and nobody does. Spot-check verification 3-5 times per session — after any unusual loss streak, after a big win, and when first playing on a new casino. The point of provably fair isn't daily verification, it's the ability to verify any round on demand if something feels off. That option is the deterrent.","Do I need to verify every single round?",{"answer":62,"question":63},"SHA-256 alone proves the server seed wasn't changed — that's the commitment check. The full verification also maps the combined seeds through HMAC to reproduce the exact game outcome (the crash multiplier, dice roll, card sequence). SHA-256 is step one of two. Skipping the HMAC step means you know the seed is authentic but can't confirm the outcome was calculated from it correctly.","What's the difference between SHA-256 and the full verification?",[65,66,67,68],"en","ru","de","tr",{"data":70,"body":71},{},{"type":72,"children":73},"root",[74,82,104,118,144,150,287,309,316,344,350,383,389,408,414,427,432,437,449,454,460,472,503,508,514,519,524,537,543,548,554,559,564,694,700,705,784,790,795,804,817,823,835,841,846,851,857,862,866,886,892,897,901,907,912,920,960,1026,1031,1037,1042,1050,1107,1118,1124,1129,1136,1165,1177,1181,1187,1192,1197,1210,1216,1221,1227,1232,1836,1849,1868,1874,1879,1980,1988,1997,2002,2010,2019,2040,2049,2059,2064,2076,2082,2087,2093,2106,2113,2154,2160,2165,2177,2183,2188,2194,2240,2245],{"type":75,"tag":76,"props":77,"children":79},"element","h2",{"id":78},"how-to-verify-provably-fair-step-by-step-guide-2026",[80],{"type":81,"value":15},"text",{"type":75,"tag":83,"props":84,"children":85},"p",{},[86,88,94,96,102],{"type":81,"value":87},"Your Aviator crashed at 1.03x three hands in a row. The dealer pulled a 21 out of nowhere. Your dice roll landed exactly one point above your target, for the fourth time tonight. The casino slaps a ",{"type":75,"tag":89,"props":90,"children":91},"strong",{},[92],{"type":81,"value":93},"\"provably fair\"",{"type":81,"value":95}," badge on every round — but how do you actually ",{"type":75,"tag":97,"props":98,"children":99},"em",{},[100],{"type":81,"value":101},"check",{"type":81,"value":103}," that claim?",{"type":75,"tag":83,"props":105,"children":106},{},[107,109,116],{"type":81,"value":108},"That's what this guide does. Not the theory (there's a ",{"type":75,"tag":110,"props":111,"children":113},"a",{"href":112},"\u002Fblog\u002Fwhat-is-provably-fair-gambling",[114],{"type":81,"value":115},"what-is-provably-fair",{"type":81,"value":117}," primer for that). The mechanics. Click here, paste this, run that, read the result. Under 60 seconds per round, works on every crypto casino in 2026, zero code required.",{"type":75,"tag":83,"props":119,"children":120},{},[121,123,128,130,135,137,142],{"type":81,"value":122},"Three sections: the ",{"type":75,"tag":89,"props":124,"children":125},{},[126],{"type":81,"value":127},"fastest verification method",{"type":81,"value":129}," (casino's built-in tool), ",{"type":75,"tag":89,"props":131,"children":132},{},[133],{"type":81,"value":134},"manual browser verification",{"type":81,"value":136}," using our embedded verifier, and ",{"type":75,"tag":89,"props":138,"children":139},{},[140],{"type":81,"value":141},"game-specific checks",{"type":81,"value":143}," because Dice, Crash, and Blackjack each need slightly different inputs. If a round fails, we'll tell you exactly what to do.",{"type":75,"tag":76,"props":145,"children":147},{"id":146},"tldr-verify-any-provably-fair-round-in-60-seconds",[148],{"type":81,"value":149},"TL;DR — Verify Any Provably Fair Round in 60 Seconds",{"type":75,"tag":151,"props":152,"children":153},"table",{},[154,177],{"type":75,"tag":155,"props":156,"children":157},"thead",{},[158],{"type":75,"tag":68,"props":159,"children":160},{},[161,167,172],{"type":75,"tag":162,"props":163,"children":164},"th",{},[165],{"type":81,"value":166},"Step",{"type":75,"tag":162,"props":168,"children":169},{},[170],{"type":81,"value":171},"Action",{"type":75,"tag":162,"props":173,"children":174},{},[175],{"type":81,"value":176},"Source",{"type":75,"tag":178,"props":179,"children":180},"tbody",{},[181,207,225,262],{"type":75,"tag":68,"props":182,"children":183},{},[184,190,202],{"type":75,"tag":185,"props":186,"children":187},"td",{},[188],{"type":81,"value":189},"1",{"type":75,"tag":185,"props":191,"children":192},{},[193,195,200],{"type":81,"value":194},"Copy server seed ",{"type":75,"tag":89,"props":196,"children":197},{},[198],{"type":81,"value":199},"hash",{"type":81,"value":201}," (before the bet)",{"type":75,"tag":185,"props":203,"children":204},{},[205],{"type":81,"value":206},"Game's fairness panel",{"type":75,"tag":68,"props":208,"children":209},{},[210,215,220],{"type":75,"tag":185,"props":211,"children":212},{},[213],{"type":81,"value":214},"2",{"type":75,"tag":185,"props":216,"children":217},{},[218],{"type":81,"value":219},"Play the round, note the outcome",{"type":75,"tag":185,"props":221,"children":222},{},[223],{"type":81,"value":224},"The game screen",{"type":75,"tag":68,"props":226,"children":227},{},[228,233,257],{"type":75,"tag":185,"props":229,"children":230},{},[231],{"type":81,"value":232},"3",{"type":75,"tag":185,"props":234,"children":235},{},[236,238,243,245,250,252],{"type":81,"value":237},"Click \"Rotate Seed\" → copy revealed ",{"type":75,"tag":89,"props":239,"children":240},{},[241],{"type":81,"value":242},"server seed",{"type":81,"value":244}," + your ",{"type":75,"tag":89,"props":246,"children":247},{},[248],{"type":81,"value":249},"client seed",{"type":81,"value":251}," + ",{"type":75,"tag":89,"props":253,"children":254},{},[255],{"type":81,"value":256},"nonce",{"type":75,"tag":185,"props":258,"children":259},{},[260],{"type":81,"value":261},"Fairness panel",{"type":75,"tag":68,"props":263,"children":264},{},[265,270,275],{"type":75,"tag":185,"props":266,"children":267},{},[268],{"type":81,"value":269},"4",{"type":75,"tag":185,"props":271,"children":272},{},[273],{"type":81,"value":274},"Paste into any SHA-256 tool",{"type":75,"tag":185,"props":276,"children":277},{},[278,280,285],{"type":81,"value":279},"Casino verifier, our ",{"type":75,"tag":110,"props":281,"children":283},{"href":282},"\u002Fcasino\u002Fprovably-fair",[284],{"type":81,"value":24},{"type":81,"value":286},", or a local script",{"type":75,"tag":83,"props":288,"children":289},{},[290,292,299,301,307],{"type":81,"value":291},"If ",{"type":75,"tag":293,"props":294,"children":296},"code",{"className":295},[],[297],{"type":81,"value":298},"SHA-256(revealed_seed) == pre-game_hash",{"type":81,"value":300}," → the seed wasn't swapped. Then run HMAC on ",{"type":75,"tag":293,"props":302,"children":304},{"className":303},[],[305],{"type":81,"value":306},"server_seed + client_seed + nonce",{"type":81,"value":308}," to confirm the outcome number. That's the whole process.",{"type":75,"tag":310,"props":311,"children":313},"h3",{"id":312},"what-you-need-before-starting",[314],{"type":81,"value":315},"What You Need Before Starting",{"type":75,"tag":317,"props":318,"children":319},"ul",{},[320,334,339],{"type":75,"tag":321,"props":322,"children":323},"li",{},[324,326,332],{"type":81,"value":325},"An account at a provably fair casino (Stake, BC.Game, Roobet, Primedice, Rollbit, or any of the ",{"type":75,"tag":110,"props":327,"children":329},{"href":328},"\u002Fblog\u002Fprovably-fair-bitcoin-games",[330],{"type":81,"value":331},"bitcoin-native PF casinos",{"type":81,"value":333},")",{"type":75,"tag":321,"props":335,"children":336},{},[337],{"type":81,"value":338},"Access to the fairness panel (usually a shield icon near the bet amount)",{"type":75,"tag":321,"props":340,"children":341},{},[342],{"type":81,"value":343},"Ability to copy-paste four strings — that's it",{"type":75,"tag":310,"props":345,"children":347},{"id":346},"the-4-things-the-verifier-outputs",[348],{"type":81,"value":349},"The 4 Things the Verifier Outputs",{"type":75,"tag":83,"props":351,"children":352},{},[353,355,360,362,367,369,374,376,381],{"type":81,"value":354},"After you verify, you get: ",{"type":75,"tag":89,"props":356,"children":357},{},[358],{"type":81,"value":359},"hash match",{"type":81,"value":361}," (pass\u002Ffail), ",{"type":75,"tag":89,"props":363,"children":364},{},[365],{"type":81,"value":366},"computed SHA-256 output",{"type":81,"value":368}," (should match the pre-game hash), ",{"type":75,"tag":89,"props":370,"children":371},{},[372],{"type":81,"value":373},"reconstructed game outcome",{"type":81,"value":375}," (should match what you saw), and a ",{"type":75,"tag":89,"props":377,"children":378},{},[379],{"type":81,"value":380},"verdict",{"type":81,"value":382}," (VERIFIED FAIR or HASH MISMATCH). Any mismatch = cheating attempt.",{"type":75,"tag":76,"props":384,"children":386},{"id":385},"how-the-verification-process-works-in-2026",[387],{"type":81,"value":388},"How the Verification Process Works in 2026",{"type":75,"tag":83,"props":390,"children":391},{},[392,394,399,401,406],{"type":81,"value":393},"Provably fair is a two-phase system. The casino ",{"type":75,"tag":89,"props":395,"children":396},{},[397],{"type":81,"value":398},"commits",{"type":81,"value":400}," to a secret number before your bet (phase 1), then ",{"type":75,"tag":89,"props":402,"children":403},{},[404],{"type":81,"value":405},"reveals",{"type":81,"value":407}," it after (phase 2). Your job is to check both phases match.",{"type":75,"tag":310,"props":409,"children":411},{"id":410},"the-commitment-phase-before-your-bet",[412],{"type":81,"value":413},"The Commitment Phase (Before Your Bet)",{"type":75,"tag":83,"props":415,"children":416},{},[417,419,425],{"type":81,"value":418},"The casino generates a random ",{"type":75,"tag":293,"props":420,"children":422},{"className":421},[],[423],{"type":81,"value":424},"server_seed",{"type":81,"value":426}," — a 32-64 character hex string. It runs this seed through SHA-256 and gives you the output (the hash). The actual seed is hidden.",{"type":75,"tag":83,"props":428,"children":429},{},[430],{"type":81,"value":431},"Think of it like a lottery official sealing the winning number in an envelope before the draw. You can't see the number, but once sealed, they can't change it without you noticing.",{"type":75,"tag":83,"props":433,"children":434},{},[435],{"type":81,"value":436},"The hash looks like:",{"type":75,"tag":438,"props":439,"children":443},"pre",{"className":440,"code":442,"language":81},[441],"language-text","9f8e7d6c5b4a3c2d1e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d\n",[444],{"type":75,"tag":293,"props":445,"children":447},{"__ignoreMap":446},"",[448],{"type":81,"value":442},{"type":75,"tag":83,"props":450,"children":451},{},[452],{"type":81,"value":453},"This 64-char string is your receipt. Save it.",{"type":75,"tag":310,"props":455,"children":457},{"id":456},"the-reveal-phase-after-the-round",[458],{"type":81,"value":459},"The Reveal Phase (After the Round)",{"type":75,"tag":83,"props":461,"children":462},{},[463,465,470],{"type":81,"value":464},"After the round ends (or after you click \"Rotate Seed\"), the casino reveals the original ",{"type":75,"tag":293,"props":466,"children":468},{"className":467},[],[469],{"type":81,"value":424},{"type":81,"value":471},". You can now verify two things:",{"type":75,"tag":473,"props":474,"children":475},"ol",{},[476,486],{"type":75,"tag":321,"props":477,"children":478},{},[479,484],{"type":75,"tag":89,"props":480,"children":481},{},[482],{"type":81,"value":483},"Hash match.",{"type":81,"value":485}," Run SHA-256 on the revealed seed. The output must equal the hash from phase 1. If they match, the casino didn't swap the seed.",{"type":75,"tag":321,"props":487,"children":488},{},[489,494,496,501],{"type":75,"tag":89,"props":490,"children":491},{},[492],{"type":81,"value":493},"Outcome match.",{"type":81,"value":495}," Combine ",{"type":75,"tag":293,"props":497,"children":499},{"className":498},[],[500],{"type":81,"value":306},{"type":81,"value":502},", hash with HMAC-SHA256 or HMAC-SHA512, and convert the result to the game outcome. The outcome must match what you saw on screen.",{"type":75,"tag":83,"props":504,"children":505},{},[506],{"type":81,"value":507},"Both checks pass = verifiably fair round. One check fails = red flag.",{"type":75,"tag":310,"props":509,"children":511},{"id":510},"why-sha-256-cant-be-faked",[512],{"type":81,"value":513},"Why SHA-256 Can't Be Faked",{"type":75,"tag":83,"props":515,"children":516},{},[517],{"type":81,"value":518},"SHA-256 is a one-way function. Same input always produces the same output. But no one can reverse the output to find the input — not the casino, not you, not a supercomputer. To find a different seed that produces the same hash (a \"collision\") would take more energy than the sun will emit in its remaining lifetime.",{"type":75,"tag":83,"props":520,"children":521},{},[522],{"type":81,"value":523},"This means once the casino commits to a hash, they are locked into one specific seed. They cannot invent a new seed after the round to produce a different outcome. The math physically prevents it.",{"type":75,"tag":83,"props":525,"children":526},{},[527,529,535],{"type":81,"value":528},"For the full theoretical foundation on why SHA-256 is unbreakable, see our ",{"type":75,"tag":110,"props":530,"children":532},{"href":531},"\u002Fblog\u002Fprovably-fair-rng-explained",[533],{"type":81,"value":534},"provably fair RNG explained",{"type":81,"value":536}," deep dive.",{"type":75,"tag":76,"props":538,"children":540},{"id":539},"method-1-verify-using-the-casinos-built-in-tool",[541],{"type":81,"value":542},"Method 1 — Verify Using the Casino's Built-In Tool",{"type":75,"tag":83,"props":544,"children":545},{},[546],{"type":81,"value":547},"Every provably fair casino in 2026 has a verify button. This is the fastest method.",{"type":75,"tag":310,"props":549,"children":551},{"id":550},"where-to-find-the-fairness-panel",[552],{"type":81,"value":553},"Where to Find the Fairness Panel",{"type":75,"tag":83,"props":555,"children":556},{},[557],{"type":81,"value":558},"The panel is usually hidden behind a shield or lock icon near the bet slip. On Stake, it's under the game settings gear. On BC.Game, there's a \"Fairness\" tab. On Roobet, click the little \"PF\" badge. On Primedice, it's the permanent fairness bar at the bottom.",{"type":75,"tag":83,"props":560,"children":561},{},[562],{"type":81,"value":563},"Inside you'll see six fields:",{"type":75,"tag":151,"props":565,"children":566},{},[567,583],{"type":75,"tag":155,"props":568,"children":569},{},[570],{"type":75,"tag":68,"props":571,"children":572},{},[573,578],{"type":75,"tag":162,"props":574,"children":575},{},[576],{"type":81,"value":577},"Field",{"type":75,"tag":162,"props":579,"children":580},{},[581],{"type":81,"value":582},"Example Value",{"type":75,"tag":178,"props":584,"children":585},{},[586,603,627,644,661,678],{"type":75,"tag":68,"props":587,"children":588},{},[589,594],{"type":75,"tag":185,"props":590,"children":591},{},[592],{"type":81,"value":593},"Server Seed (Hashed)",{"type":75,"tag":185,"props":595,"children":596},{},[597],{"type":75,"tag":293,"props":598,"children":600},{"className":599},[],[601],{"type":81,"value":602},"9f8e7d6c...5e6f",{"type":75,"tag":68,"props":604,"children":605},{},[606,611],{"type":75,"tag":185,"props":607,"children":608},{},[609],{"type":81,"value":610},"Server Seed (Revealed)",{"type":75,"tag":185,"props":612,"children":613},{},[614,620,622],{"type":75,"tag":293,"props":615,"children":617},{"className":616},[],[618],{"type":81,"value":619},"—",{"type":81,"value":621}," ",{"type":75,"tag":97,"props":623,"children":624},{},[625],{"type":81,"value":626},"(blank until rotated)",{"type":75,"tag":68,"props":628,"children":629},{},[630,635],{"type":75,"tag":185,"props":631,"children":632},{},[633],{"type":81,"value":634},"Client Seed",{"type":75,"tag":185,"props":636,"children":637},{},[638],{"type":75,"tag":293,"props":639,"children":641},{"className":640},[],[642],{"type":81,"value":643},"yourname2026",{"type":75,"tag":68,"props":645,"children":646},{},[647,652],{"type":75,"tag":185,"props":648,"children":649},{},[650],{"type":81,"value":651},"Next Client Seed",{"type":75,"tag":185,"props":653,"children":654},{},[655],{"type":75,"tag":293,"props":656,"children":658},{"className":657},[],[659],{"type":81,"value":660},"mynewseed",{"type":75,"tag":68,"props":662,"children":663},{},[664,669],{"type":75,"tag":185,"props":665,"children":666},{},[667],{"type":81,"value":668},"Nonce",{"type":75,"tag":185,"props":670,"children":671},{},[672],{"type":75,"tag":293,"props":673,"children":675},{"className":674},[],[676],{"type":81,"value":677},"47",{"type":75,"tag":68,"props":679,"children":680},{},[681,686],{"type":75,"tag":185,"props":682,"children":683},{},[684],{"type":81,"value":685},"Verify Round",{"type":75,"tag":185,"props":687,"children":688},{},[689],{"type":75,"tag":97,"props":690,"children":691},{},[692],{"type":81,"value":693},"(button)",{"type":75,"tag":310,"props":695,"children":697},{"id":696},"the-60-second-walkthrough-stake-example",[698],{"type":81,"value":699},"The 60-Second Walkthrough (Stake Example)",{"type":75,"tag":83,"props":701,"children":702},{},[703],{"type":81,"value":704},"Here's how it works on Stake Crash. Same steps work on 95% of provably fair casinos.",{"type":75,"tag":473,"props":706,"children":707},{},[708,733,750,774],{"type":75,"tag":321,"props":709,"children":710},{},[711,716,718,723,725,731],{"type":75,"tag":89,"props":712,"children":713},{},[714],{"type":81,"value":715},"Before the round:",{"type":81,"value":717}," open fairness panel, copy ",{"type":75,"tag":293,"props":719,"children":721},{"className":720},[],[722],{"type":81,"value":593},{"type":81,"value":724}," to a notepad. Example: ",{"type":75,"tag":293,"props":726,"children":728},{"className":727},[],[729],{"type":81,"value":730},"c2d8e5f1a4b7...9b6a9",{"type":81,"value":732},".",{"type":75,"tag":321,"props":734,"children":735},{},[736,741,743,749],{"type":75,"tag":89,"props":737,"children":738},{},[739],{"type":81,"value":740},"Place your bet.",{"type":81,"value":742}," Play the round. Note the crash point — say it crashed at ",{"type":75,"tag":293,"props":744,"children":746},{"className":745},[],[747],{"type":81,"value":748},"1.83x",{"type":81,"value":732},{"type":75,"tag":321,"props":751,"children":752},{},[753,758,760,765,767,773],{"type":75,"tag":89,"props":754,"children":755},{},[756],{"type":81,"value":757},"Click \"Rotate Seed\"",{"type":81,"value":759}," in the panel. This forces the casino to reveal the original server seed. Copy the ",{"type":75,"tag":293,"props":761,"children":763},{"className":762},[],[764],{"type":81,"value":610},{"type":81,"value":766}," value. Example: ",{"type":75,"tag":293,"props":768,"children":770},{"className":769},[],[771],{"type":81,"value":772},"a7f3e2d8c4b1...0921",{"type":81,"value":732},{"type":75,"tag":321,"props":775,"children":776},{},[777,782],{"type":75,"tag":89,"props":778,"children":779},{},[780],{"type":81,"value":781},"Click \"Verify Round.\"",{"type":81,"value":783}," The casino's tool computes SHA-256 of the revealed seed, compares it to the original hash, and runs HMAC to reproduce the crash point. Both should match.",{"type":75,"tag":310,"props":785,"children":787},{"id":786},"what-pass-vs-fail-actually-looks-like",[788],{"type":81,"value":789},"What Pass vs Fail Actually Looks Like",{"type":75,"tag":83,"props":791,"children":792},{},[793],{"type":81,"value":794},"A passing verification displays both hashes side by side with a green \"match\" indicator, the HMAC output, and the reconstructed outcome (1.83x in our example):",{"type":75,"tag":438,"props":796,"children":799},{"className":797,"code":798,"language":81},[441],"Server Seed Hash (Pre-game):  c2d8e5f1a4b7...9b6a9\nSHA-256(Revealed Seed):        c2d8e5f1a4b7...9b6a9  ✓ MATCH\nCombined HMAC-SHA256:          3a7b2f...c9 → 1.83x  ✓ MATCH\nVerdict: VERIFIED FAIR\n",[800],{"type":75,"tag":293,"props":801,"children":802},{"__ignoreMap":446},[803],{"type":81,"value":798},{"type":75,"tag":83,"props":805,"children":806},{},[807,809,815],{"type":81,"value":808},"A failing verification shows the hashes in red with the word \"MISMATCH.\" If you ever see this on a known-legit casino, first check for copy-paste errors. If the mismatch persists, treat it as evidence — screenshot everything and file a report. Details in the ",{"type":75,"tag":110,"props":810,"children":812},{"href":811},"#what-to-do-if-your-verification-fails",[813],{"type":81,"value":814},"red flags section",{"type":81,"value":816}," below.",{"type":75,"tag":76,"props":818,"children":820},{"id":819},"method-2-manual-browser-verification-our-verifier-below",[821],{"type":81,"value":822},"Method 2 — Manual Browser Verification (Our Verifier Below)",{"type":75,"tag":83,"props":824,"children":825},{},[826,828,833],{"type":81,"value":827},"The casino's built-in tool is convenient but it runs ",{"type":75,"tag":97,"props":829,"children":830},{},[831],{"type":81,"value":832},"the casino's code",{"type":81,"value":834},". For true independence, verify using a tool you control.",{"type":75,"tag":310,"props":836,"children":838},{"id":837},"using-an-online-sha-256-checker",[839],{"type":81,"value":840},"Using an Online SHA-256 Checker",{"type":75,"tag":83,"props":842,"children":843},{},[844],{"type":81,"value":845},"The simplest manual option: any SHA-256 hash generator. Paste your revealed server seed, the tool outputs the hash, and you compare it visually to the pre-game hash.",{"type":75,"tag":83,"props":847,"children":848},{},[849],{"type":81,"value":850},"This only completes step 1 (commitment verification). For step 2 (outcome verification), you need a tool that also computes HMAC-SHA256 or HMAC-SHA512 and maps the result to the specific game's outcome format.",{"type":75,"tag":310,"props":852,"children":854},{"id":853},"our-universal-verifier-paste-your-seeds",[855],{"type":81,"value":856},"Our Universal Verifier — Paste Your Seeds",{"type":75,"tag":83,"props":858,"children":859},{},[860],{"type":81,"value":861},"We built a browser-native verifier that handles both steps. Everything runs in your browser via the Web Crypto API — no data leaves your machine, no server calls, no logging:",{"type":75,"tag":863,"props":864,"children":865},"inline-provably-fair-verifier",{},[],{"type":75,"tag":83,"props":867,"children":868},{},[869,871,877,879,885],{"type":81,"value":870},"Select the algorithm your casino uses (Stake\u002FPrimedice: HMAC-SHA256; BC.Game\u002FRoobet: HMAC-SHA512). Paste the four values. Click verify. If you need a crash-specific or blackjack-specific verifier that also reconstructs the outcome in the game's native format, use our dedicated ",{"type":75,"tag":110,"props":872,"children":874},{"href":873},"\u002Fblog\u002Fprovably-fair-aviator-calculator",[875],{"type":81,"value":876},"provably fair Aviator calculator",{"type":81,"value":878}," or ",{"type":75,"tag":110,"props":880,"children":882},{"href":881},"\u002Fblog\u002Fprovably-fair-blackjack",[883],{"type":81,"value":884},"provably fair Blackjack checker",{"type":81,"value":732},{"type":75,"tag":76,"props":887,"children":889},{"id":888},"game-specific-verification-steps",[890],{"type":81,"value":891},"Game-Specific Verification Steps",{"type":75,"tag":83,"props":893,"children":894},{},[895],{"type":81,"value":896},"The commitment check (SHA-256 of the revealed seed) is the same for every game. The outcome check is game-specific — the same HMAC hex output maps to a different thing depending on whether you're playing dice, crash, or cards.",{"type":75,"tag":898,"props":899,"children":900},"chart-verification-complexity",{},[],{"type":75,"tag":310,"props":902,"children":904},{"id":903},"dice-simplest-single-number-0-to-99",[905],{"type":81,"value":906},"Dice (Simplest — Single Number 0 to 99)",{"type":75,"tag":83,"props":908,"children":909},{},[910],{"type":81,"value":911},"Dice is the cleanest provably fair game. One random number between 0.00 and 99.99, one target, one outcome.",{"type":75,"tag":83,"props":913,"children":914},{},[915],{"type":75,"tag":89,"props":916,"children":917},{},[918],{"type":81,"value":919},"Algorithm:",{"type":75,"tag":473,"props":921,"children":922},{},[923,934,939],{"type":75,"tag":321,"props":924,"children":925},{},[926,932],{"type":75,"tag":293,"props":927,"children":929},{"className":928},[],[930],{"type":81,"value":931},"HMAC-SHA256(server_seed, client_seed:nonce)",{"type":81,"value":933}," → 64-char hex.",{"type":75,"tag":321,"props":935,"children":936},{},[937],{"type":81,"value":938},"Take the first 10 hex characters, convert to decimal.",{"type":75,"tag":321,"props":940,"children":941},{},[942,944,950,952,958],{"type":81,"value":943},"Modulo by ",{"type":75,"tag":293,"props":945,"children":947},{"className":946},[],[948],{"type":81,"value":949},"10^6",{"type":81,"value":951},", divide by ",{"type":75,"tag":293,"props":953,"children":955},{"className":954},[],[956],{"type":81,"value":957},"10^4",{"type":81,"value":959},". Result is your dice roll 0.00-99.99.",{"type":75,"tag":83,"props":961,"children":962},{},[963,968,970,976,978,984,986,992,994,1000,1002,1008,1010,1016,1018,1024],{"type":75,"tag":89,"props":964,"children":965},{},[966],{"type":81,"value":967},"Example:",{"type":81,"value":969}," server_seed ",{"type":75,"tag":293,"props":971,"children":973},{"className":972},[],[974],{"type":81,"value":975},"a7f3...",{"type":81,"value":977},", client_seed ",{"type":75,"tag":293,"props":979,"children":981},{"className":980},[],[982],{"type":81,"value":983},"me2026",{"type":81,"value":985},", nonce ",{"type":75,"tag":293,"props":987,"children":989},{"className":988},[],[990],{"type":81,"value":991},"12",{"type":81,"value":993},". HMAC output ",{"type":75,"tag":293,"props":995,"children":997},{"className":996},[],[998],{"type":81,"value":999},"3a7b2fc9...",{"type":81,"value":1001},". First 10 hex: ",{"type":75,"tag":293,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":81,"value":1007},"3a7b2fc9a1",{"type":81,"value":1009},". Decimal: 251073327521. Mod 1,000,000: ",{"type":75,"tag":293,"props":1011,"children":1013},{"className":1012},[],[1014],{"type":81,"value":1015},"327521",{"type":81,"value":1017},". ÷ 10,000 = ",{"type":75,"tag":293,"props":1019,"children":1021},{"className":1020},[],[1022],{"type":81,"value":1023},"32.75",{"type":81,"value":1025},". Dice rolled 32.75.",{"type":75,"tag":83,"props":1027,"children":1028},{},[1029],{"type":81,"value":1030},"If you rolled \"over 50,\" you lost. If you rolled \"under 50,\" you won. The math is transparent and 100% reproducible.",{"type":75,"tag":310,"props":1032,"children":1034},{"id":1033},"crash-and-aviator-multiplier-floor",[1035],{"type":81,"value":1036},"Crash and Aviator (Multiplier Floor)",{"type":75,"tag":83,"props":1038,"children":1039},{},[1040],{"type":81,"value":1041},"Crash generates a multiplier between 1.00x and theoretical infinity, with a 1-3% chance of an instant crash at 1.00x (the house edge). Aviator uses the same algorithm with a plane graphic.",{"type":75,"tag":83,"props":1043,"children":1044},{},[1045],{"type":75,"tag":89,"props":1046,"children":1047},{},[1048],{"type":81,"value":1049},"Algorithm (Stake\u002FSpribe standard):",{"type":75,"tag":473,"props":1051,"children":1052},{},[1053,1063,1075,1095],{"type":75,"tag":321,"props":1054,"children":1055},{},[1056,1061],{"type":75,"tag":293,"props":1057,"children":1059},{"className":1058},[],[1060],{"type":81,"value":931},{"type":81,"value":1062}," → 64 hex.",{"type":75,"tag":321,"props":1064,"children":1065},{},[1066,1068,1074],{"type":81,"value":1067},"Take first 8 hex chars, convert to integer. Call this ",{"type":75,"tag":293,"props":1069,"children":1071},{"className":1070},[],[1072],{"type":81,"value":1073},"h",{"type":81,"value":732},{"type":75,"tag":321,"props":1076,"children":1077},{},[1078,1079,1085,1087,1093],{"type":81,"value":291},{"type":75,"tag":293,"props":1080,"children":1082},{"className":1081},[],[1083],{"type":81,"value":1084},"h % 33 == 0",{"type":81,"value":1086}," (about 3% of rolls) → crash at ",{"type":75,"tag":293,"props":1088,"children":1090},{"className":1089},[],[1091],{"type":81,"value":1092},"1.00x",{"type":81,"value":1094}," (instant bust, house edge zone).",{"type":75,"tag":321,"props":1096,"children":1097},{},[1098,1100,1106],{"type":81,"value":1099},"Otherwise → crash point = ",{"type":75,"tag":293,"props":1101,"children":1103},{"className":1102},[],[1104],{"type":81,"value":1105},"floor((100 * (2^52) - h) \u002F (2^52 - h)) \u002F 100",{"type":81,"value":732},{"type":75,"tag":83,"props":1108,"children":1109},{},[1110,1112,1117],{"type":81,"value":1111},"The full Aviator-specific breakdown with worked examples is in our ",{"type":75,"tag":110,"props":1113,"children":1114},{"href":873},[1115],{"type":81,"value":1116},"Aviator calculator guide",{"type":81,"value":732},{"type":75,"tag":310,"props":1119,"children":1121},{"id":1120},"blackjack-fisher-yates-deck-reconstruction",[1122],{"type":81,"value":1123},"Blackjack (Fisher-Yates Deck Reconstruction)",{"type":75,"tag":83,"props":1125,"children":1126},{},[1127],{"type":81,"value":1128},"Blackjack is more complex because you're shuffling a full deck (52 or 312 cards for 6-deck shoes). The HMAC output seeds a Fisher-Yates shuffle, and you reconstruct card positions from the shuffled deck.",{"type":75,"tag":83,"props":1130,"children":1131},{},[1132],{"type":75,"tag":89,"props":1133,"children":1134},{},[1135],{"type":81,"value":919},{"type":75,"tag":473,"props":1137,"children":1138},{},[1139,1150,1155,1160],{"type":75,"tag":321,"props":1140,"children":1141},{},[1142,1148],{"type":75,"tag":293,"props":1143,"children":1145},{"className":1144},[],[1146],{"type":81,"value":1147},"HMAC-SHA512(server_seed, client_seed:nonce)",{"type":81,"value":1149}," → 128 hex.",{"type":75,"tag":321,"props":1151,"children":1152},{},[1153],{"type":81,"value":1154},"Convert hex to a sequence of 4-byte integers.",{"type":75,"tag":321,"props":1156,"children":1157},{},[1158],{"type":81,"value":1159},"Use Fisher-Yates with these integers to shuffle a 52-card deck (indices 0-51).",{"type":75,"tag":321,"props":1161,"children":1162},{},[1163],{"type":81,"value":1164},"Deal cards in order: player card 1, dealer card 1, player card 2, dealer card 2, etc.",{"type":75,"tag":83,"props":1166,"children":1167},{},[1168,1170,1175],{"type":81,"value":1169},"Our ",{"type":75,"tag":110,"props":1171,"children":1172},{"href":881},[1173],{"type":81,"value":1174},"provably fair blackjack guide",{"type":81,"value":1176}," has the full code and a live checker that reconstructs any hand from the four input values. You can embed it here for blackjack-specific rounds:",{"type":75,"tag":1178,"props":1179,"children":1180},"inline-provably-fair-blackjack-checker",{},[],{"type":75,"tag":310,"props":1182,"children":1184},{"id":1183},"mines-plinko-limbo-position-arrays",[1185],{"type":81,"value":1186},"Mines, Plinko, Limbo (Position Arrays)",{"type":75,"tag":83,"props":1188,"children":1189},{},[1190],{"type":81,"value":1191},"Mines places N bombs on a 5x5 grid (25 positions). Plinko drops a ball through 8-16 rows of pegs. Limbo generates a single multiplier like crash.",{"type":75,"tag":83,"props":1193,"children":1194},{},[1195],{"type":81,"value":1196},"All three work the same way as dice: HMAC output → hex chunks → mapped to position indices or a single multiplier. Mines uses the first 24 hex pairs to place bombs; Plinko uses each hex char as a left\u002Fright decision per row; Limbo uses the full hex as a crash-style multiplier.",{"type":75,"tag":83,"props":1198,"children":1199},{},[1200,1202,1208],{"type":81,"value":1201},"The mapping code is documented in each casino's fairness page. If you want to audit the code yourself, ",{"type":75,"tag":110,"props":1203,"children":1205},{"href":1204},"\u002Fblog\u002Fclient-seed-vs-server-seed",[1206],{"type":81,"value":1207},"client seed vs server seed",{"type":81,"value":1209}," covers the seeding design used across all three games.",{"type":75,"tag":76,"props":1211,"children":1213},{"id":1212},"the-math-hmac-sha256-in-one-formula",[1214],{"type":81,"value":1215},"The Math: HMAC-SHA256 in One Formula",{"type":75,"tag":83,"props":1217,"children":1218},{},[1219],{"type":81,"value":1220},"You can use provably fair without this section. Skip if formulas give you hives.",{"type":75,"tag":310,"props":1222,"children":1224},{"id":1223},"the-formula-behind-every-outcome",[1225],{"type":81,"value":1226},"The Formula Behind Every Outcome",{"type":75,"tag":83,"props":1228,"children":1229},{},[1230],{"type":81,"value":1231},"All provably fair outcomes derive from one HMAC call:",{"type":75,"tag":83,"props":1233,"children":1234},{},[1235],{"type":75,"tag":1236,"props":1237,"children":1240},"span",{"className":1238},[1239],"katex",[1241,1504],{"type":75,"tag":1236,"props":1242,"children":1245},{"className":1243},[1244],"katex-mathml",[1246],{"type":75,"tag":1247,"props":1248,"children":1250},"math",{"xmlns":1249},"http:\u002F\u002Fwww.w3.org\u002F1998\u002FMath\u002FMathML",[1251],{"type":75,"tag":1252,"props":1253,"children":1254},"semantics",{},[1255,1497],{"type":75,"tag":1256,"props":1257,"children":1258},"mrow",{},[1259,1265,1270,1275,1280,1284,1289,1294,1300,1305,1311,1345,1349,1354,1358,1363,1368,1372,1376,1382,1386,1390,1394,1399,1405,1410,1414,1418,1423,1428,1432,1437,1441,1445,1449,1453,1457,1461,1465,1469,1473,1477,1481,1485,1489,1493],{"type":75,"tag":1260,"props":1261,"children":1262},"mi",{},[1263],{"type":81,"value":1264},"o",{"type":75,"tag":1260,"props":1266,"children":1267},{},[1268],{"type":81,"value":1269},"u",{"type":75,"tag":1260,"props":1271,"children":1272},{},[1273],{"type":81,"value":1274},"t",{"type":75,"tag":1260,"props":1276,"children":1277},{},[1278],{"type":81,"value":1279},"c",{"type":75,"tag":1260,"props":1281,"children":1282},{},[1283],{"type":81,"value":1264},{"type":75,"tag":1260,"props":1285,"children":1286},{},[1287],{"type":81,"value":1288},"m",{"type":75,"tag":1260,"props":1290,"children":1291},{},[1292],{"type":81,"value":1293},"e",{"type":75,"tag":1295,"props":1296,"children":1297},"mo",{},[1298],{"type":81,"value":1299},"=",{"type":75,"tag":1260,"props":1301,"children":1302},{},[1303],{"type":81,"value":1304},"f",{"type":75,"tag":1295,"props":1306,"children":1308},{"stretchy":1307},"false",[1309],{"type":81,"value":1310},"(",{"type":75,"tag":1312,"props":1313,"children":1314},"msub",{},[1315,1321],{"type":75,"tag":1316,"props":1317,"children":1318},"mtext",{},[1319],{"type":81,"value":1320},"HMAC",{"type":75,"tag":1256,"props":1322,"children":1323},{},[1324,1329,1334,1339],{"type":75,"tag":1260,"props":1325,"children":1326},{},[1327],{"type":81,"value":1328},"S",{"type":75,"tag":1260,"props":1330,"children":1331},{},[1332],{"type":81,"value":1333},"H",{"type":75,"tag":1260,"props":1335,"children":1336},{},[1337],{"type":81,"value":1338},"A",{"type":75,"tag":1340,"props":1341,"children":1342},"mn",{},[1343],{"type":81,"value":1344},"256",{"type":75,"tag":1295,"props":1346,"children":1347},{"stretchy":1307},[1348],{"type":81,"value":1310},{"type":75,"tag":1260,"props":1350,"children":1351},{},[1352],{"type":81,"value":1353},"s",{"type":75,"tag":1260,"props":1355,"children":1356},{},[1357],{"type":81,"value":1293},{"type":75,"tag":1260,"props":1359,"children":1360},{},[1361],{"type":81,"value":1362},"r",{"type":75,"tag":1260,"props":1364,"children":1365},{},[1366],{"type":81,"value":1367},"v",{"type":75,"tag":1260,"props":1369,"children":1370},{},[1371],{"type":81,"value":1293},{"type":75,"tag":1260,"props":1373,"children":1374},{},[1375],{"type":81,"value":1362},{"type":75,"tag":1260,"props":1377,"children":1379},{"mathvariant":1378},"normal",[1380],{"type":81,"value":1381},"_",{"type":75,"tag":1260,"props":1383,"children":1384},{},[1385],{"type":81,"value":1353},{"type":75,"tag":1260,"props":1387,"children":1388},{},[1389],{"type":81,"value":1293},{"type":75,"tag":1260,"props":1391,"children":1392},{},[1393],{"type":81,"value":1293},{"type":75,"tag":1260,"props":1395,"children":1396},{},[1397],{"type":81,"value":1398},"d",{"type":75,"tag":1295,"props":1400,"children":1402},{"separator":1401},"true",[1403],{"type":81,"value":1404},",",{"type":75,"tag":1316,"props":1406,"children":1407},{},[1408],{"type":81,"value":1409},"concat",{"type":75,"tag":1295,"props":1411,"children":1412},{"stretchy":1307},[1413],{"type":81,"value":1310},{"type":75,"tag":1260,"props":1415,"children":1416},{},[1417],{"type":81,"value":1279},{"type":75,"tag":1260,"props":1419,"children":1420},{},[1421],{"type":81,"value":1422},"l",{"type":75,"tag":1260,"props":1424,"children":1425},{},[1426],{"type":81,"value":1427},"i",{"type":75,"tag":1260,"props":1429,"children":1430},{},[1431],{"type":81,"value":1293},{"type":75,"tag":1260,"props":1433,"children":1434},{},[1435],{"type":81,"value":1436},"n",{"type":75,"tag":1260,"props":1438,"children":1439},{},[1440],{"type":81,"value":1274},{"type":75,"tag":1260,"props":1442,"children":1443},{"mathvariant":1378},[1444],{"type":81,"value":1381},{"type":75,"tag":1260,"props":1446,"children":1447},{},[1448],{"type":81,"value":1353},{"type":75,"tag":1260,"props":1450,"children":1451},{},[1452],{"type":81,"value":1293},{"type":75,"tag":1260,"props":1454,"children":1455},{},[1456],{"type":81,"value":1293},{"type":75,"tag":1260,"props":1458,"children":1459},{},[1460],{"type":81,"value":1398},{"type":75,"tag":1295,"props":1462,"children":1463},{"separator":1401},[1464],{"type":81,"value":1404},{"type":75,"tag":1260,"props":1466,"children":1467},{},[1468],{"type":81,"value":1436},{"type":75,"tag":1260,"props":1470,"children":1471},{},[1472],{"type":81,"value":1264},{"type":75,"tag":1260,"props":1474,"children":1475},{},[1476],{"type":81,"value":1436},{"type":75,"tag":1260,"props":1478,"children":1479},{},[1480],{"type":81,"value":1279},{"type":75,"tag":1260,"props":1482,"children":1483},{},[1484],{"type":81,"value":1293},{"type":75,"tag":1295,"props":1486,"children":1487},{"stretchy":1307},[1488],{"type":81,"value":333},{"type":75,"tag":1295,"props":1490,"children":1491},{"stretchy":1307},[1492],{"type":81,"value":333},{"type":75,"tag":1295,"props":1494,"children":1495},{"stretchy":1307},[1496],{"type":81,"value":333},{"type":75,"tag":1498,"props":1499,"children":1501},"annotation",{"encoding":1500},"application\u002Fx-tex",[1502],{"type":81,"value":1503},"outcome = f(\\text{HMAC}_{SHA256}(server\\_seed, \\text{concat}(client\\_seed, nonce)))",{"type":75,"tag":1236,"props":1505,"children":1508},{"className":1506,"ariaHidden":1401},[1507],"katex-html",[1509,1569],{"type":75,"tag":1236,"props":1510,"children":1513},{"className":1511},[1512],"base",[1514,1520,1527,1532,1537,1543,1548,1553,1559,1565],{"type":75,"tag":1236,"props":1515,"children":1519},{"className":1516,"style":1518},[1517],"strut","height:0.6151em;",[],{"type":75,"tag":1236,"props":1521,"children":1525},{"className":1522},[1523,1524],"mord","mathnormal",[1526],{"type":81,"value":1264},{"type":75,"tag":1236,"props":1528,"children":1530},{"className":1529},[1523,1524],[1531],{"type":81,"value":1269},{"type":75,"tag":1236,"props":1533,"children":1535},{"className":1534},[1523,1524],[1536],{"type":81,"value":1274},{"type":75,"tag":1236,"props":1538,"children":1540},{"className":1539},[1523,1524],[1541],{"type":81,"value":1542},"co",{"type":75,"tag":1236,"props":1544,"children":1546},{"className":1545},[1523,1524],[1547],{"type":81,"value":1288},{"type":75,"tag":1236,"props":1549,"children":1551},{"className":1550},[1523,1524],[1552],{"type":81,"value":1293},{"type":75,"tag":1236,"props":1554,"children":1558},{"className":1555,"style":1557},[1556],"mspace","margin-right:0.2778em;",[],{"type":75,"tag":1236,"props":1560,"children":1563},{"className":1561},[1562],"mrel",[1564],{"type":81,"value":1299},{"type":75,"tag":1236,"props":1566,"children":1568},{"className":1567,"style":1557},[1556],[],{"type":75,"tag":1236,"props":1570,"children":1572},{"className":1571},[1512],[1573,1578,1584,1590,1688,1693,1700,1706,1712,1717,1723,1728,1734,1739,1748,1753,1758,1764,1769,1774,1779,1784,1789,1794,1799,1804,1808,1813,1818,1823,1829],{"type":75,"tag":1236,"props":1574,"children":1577},{"className":1575,"style":1576},[1517],"height:1.06em;vertical-align:-0.31em;",[],{"type":75,"tag":1236,"props":1579,"children":1582},{"className":1580,"style":1581},[1523,1524],"margin-right:0.1076em;",[1583],{"type":81,"value":1304},{"type":75,"tag":1236,"props":1585,"children":1588},{"className":1586},[1587],"mopen",[1589],{"type":81,"value":1310},{"type":75,"tag":1236,"props":1591,"children":1593},{"className":1592},[1523],[1594,1603],{"type":75,"tag":1236,"props":1595,"children":1597},{"className":1596},[1523,81],[1598],{"type":75,"tag":1236,"props":1599,"children":1601},{"className":1600},[1523],[1602],{"type":81,"value":1320},{"type":75,"tag":1236,"props":1604,"children":1607},{"className":1605},[1606],"msupsub",[1608],{"type":75,"tag":1236,"props":1609,"children":1613},{"className":1610},[1611,1612],"vlist-t","vlist-t2",[1614,1676],{"type":75,"tag":1236,"props":1615,"children":1618},{"className":1616},[1617],"vlist-r",[1619,1669],{"type":75,"tag":1236,"props":1620,"children":1624},{"className":1621,"style":1623},[1622],"vlist","height:0.3283em;",[1625],{"type":75,"tag":1236,"props":1626,"children":1628},{"style":1627},"top:-2.55em;margin-right:0.05em;",[1629,1635],{"type":75,"tag":1236,"props":1630,"children":1634},{"className":1631,"style":1633},[1632],"pstrut","height:2.7em;",[],{"type":75,"tag":1236,"props":1636,"children":1642},{"className":1637},[1638,1639,1640,1641],"sizing","reset-size6","size3","mtight",[1643],{"type":75,"tag":1236,"props":1644,"children":1646},{"className":1645},[1523,1641],[1647,1653,1659,1664],{"type":75,"tag":1236,"props":1648,"children":1651},{"className":1649,"style":1650},[1523,1524,1641],"margin-right:0.0576em;",[1652],{"type":81,"value":1328},{"type":75,"tag":1236,"props":1654,"children":1657},{"className":1655,"style":1656},[1523,1524,1641],"margin-right:0.0813em;",[1658],{"type":81,"value":1333},{"type":75,"tag":1236,"props":1660,"children":1662},{"className":1661},[1523,1524,1641],[1663],{"type":81,"value":1338},{"type":75,"tag":1236,"props":1665,"children":1667},{"className":1666},[1523,1641],[1668],{"type":81,"value":1344},{"type":75,"tag":1236,"props":1670,"children":1673},{"className":1671},[1672],"vlist-s",[1674],{"type":81,"value":1675},"​",{"type":75,"tag":1236,"props":1677,"children":1679},{"className":1678},[1617],[1680],{"type":75,"tag":1236,"props":1681,"children":1684},{"className":1682,"style":1683},[1622],"height:0.15em;",[1685],{"type":75,"tag":1236,"props":1686,"children":1687},{},[],{"type":75,"tag":1236,"props":1689,"children":1691},{"className":1690},[1587],[1692],{"type":81,"value":1310},{"type":75,"tag":1236,"props":1694,"children":1697},{"className":1695,"style":1696},[1523,1524],"margin-right:0.0278em;",[1698],{"type":81,"value":1699},"ser",{"type":75,"tag":1236,"props":1701,"children":1704},{"className":1702,"style":1703},[1523,1524],"margin-right:0.0359em;",[1705],{"type":81,"value":1367},{"type":75,"tag":1236,"props":1707,"children":1709},{"className":1708,"style":1696},[1523,1524],[1710],{"type":81,"value":1711},"er",{"type":75,"tag":1236,"props":1713,"children":1715},{"className":1714,"style":1696},[1523],[1716],{"type":81,"value":1381},{"type":75,"tag":1236,"props":1718,"children":1720},{"className":1719},[1523,1524],[1721],{"type":81,"value":1722},"see",{"type":75,"tag":1236,"props":1724,"children":1726},{"className":1725},[1523,1524],[1727],{"type":81,"value":1398},{"type":75,"tag":1236,"props":1729,"children":1732},{"className":1730},[1731],"mpunct",[1733],{"type":81,"value":1404},{"type":75,"tag":1236,"props":1735,"children":1738},{"className":1736,"style":1737},[1556],"margin-right:0.1667em;",[],{"type":75,"tag":1236,"props":1740,"children":1742},{"className":1741},[1523,81],[1743],{"type":75,"tag":1236,"props":1744,"children":1746},{"className":1745},[1523],[1747],{"type":81,"value":1409},{"type":75,"tag":1236,"props":1749,"children":1751},{"className":1750},[1587],[1752],{"type":81,"value":1310},{"type":75,"tag":1236,"props":1754,"children":1756},{"className":1755},[1523,1524],[1757],{"type":81,"value":1279},{"type":75,"tag":1236,"props":1759,"children":1762},{"className":1760,"style":1761},[1523,1524],"margin-right:0.0197em;",[1763],{"type":81,"value":1422},{"type":75,"tag":1236,"props":1765,"children":1767},{"className":1766},[1523,1524],[1768],{"type":81,"value":1427},{"type":75,"tag":1236,"props":1770,"children":1772},{"className":1771},[1523,1524],[1773],{"type":81,"value":1293},{"type":75,"tag":1236,"props":1775,"children":1777},{"className":1776},[1523,1524],[1778],{"type":81,"value":1436},{"type":75,"tag":1236,"props":1780,"children":1782},{"className":1781},[1523,1524],[1783],{"type":81,"value":1274},{"type":75,"tag":1236,"props":1785,"children":1787},{"className":1786,"style":1696},[1523],[1788],{"type":81,"value":1381},{"type":75,"tag":1236,"props":1790,"children":1792},{"className":1791},[1523,1524],[1793],{"type":81,"value":1722},{"type":75,"tag":1236,"props":1795,"children":1797},{"className":1796},[1523,1524],[1798],{"type":81,"value":1398},{"type":75,"tag":1236,"props":1800,"children":1802},{"className":1801},[1731],[1803],{"type":81,"value":1404},{"type":75,"tag":1236,"props":1805,"children":1807},{"className":1806,"style":1737},[1556],[],{"type":75,"tag":1236,"props":1809,"children":1811},{"className":1810},[1523,1524],[1812],{"type":81,"value":1436},{"type":75,"tag":1236,"props":1814,"children":1816},{"className":1815},[1523,1524],[1817],{"type":81,"value":1264},{"type":75,"tag":1236,"props":1819,"children":1821},{"className":1820},[1523,1524],[1822],{"type":81,"value":1436},{"type":75,"tag":1236,"props":1824,"children":1826},{"className":1825},[1523,1524],[1827],{"type":81,"value":1828},"ce",{"type":75,"tag":1236,"props":1830,"children":1833},{"className":1831},[1832],"mclose",[1834],{"type":81,"value":1835},")))",{"type":75,"tag":83,"props":1837,"children":1838},{},[1839,1841,1847],{"type":81,"value":1840},"In plain English: take the server seed, use it as the key for HMAC. Take the client seed plus nonce, use it as the message. The HMAC output is 64 hex characters (256 bits of randomness). The function ",{"type":75,"tag":293,"props":1842,"children":1844},{"className":1843},[],[1845],{"type":81,"value":1846},"f()",{"type":81,"value":1848}," is game-specific — for dice it's a modulo + divide, for crash it's the multiplier formula, for blackjack it's a Fisher-Yates shuffle.",{"type":75,"tag":83,"props":1850,"children":1851},{},[1852,1854,1859,1861,1866],{"type":81,"value":1853},"The HMAC guarantees two properties: ",{"type":75,"tag":89,"props":1855,"children":1856},{},[1857],{"type":81,"value":1858},"the server can't know the message",{"type":81,"value":1860}," (because you, the player, control the client seed), and ",{"type":75,"tag":89,"props":1862,"children":1863},{},[1864],{"type":81,"value":1865},"the player can't know the key",{"type":81,"value":1867}," (because the server seed is hidden until revealed). Neither side can predict the output before committing.",{"type":75,"tag":310,"props":1869,"children":1871},{"id":1870},"worked-example-stake-crash-round-april-2026",[1872],{"type":81,"value":1873},"Worked Example: Stake Crash Round, April 2026",{"type":75,"tag":83,"props":1875,"children":1876},{},[1877],{"type":81,"value":1878},"Let's verify one real crash round end-to-end. These are real values from a Stake Crash round played during this article's research.",{"type":75,"tag":151,"props":1880,"children":1881},{},[1882,1897],{"type":75,"tag":155,"props":1883,"children":1884},{},[1885],{"type":75,"tag":68,"props":1886,"children":1887},{},[1888,1892],{"type":75,"tag":162,"props":1889,"children":1890},{},[1891],{"type":81,"value":577},{"type":75,"tag":162,"props":1893,"children":1894},{},[1895],{"type":81,"value":1896},"Value",{"type":75,"tag":178,"props":1898,"children":1899},{},[1900,1916,1932,1948,1964],{"type":75,"tag":68,"props":1901,"children":1902},{},[1903,1907],{"type":75,"tag":185,"props":1904,"children":1905},{},[1906],{"type":81,"value":593},{"type":75,"tag":185,"props":1908,"children":1909},{},[1910],{"type":75,"tag":293,"props":1911,"children":1913},{"className":1912},[],[1914],{"type":81,"value":1915},"c2d8e5f1a4b732...9b6a9",{"type":75,"tag":68,"props":1917,"children":1918},{},[1919,1923],{"type":75,"tag":185,"props":1920,"children":1921},{},[1922],{"type":81,"value":634},{"type":75,"tag":185,"props":1924,"children":1925},{},[1926],{"type":75,"tag":293,"props":1927,"children":1929},{"className":1928},[],[1930],{"type":81,"value":1931},"research2026april",{"type":75,"tag":68,"props":1933,"children":1934},{},[1935,1939],{"type":75,"tag":185,"props":1936,"children":1937},{},[1938],{"type":81,"value":668},{"type":75,"tag":185,"props":1940,"children":1941},{},[1942],{"type":75,"tag":293,"props":1943,"children":1945},{"className":1944},[],[1946],{"type":81,"value":1947},"1847",{"type":75,"tag":68,"props":1949,"children":1950},{},[1951,1955],{"type":75,"tag":185,"props":1952,"children":1953},{},[1954],{"type":81,"value":610},{"type":75,"tag":185,"props":1956,"children":1957},{},[1958],{"type":75,"tag":293,"props":1959,"children":1961},{"className":1960},[],[1962],{"type":81,"value":1963},"a7f3e2d8c4b1f9a5e7...0921",{"type":75,"tag":68,"props":1965,"children":1966},{},[1967,1972],{"type":75,"tag":185,"props":1968,"children":1969},{},[1970],{"type":81,"value":1971},"Crash Point Observed",{"type":75,"tag":185,"props":1973,"children":1974},{},[1975],{"type":75,"tag":293,"props":1976,"children":1978},{"className":1977},[],[1979],{"type":81,"value":748},{"type":75,"tag":83,"props":1981,"children":1982},{},[1983],{"type":75,"tag":89,"props":1984,"children":1985},{},[1986],{"type":81,"value":1987},"Step 1 — Commitment check:",{"type":75,"tag":438,"props":1989,"children":1992},{"className":1990,"code":1991,"language":81},[441],"SHA-256(\"a7f3e2d8c4b1f9a5e7...0921\") \n  = c2d8e5f1a4b732...9b6a9  ✓\n",[1993],{"type":75,"tag":293,"props":1994,"children":1995},{"__ignoreMap":446},[1996],{"type":81,"value":1991},{"type":75,"tag":83,"props":1998,"children":1999},{},[2000],{"type":81,"value":2001},"Matches the pre-game hash exactly. Commitment verified.",{"type":75,"tag":83,"props":2003,"children":2004},{},[2005],{"type":75,"tag":89,"props":2006,"children":2007},{},[2008],{"type":81,"value":2009},"Step 2 — Outcome check:",{"type":75,"tag":438,"props":2011,"children":2014},{"className":2012,"code":2013,"language":81},[441],"HMAC-SHA256(\n  key = \"a7f3e2d8c4b1f9a5e7...0921\",\n  message = \"research2026april:1847\"\n) = 3a7b2fc9a1e5...c09d\n",[2015],{"type":75,"tag":293,"props":2016,"children":2017},{"__ignoreMap":446},[2018],{"type":81,"value":2013},{"type":75,"tag":83,"props":2020,"children":2021},{},[2022,2024,2030,2032,2038],{"type":81,"value":2023},"Take the first 8 hex chars ",{"type":75,"tag":293,"props":2025,"children":2027},{"className":2026},[],[2028],{"type":81,"value":2029},"3a7b2fc9",{"type":81,"value":2031},", convert to integer ",{"type":75,"tag":293,"props":2033,"children":2035},{"className":2034},[],[2036],{"type":81,"value":2037},"983203785",{"type":81,"value":2039},". Not divisible by 33, so the crash point is:",{"type":75,"tag":438,"props":2041,"children":2044},{"className":2042,"code":2043,"language":81},[441],"floor((100 * 2^52 - 983203785) \u002F (2^52 - 983203785)) \u002F 100 = 1.83x\n",[2045],{"type":75,"tag":293,"props":2046,"children":2047},{"__ignoreMap":446},[2048],{"type":81,"value":2043},{"type":75,"tag":83,"props":2050,"children":2051},{},[2052,2054],{"type":81,"value":2053},"Matches the observed crash point. ",{"type":75,"tag":89,"props":2055,"children":2056},{},[2057],{"type":81,"value":2058},"Verified fair.",{"type":75,"tag":83,"props":2060,"children":2061},{},[2062],{"type":81,"value":2063},"The whole thing takes under 60 seconds with our verifier, or about 2 minutes by hand if you want to feel the math.",{"type":75,"tag":83,"props":2065,"children":2066},{},[2067,2069,2074],{"type":81,"value":2068},"If you are still picking a casino to practice on, our curated ",{"type":75,"tag":110,"props":2070,"children":2071},{"href":282},[2072],{"type":81,"value":2073},"provably fair venues list",{"type":81,"value":2075}," groups them by verification method — some use the classic HMAC-SHA256 flow, others use EdDSA or on-chain VRF, so you can match the method you just learned.",{"type":75,"tag":76,"props":2077,"children":2079},{"id":2078},"what-to-do-if-your-verification-fails",[2080],{"type":81,"value":2081},"What to Do If Your Verification Fails",{"type":75,"tag":83,"props":2083,"children":2084},{},[2085],{"type":81,"value":2086},"If your verification fails on a known-legit casino, 95% of the time it's a copy-paste error. Check those before panicking. If it genuinely fails, here's the action sequence.",{"type":75,"tag":310,"props":2088,"children":2090},{"id":2089},"red-flag-1-hash-mismatch",[2091],{"type":81,"value":2092},"Red Flag 1 — Hash Mismatch",{"type":75,"tag":83,"props":2094,"children":2095},{},[2096,2098,2104],{"type":81,"value":2097},"The pre-game hash and ",{"type":75,"tag":293,"props":2099,"children":2101},{"className":2100},[],[2102],{"type":81,"value":2103},"SHA-256(revealed_seed)",{"type":81,"value":2105}," don't match. This means either the seed was rotated between your bet and your reveal, or the casino served a different hash than the one you copied.",{"type":75,"tag":2107,"props":2108,"children":2110},"h4",{"id":2109},"what-actions-to-take",[2111],{"type":81,"value":2112},"What Actions to Take",{"type":75,"tag":317,"props":2114,"children":2115},{},[2116,2121,2134,2139,2144,2149],{"type":75,"tag":321,"props":2117,"children":2118},{},[2119],{"type":81,"value":2120},"Screenshot the pre-game hash, the revealed seed, and the SHA-256 output",{"type":75,"tag":321,"props":2122,"children":2123},{},[2124,2126,2132],{"type":81,"value":2125},"Re-verify using an independent tool (not the casino's) — our ",{"type":75,"tag":110,"props":2127,"children":2129},{"href":2128},"#method-2-manual-browser-verification-our-verifier-below",[2130],{"type":81,"value":2131},"verifier above",{"type":81,"value":2133}," works",{"type":75,"tag":321,"props":2135,"children":2136},{},[2137],{"type":81,"value":2138},"If it still fails, stop betting immediately and withdraw any remaining balance",{"type":75,"tag":321,"props":2140,"children":2141},{},[2142],{"type":81,"value":2143},"File a ticket with the casino referencing the specific nonce",{"type":75,"tag":321,"props":2145,"children":2146},{},[2147],{"type":81,"value":2148},"If no response within 48 hours, report to the license authority (Curacao eGaming, MGA, etc.)",{"type":75,"tag":321,"props":2150,"children":2151},{},[2152],{"type":81,"value":2153},"Post the evidence on r\u002Fonlinegambling — community pressure works surprisingly fast",{"type":75,"tag":310,"props":2155,"children":2157},{"id":2156},"red-flag-2-casino-refuses-seed-rotation",[2158],{"type":81,"value":2159},"Red Flag 2 — Casino Refuses Seed Rotation",{"type":75,"tag":83,"props":2161,"children":2162},{},[2163],{"type":81,"value":2164},"You click \"Rotate Seed\" but the casino says \"support approval required\" or the button is disabled. Legitimate provably fair casinos let you rotate the server seed at any time, no questions asked.",{"type":75,"tag":83,"props":2166,"children":2167},{},[2168,2170,2176],{"type":81,"value":2169},"A rotation lock means the casino wants to keep using a known seed — which defeats the entire purpose of provably fair. This is cherry-picked fake fairness. Stop betting and consider the platform trust broken. For context on why the casino's platform trust matters as much as game fairness, see our guide on ",{"type":75,"tag":110,"props":2171,"children":2173},{"href":2172},"\u002Fblog\u002Fprovably-fair-vs-rng-certified",[2174],{"type":81,"value":2175},"provably fair vs RNG certified",{"type":81,"value":732},{"type":75,"tag":310,"props":2178,"children":2180},{"id":2179},"red-flag-3-non-standard-hash-algorithm",[2181],{"type":81,"value":2182},"Red Flag 3 — Non-Standard Hash Algorithm",{"type":75,"tag":83,"props":2184,"children":2185},{},[2186],{"type":81,"value":2187},"The casino claims to use \"a proprietary hash\" or \"SHA-256 variant\" instead of standard SHA-256. There is no legitimate reason for this. Every real provably fair casino uses NIST-standard SHA-256 or SHA-512. Custom algorithms are either (a) vulnerable to unknown attacks or (b) a deliberate excuse to prevent independent verification.",{"type":75,"tag":2107,"props":2189,"children":2191},{"id":2190},"safe-exit-checklist",[2192],{"type":81,"value":2193},"Safe-Exit Checklist",{"type":75,"tag":317,"props":2195,"children":2196},{},[2197,2202,2207,2212,2217,2230],{"type":75,"tag":321,"props":2198,"children":2199},{},[2200],{"type":81,"value":2201},"Do not deposit more funds",{"type":75,"tag":321,"props":2203,"children":2204},{},[2205],{"type":81,"value":2206},"Withdraw available balance to your own wallet",{"type":75,"tag":321,"props":2208,"children":2209},{},[2210],{"type":81,"value":2211},"Take screenshots of the fairness panel and algorithm docs",{"type":75,"tag":321,"props":2213,"children":2214},{},[2215],{"type":81,"value":2216},"Check the casino's license status — if Curacao, file a complaint at the license authority's dispute portal",{"type":75,"tag":321,"props":2218,"children":2219},{},[2220,2222,2228],{"type":81,"value":2221},"Review the ",{"type":75,"tag":110,"props":2223,"children":2225},{"href":2224},"\u002Fcasino\u002Fbonus-abuse-detector",[2226],{"type":81,"value":2227},"bonus abuse detector",{"type":81,"value":2229}," before accepting any bonus offers from similar operators",{"type":75,"tag":321,"props":2231,"children":2232},{},[2233,2235],{"type":81,"value":2234},"Move to a verified-algorithm casino from our ",{"type":75,"tag":110,"props":2236,"children":2237},{"href":282},[2238],{"type":81,"value":2239},"provably fair directory",{"type":75,"tag":83,"props":2241,"children":2242},{},[2243],{"type":81,"value":2244},"The lesson: provably fair is a tool you can use to catch cheating. But cheating casinos often don't implement it correctly on purpose — that's the signal. A refusal to cooperate with verification is itself the verification you needed.",{"type":75,"tag":76,"props":2246,"children":2248},{"id":2247},"faq",[2249],{"type":81,"value":2250},"FAQ"]