Duel Originals verifier
Paste a revealed Duel hex server seed and the rest of the fairness panel. This page recomputes the selected Original with Duel’s published snippets — HMAC-SHA256 keyed by the hex-decoded server seed, plus drand for Crash / Coinflip / Castle Roulette. After the page loads, nothing is sent to a server.
What this page implements
Hex-keyed HMAC
Duel keys HMAC-SHA256 with the hex-decoded server seed, not the UTF-8 string Stake and Rainbet use. The message is clientSeed:nonce, or clientSeed:nonce:cursor when a game needs more than one random value.
Rejection sampling
Dice, Mines, Keno, Beef and Video Poker scan 4-byte chunks and reject values at or above 0xFFFFFFFF − (0xFFFFFFFF % range). Blackjack uses 52 × floor(2³² / 52) instead. Same as Duel’s snippets.
Not on this page
Groomer’s Van is a PF Slot: the official verifier needs per-slot symbol-weight tables from Duel’s API, so it stays off until those tables can be labelled without guessing. Castle Blackjack has no fairness snippet.
Not the unified calculator
Stake, Shuffle and BC.Game stay on /verify. This URL is Duel-only so you can check the numbers before any tab is added there.
Does any of my data leave this page?
No. After the page loads, hashing runs through the browser Web Crypto API. Seeds are not posted anywhere.
Why is Beef listed instead of Cross Road?
Duel’s lobby calls the game Beef. The fairness snippet and internal id are Cross Road — 20 cells, Fisher–Yates, first N indexes as death points. Use the death-point count from Duel’s snippet (they map Easy/Medium/Hard/Extreme as 20 − steps).
Why do Crash and Coinflip ask for a drand seed?
Those rounds are shared. Duel HMAC-signs utf8(drandSeed):0 with the hex server seed instead of your client seed and nonce. Castle Roulette uses the same inputs and maps the first uint32 modulo 48.
Why must the server seed be hex?
Duel’s generateHMAC_SHA256 hex-decodes the key before importKey. A UTF-8 string key would produce a different digest. Guest seeds are 64 hex characters; rotate the pair on Duel to reveal the unhashed value.