
What Does “Provably Fair” Even Mean?
We get it — “provably fair” sounds like one of those crypto buzzwords people throw around without really knowing what it means.
But here’s the truth: it’s the single biggest innovation in online gambling since… well, since online gambling.
Let’s break it down like you’re five beers deep:
A provably fair system means every bet, every spin, every coin flip you make can be verified as legit — by you, without asking us, without hoping we “didn’t cheat.”
There’s no trust required. No faith in the system. Just math.
Here’s what happens under the hood:
-
Before your bet, we generate a random string called the server seed (and show you its hashed version).
-
You get to pick your own client seed, which adds your fingerprint to the mix.
-
A counter called the nonce (starts at 0, goes up every round) keeps each result unique.
All three values — server seed, client seed, and nonce — are combined using a public formula to produce your game result.
Then, after the bet, we reveal the unhashed seed so you can check:
☑️ Was it pre-committed?
☑️ Was the result derived from the real seeds?
☑️ Could anyone have changed it?
No surprises. No rerolls. No rigging.
In other words: you can prove we didn’t mess with the outcome — and we can’t prove otherwise.
That’s the Duel promise. Fair, by design.
Provably Fair at a Glance
| Method | Published server seed + client seed + nonce + SHA-256 verification |
|---|---|
| Crash | drand beacon (League of Entropy) for multiplayer fairness |
| Coverage | Every Duel Original — verify any bet yourself |
| Why it matters | No ‘trust us’ RNG — the math is exposed and auditable |
Provably Fair Calculator: Check Any Bet Yourself
Reading about provably fair is not the same as checking it. This is a working provably fair calculator — paste a revealed server seed, your client seed and the nonce, and it recomputes the result the casino gave you. Everything runs in your browser through the Web Crypto API. No seed leaves this page; there is no network request in the script at all.
The two checks, and why both matter
People usually do only the first one, which proves less than they think.
1. Recompute the outcome. Feed the seeds and nonce back through the same construction and you should get the number you saw. If it matches, the result was not altered after the fact. If it does not, either something is wrong or you have the wrong construction selected.
2. Check the commitment. This is the half that actually proves fairness. Before the round the casino shows you a hash of the server seed. After the seed rotates it shows you the seed itself. Hash that revealed seed with SHA-256 and it must equal what you were shown beforehand — that is what stops the casino picking a convenient seed after seeing your bet. A verified outcome with an unverified commitment proves nothing. The second box above does that check.
Which construction to pick
Not every casino generates numbers the same way, and using the wrong construction will simply produce a mismatch.
- Stake family — HMAC-SHA256. The server seed keys an HMAC over
clientSeed:nonce:round, and each digest yields eight floats from four bytes each. This construction is publicly documented, and the many casinos running Stake’s originals use it too. - Duel family — HMAC-SHA512. Same idea, bigger digest: the message is
clientSeed:nonce:cursor, the first seven bytes of each digest form one 52-bit uniform double, and the cursor advances per event rather than per round.
One caveat we are not going to hide. Stake’s construction is published by Stake. Duel’s is not — ours is reconstructed from a reference verifier implementation and matches the results we have tested it against, but the operator has not documented it. Treat a match as strong evidence and a mismatch as a reason to ask questions rather than as proof of anything.
How to get the seeds out of the casino
The revealed server seed only appears after you rotate it, which is deliberate: while a seed is live, revealing it would let you predict outcomes. So the sequence is:
- Set your own client seed before you play, so the casino cannot claim it chose that too.
- Note the server seed hash the casino shows you now.
- Play. Record the nonce of the bet you care about — it increments by one per bet.
- Rotate the seed. The old server seed is revealed.
- Paste all four values above and run both checks.
Shared-outcome games are the exception. Crash and Castle Roulette run one result for every player in the round, so a per-player client seed cannot control them; Duel resolves those with the public drand beacon instead, and the verification is a different procedure that this tool does not cover.
What this proves, and what it does not
A passing check tells you one specific thing: that this result followed from seeds committed before the bet. It is a strong guarantee and most of the industry does not offer it.
It does not tell you the game is generous. A provably fair slot with a 92% RTP is provably fair and still a bad deal — the maths of the paytable is a separate question from whether the draw was honest, and we cover it in the RTP report. It also says nothing about whether the casino will pay you, which is why we watch the wallets as well.
Let’s walk through a real example, so you can see exactly how the system plays out on Duel — from seed to spin:
Step 1: Server Seed (Our Part)
Before the game starts, we generate a random server seed and show you its hashed version. That hash is a cryptographic fingerprint — it proves we can’t change the seed later without you catching us.
Once it’s shown, it’s locked in.
✅ Transparent
✅ Tamper-proof
✅ Publicly verifiable
Step 2: Client Seed (Your Part)
This is your turn. You can either:
-
Let the system generate a random client seed for you (default)
-
Or set your own — for max control
Together with the server seed, this ensures that you influence the result.
Step 3: The Nonce (Each Round)
Every time you play, a counter called the nonce goes up by one. It makes sure every round gets a unique input — no copy-paste results.
So your 5th spin might be:Fair Result = hash(server_seed + client_seed + nonce: 4)
After the round, we reveal the full server seed, and you can plug all three values into any fair-check tool or script.
Boom. Instant proof.
Want to double-check a result?
You don’t need a dev team — just hit the “Verify” tab on any Duel game, paste the values, and see for yourself.
No smoke. No mirrors. Just clean math.
Why Provably Fair Beats Traditional RNGs (And Always Will)
Most online casinos run on something called a “Random Number Generator” — or RNG if they’re feeling fancy. It sounds solid… until you realize you can’t actually see what it does.
You click.
It spins.
They show you a result.
And you just have to believe it was fair.
No hash.
No seeds.
No proof.
Now compare that to provably fair:
Traditional RNG
-
Black box
-
Proprietary software
-
Trust-based
-
Can be manipulated
-
Zero visibility
Provably Fair (Duel)
-
Transparent hashing
-
Open verification
-
You control one of the seeds
-
Immutable results
-
Full math on display
We don’t just say it’s fair — we show you the formula, the inputs, and the receipts.
Other sites give you a magic trick.
Duel gives you the blueprint.
Can You Really Verify Every Bet on Duel?
Yep. Every single one. In under 10 seconds.
Duel doesn’t just tell you that your bet was fair — it hands you the ingredients so you can check the result yourself.
Here’s how:
After your bet ends:
You get the server seed (unhashed)
-
You already had your client seed
-
You see the nonce used for that round
Those 3 values = everything needed to recreate the result.

What to do:
-
Copy the seed + nonce from your game history
-
Open the [Verify Bet] tab or use any verifier tool
-
Paste them in, press enter, and check the output
Result doesn’t match what you saw?
Call us out. Loud. We’ll own it.
It’s not just a “nice feature” — it’s the core of how Duel works.
Fairness is not a checkbox. It’s a system.
Why Most Casinos Don’t Use This (And Probably Never Will)
Let’s keep it real:
Most crypto casinos throw around “provably fair” like it’s a buzzword — not a commitment.
They’ll show you a seed hash. Maybe.
Maybe give you a button that spits out JSON.
But full transparency? Real input? Open formulas? Nope.
Why not?
Because when players can verify the truth…
➡️ They might notice the edge is brutal.
➡️ They might realize the games are rerolled.
➡️ They might see that “random” isn’t really random.
In short: transparency kills fake profits.
At Duel, we do the opposite:
-
Real server/client/nonce system
-
Full math, open to inspect
-
Public verifier
-
Nothing to hide
We’re not scared of numbers.
We built this for people who read the fine print.
Why Provably Fair Actually Matters
Some casinos want you to “trust the process.”
Duel wants you to verify the process.
Here’s why provably fair isn’t just tech flex — it’s the future of real gambling:
-
You control part of the result (via your seed)
-
Each bet is cryptographically locked before it plays out
-
You can verify every outcome — anytime, on your own
-
No one — not even us — can tweak the result after it’s set
-
Every game is accountable, by design
It’s not about trust.
It’s about math that doesn’t lie.
This is what gambling should look like in 2025.
The Other Half of Transparency: the Public Loss Board
Everything above verifies a single bet. Useful, but narrow — it tells you your hand was dealt honestly, not what happens to everybody else.
Duel publishes that separately, and it is the part most reviews skip. High Scores is a public board of who is up and who is down, with four time windows — all time, last month, last week, last day — and six leaderboards inside each:
- Biggest Winners and Biggest Losers — net profit and net loss, by player
- Biggest Wins and Biggest Losses — single results
- Top Wagers — who is putting the most through
- Luckiest Wins — the longest odds that actually landed
The numbers are not decorative. When we looked on 6 August 2026 the all-time profit board opened at $12,341,874.77 for a single player and the tenth place was still above $1.5 million.
Read that list again
Biggest Losers. A casino publishing a ranked, named list of the people its games have taken the most from, next to the winners, permanently.
Almost nobody does this. The standard playbook is to publicise wins, bury losses and let the survivorship bias do the marketing — every casino feed is a highlight reel of people hitting 4,200x, because a feed of people losing rent does not convert. Duel runs both columns and lets you sort by either.
It fits the same argument as Zero Edge: if your pitch is that the maths is honest, hiding the losses undercuts you. Publishing them is the consistent move, even though it is the uncomfortable one.
What it does not prove
We are not going to let the point run away. High Scores is Duel’s own data, published by Duel, unaudited. Nothing about it is cryptographically verifiable the way a seed and a hash are. In principle a board like that can be filtered, and you would have no way of telling from the outside.
So it is weaker evidence than provably fair, and it is a different kind: provably fair proves a fact, High Scores demonstrates a willingness. Willingness is worth something — a casino planning to hide its numbers does not build a Biggest Losers tab first — but it is not proof, and anyone presenting it as proof is doing you a disservice.
Check the board yourself, then check a bet yourself. The second one is the one that settles arguments.
Somebody Read the Actual Code
Everything on this page so far is us checking Duel’s claims. Someone else has checked the code itself, which is a different and harder question.
A static analysis of Duel’s production JavaScript was published to r/csgobetclick in May 2026 under the name ProvablySmart Research Lab. Because Duel is a single-page app, the fairness logic ships to the browser — so anyone can pull the bundles and read them. That is exactly what the author did, across twelve in-house games.
Read the full source code analysis on Reddit — it is long, technical, and not written by us.
What it found
- Three fairness models, not one. Single-player games use the server seed, your client seed and a nonce through HMAC-SHA256. Shared games — Crash, Coinflip, Castle Roulette — pull in the drand beacon instead. Rock Paper Scissors uses commit-reveal between the two players. Most platforms apply one model to everything.
- Native crypto, not homebrew. Hashing goes through the browser’s Web Crypto API rather than a hand-rolled JavaScript implementation, which is where this sort of thing usually goes wrong.
- Modulo bias eliminated in 11 of 12 games via rejection sampling, with a textbook-correct Fisher-Yates shuffle behind Mines, Keno and Video Poker.
And what it found wrong
Two things, which is the reason it is worth linking at all — an audit that finds nothing is a press release.
Castle Roulette takes its result with a plain % 48 and skips the rejection sampling every other game uses. Sixteen of the forty-eight outcomes are therefore very slightly more likely — by about 0.000000023%. Over a billion spins that is roughly a quarter of an extra hit. It is not a problem you can exploit or even measure; it is an inconsistency.
The second is more interesting: there is no server seed hash chain. Each server seed stands alone, so while Duel cannot change a result after you bet, nothing stops it generating seeds selectively before you do. A chain — each seed the hash of the next — would close that door. The audit rates it medium and architectural rather than a live vulnerability, and we agree.
The bit that made us sit up
We worked out on our own that Castle Roulette’s wheel has to be 48 parts, purely from the multipliers on screen: a 0% edge requires each segment to land exactly one-time-in-its-payout, and ½ + ¼ + ⅛ + ¹⁄₁₆ + ¹⁄₂₄ + ¹⁄₄₈ comes to exactly 1 — forty-eight forty-eighths.
The audit, reading the compiled code with no knowledge of that, found RANGE = 48.
Two unrelated routes to the same number. That is the kind of corroboration you cannot fake, and it is a better argument for the wheel being what Duel says it is than any badge on the player.
How much weight to put on it
Some, not all. It is a self-published analysis by a named lab on a forum, not a commissioned audit from a certification body, and we have not reproduced it line by line. We did re-run its arithmetic, and one figure is off: it gives 4294967295 mod 10001 as 7,294 where the answer is 7,842. That changes nothing about the conclusion — the rejection threshold still works — but it is the sort of slip worth knowing about before you quote the document.
The strength of the method is that it does not need you to trust the author. The bundles are still being served. Anyone who wants to check the checker can open developer tools and read the same files.
It means every bet can be verified by math. Duel doesn’t control outcomes — you do. All randomness comes from a dual-seed system, hashed and locked before any result is known.
Each game uses two seeds — one from you, one from us — and combines them to generate results. You can verify everything using hashes and open-source tools.
Yes. After every bet, you can check the result against the server and client seed, using our verification tool. No trust needed — just proof.
Because they don’t want to. It exposes shady backend behavior. Duel uses it by default — because we actually want you to win.
Absolutely. It’s the only way to know you’re not being cheated. In a world of fake reviews and sketchy licenses, math is your best friend.
Yes. Duel’s High Scores board carries Biggest Losers and Biggest Losses leaderboards alongside the winners, across all-time, monthly, weekly and daily windows. Publishing losses publicly is unusual for a casino.
No. Unlike individual bets, the boards are Duel’s own published data and cannot be checked cryptographically. Treat them as evidence of willingness to show the numbers, not as proof that the numbers are complete.
Not a certification body, but a static analysis of Duel’s production JavaScript was published to r/csgobetclick in May 2026 covering twelve in-house games. It found the cryptography sound, and flagged two issues: Castle Roulette skips rejection sampling (a bias of roughly 0.000000023%), and there is no server seed hash chain.
The most substantial Duel Casino Reddit thread is a static analysis of the platform’s fairness code posted to r/csgobetclick, covering twelve in-house games. It concludes the cryptography is sound and flags two issues: Castle Roulette skips rejection sampling, and there is no server seed hash chain. It is linked in full above.