Casino Games

Provably-fair in-house games. Same cryptography as Stake / BC.Game / Roobet. Play money — pure education.

The Book of Casino Dirty Tricks

Documented manipulation techniques the operator never wants you to know. One section per game; each cheat lists its mechanism and the red flag that exposes it.

Crash

01 Account-tagged bust seeds

Mechanism. Server seed is silently chosen per account. High-balance or +EV accounts get seeds that produce early-bust multipliers; recreational players get juicy rounds visible in chat.

Red flag. Watch published-hash rotation. If hashes change at suspicious moments (after a deposit, after a withdrawal request), the operator is selecting seeds at runtime.

02 Cashout-button latency injection

Mechanism. Operator adds 200–500 ms server-side processing delay during high multipliers, so your "cash out at 5×" lands at 4.7× — past the curve and inside the bust window.

Red flag. Compare displayed multiplier to cash-out confirmation. A consistent gap on big multipliers is intentional friction, not network jitter.

03 Display-only multiplier desync

Mechanism. Animated multiplier on screen is not the bound-to-result HMAC value — it slows down near your target to fake-look like the curve. Real outcome decided server-side from a different stream.

Red flag. Verify a few rounds against your own HMAC computation. Visible multiplier must match the formula floor((100·e − h)/(e − h))/100 exactly.

04 Modulo-bias instant-bust skew

Mechanism. Game uses h % N for the instant-bust check, with N chosen so low h values bust more often. Drains beginners who always cash out at low targets.

Red flag. Track frequency of 1.00× rounds. If it materially exceeds 1/N for the stated house edge, the algorithm is biased.

05 Phantom-cashout race

Mechanism. Server processes high-bet cashouts last during high multipliers, so by the time your bet is matched, the round has busted. Smaller bets clear first.

Red flag. Time your own cashout, then cross-reference with the round-history feed. A delay correlated with bet size is foul play.

06 Provably-fair theatre

Mechanism. Operator publishes a server-seed HASH up-front but, after rotation, reveals a different seed than what was committed to. The hash never gets reverified by 99% of players.

Red flag. Always SHA-256 the revealed seed yourself and compare to the previously-published hash. Mismatch = the seed was swapped.

Dice

01 Truncated multiplier display

Mechanism. Multiplier shown as 2.00× but actual win-chance derived from 50.001% → 1.9999× internally, rounding-down the payout silently.

Red flag. Multiply your bet × displayed multiplier yourself. Operator payout should match to the cent — long-run any discrepancy is theft.

02 Verify-tool algorithm divergence

Mechanism. Operator's in-app "verify" button uses a simpler formula than the production round generator. Round looks fair against the verifier but isn't.

Red flag. Use a third-party verifier (this site's dice verifier at /tools/dice-verifier/) not the operator's. Same inputs must produce same output across implementations.

03 Auto-roll speed throttle

Mechanism. When auto-roll trends positive for the player, the operator slows ticks down by 1–2 seconds, making players give up before reaching profit target.

Red flag. A "Run 1000" that takes 4 minutes one session and 12 the next, despite same volume, is suspect.

04 Hidden server-seed rotation

Mechanism. Server rotates the seed mid-session without notifying you, breaking the hash-chain audit window. Past rounds appear unverifiable.

Red flag. The "previous server seed" should be reachable for every nonce range you played. Gaps = silent rotation.

05 Modulo-bias on the roll

Mechanism. Roll computed from `int(bytes) % 10000` with k-bit domain not divisible by 10000. Low rolls (0.00–0.50) appear ~0.1% more often.

Red flag. Run the Kolmogorov-Smirnov test (at /tools/kolmogorov-smirnov-test/) over a few thousand of your rolls. p < 0.01 = bias material enough to act on.

Limbo

01 Multiplier rounding-down

Mechanism. True multiplier is 12.4827× but operator displays "12.48×" and pays 12.48 — a 0.06% skim on every win, compounding across sessions.

Red flag. Re-derive multiplier from (server, client, nonce). Operator must pay to at least 2 decimal places of the true value.

02 Target-cashout snap

Mechanism. Player targets 100×, round generates 99.97× → instant loss. Operator may "snap to integer" multipliers downward only.

Red flag. Always compute the result yourself for big multipliers. Even single bits of rounding favor the house.

03 Account-EV-tagged seed picking

Mechanism. Players with positive long-term EV (e.g. consistent winners) get seeds that produce more sub-1.5× rounds. Identifies +EV players, then bleeds them slowly.

Red flag. Compare your hit-rate at a given target to the theoretical (1 − HE)/target. Long-running negative variance ≠ bad luck.

Mines

01 Mine layout regenerated per click

Mechanism. Layout is not committed at round start. Each click re-rolls the mine map with a higher mine-density bias as your multiplier rises.

Red flag. Stake-style PF commits the FULL Fisher-Yates shuffle at round start. If the operator can't reveal all mine positions after a single click, they're cheating.

02 "First click always safe" with payback

Mechanism. To feel generous, the first click is forced safe — but the next mine is moved closer to your likely-next click. Net EV worse than advertised.

Red flag. In a proper PF Mines, the first click can land on a mine. If you've never busted on click 1 in dozens of rounds, the layout is biased.

03 Cashout button frozen near target

Mechanism. When current multiplier approaches your displayed cashout target, the button becomes unresponsive for 300ms. You either accept staler value or wait into a mine.

Red flag. Click-to-confirm timing must be deterministic. Variability tied to multiplier value = intentional friction.

04 Misleading payout matrix

Mechanism. Displayed multiplier for "3 mines, 5 safe" is 2.5× but actual payout 2.45×. Sub-cent skim per click multiplies over a session.

Red flag. Compute m(M, r) = (1 − HE) · C(25, r)/C(25 − M, r) yourself for your config. Operator must match to 4 decimal places.

05 Auto-cashout-on-bust slippage

Mechanism. Auto-cashout triggers fire AFTER the next reveal — if that reveal is a mine, you lose even though you "cashed out".

Red flag. Order of operations must be: cashout request → operator confirms → bet closed → THEN you can reveal more. Any race condition is house-favorable by design.

Plinko

01 Path animation ≠ actual bucket

Mechanism. Operator decides the bucket up-front, then animates a "convincing" path to it. The visual path you watched is fake — bets are bound to the final bucket only.

Red flag. Each row should consume exactly one HMAC bit/byte deterministically. Replay the bytes and trace L/R yourself — visual must match.

02 "Lucky bucket" pre-highlight

Mechanism. Before the drop, a "hot" bucket is highlighted to tempt you to bet bigger. The highlight is randomized, not predictive.

Red flag. Hot buckets that "happen" to land on your bigger bets disproportionately are statistical fingerprints of rigging.

03 Multiplier ladder swap

Mechanism. Same risk profile shows different multipliers session-to-session. Heavy session = lower multipliers; cold session = higher (to keep you hooked).

Red flag. Screenshot the payout table at start of session. Compare to end. Any change = silent recalibration.

04 Ball weight bias

Mechanism. Animation uses a "ball" that visibly drifts toward outer (low-mult) buckets in slow-motion replay. The float-determined path is honest; the WEIGHTING ad displayed differs.

Red flag. Same algorithm describes ball physics — there should be no operator parameter "weight" or "elasticity" that the player can't see.

Wheel

01 Visual landing ≠ result

Mechanism. Wheel animation lands on a generous segment, then "shifts" 1–2 segments inward to the actual result. Implied as "natural deceleration".

Red flag. Compute the segment yourself from floor(U · N). The wheel must rest with the pointer ON that exact segment, not its neighbours.

02 Segment colour bait-and-switch

Mechanism. Big-multiplier segments are visually larger than their share. 9.9× segment renders 1.5× wider than other slots — player feels it's "achievable" but probability is 1/N.

Red flag. Count segments on the wheel image carefully. Equal pixel widths or it's manipulating perceived probability.

03 Risk-profile silent swap

Mechanism. During an auto-spin streak, operator changes risk profile mid-stream — same wheel image but different multipliers internally.

Red flag. Risk profile must be a committed parameter for the round, visible in PF data. Any "drift" between rounds = manipulation.

CSGO Roulette

01 Pre-spin result determination

Mechanism. Outcome is locked the moment you place your chips. The horizontal strip animation is purely decorative — the operator already knows where it stops.

Red flag. Provably-fair: server-seed hash visible BEFORE bet. After rotation, operator must reveal the seed and you re-derive the result. If not possible: cosmetic-PF, not real.

02 Bot-driven legitimacy theatre

Mechanism. On CSGO-skin sites, bot accounts pile fake bets onto the colour that will lose, making it look like "real" players bet on red 3× more than green. Adds illusion of fairness.

Red flag. Verify bettor IDs aren't pseudo-randomized refresh tokens. If "winning" outcomes always match low-volume colour, something is upstream.

03 Skin valuation slip

Mechanism. Site lets you deposit skins at $X market value but credits $0.7X. House edge becomes 30% just at deposit, before the wheel ever spins.

Red flag. Always check deposit credit vs. spot Steam market price. Discrepancies > 10% = operator skim.

04 Green-pocket payout cap

Mechanism. Green pays 14× — but on big bets, operator silently caps "max payout per round" so a $100 bet on green winning pays $500 (5×) instead of $1400.

Red flag. Read the cap policy BEFORE betting big on green. If the cap kicks in at exactly your bet level, the operator engineered it.

05 Hashed seed for nothing

Mechanism. Operator publishes a server-seed hash daily, but never rotates / reveals — so no past round is ever verifiable. The "PF" is just a static decoration.

Red flag. A real PF operator publishes hashes that ARE eventually revealed. Hash that's "always pending verification" = no PF at all.

Keno

01 Hot-number suggestion bias

Mechanism. Auto-pick or "lucky numbers" feature recommends numbers that are statistically LESS likely to draw — but feels personalised.

Red flag. Pick your own numbers. Compare the operator's suggestions over 100 rounds — if their suggestion hit-rate is below 1/40 per number, the recommender is anti-player.

02 Pay-table silent edit

Mechanism. After a player hits a 10/10 jackpot, the operator quietly reduces the 10/10 multiplier by 20–40% for future rounds without notifying.

Red flag. Screenshot the pay table at session start. Compare end-of-session. Any change without announcement = breach of terms.

03 Drawn-numbers re-roll

Mechanism. If the 20 drawn numbers would produce a 9/10 or 10/10 hit, the draw is silently re-rolled to a worse outcome (no PF commit at start of round).

Red flag. PF round commits the full draw at start. Operator must reveal all 20 in the same nonce — no second roll allowed.

Hi-Lo

01 Push-rate inflation

Mechanism. Tie cards (push) are weighted higher than 1/13 — operator wants you to "guess again" because each push slightly drains your edge and morale.

Red flag. Track push rate over 200+ rounds. Expected 1/13 ≈ 7.7%. Significantly higher = deck-weighting.

02 Multiplier ceiling cap

Mechanism. After ~10 correct guesses, operator displays multiplier 50× but caps cashout at 30× silently. Players don't notice until withdrawal.

Red flag. Read cashout terms before chasing long streaks. The displayed multiplier MUST be the actual payout.

03 Card-RNG seed reuse

Mechanism. Some operators use the same HMAC float for both "current card" and "next card" — guessing higher/lower is then non-trivial to lose.

Red flag. Each card must use a NEW float from the stream (different cursor). If your "next card" rank is deterministic given current card, the RNG is broken.

Why playable provably-fair simulators

Most “casino math” sites give you calculators that demand you trust their output. We do the opposite: every game here is actually playable, with the same cryptography as Stake, BC.Game, Roobet, Shuffle, Rollbit, and every other Stake-derived operator. You can verify any round end-to-end. You can re-derive any outcome from (server seed, client seed, nonce). There’s no black box.

The catch is in your favour, not ours: it’s play money. The simulator is for education, not gambling. What you keep at the end is a real understanding of how provably-fair claims actually work — and how operators violate them when they think nobody’s checking.

What every game shares

All nine games use the canonical Stake-derived primitive:

HMAC-SHA256( server_seed, "{client_seed}:{nonce}:{cursor}" )  →  32 bytes

Bytes are walked across blocks via a cursor when the game needs more than 32 of them (Mines, Plinko, Keno). Bytes are converted to floats in [0, 1) by taking 4-byte chunks and dividing by 2³². The game’s specific algorithm then maps that float (or a sequence of them) to a multiplier, a card, a wheel segment, or a board layout.

The server seed is revealed up-front in this simulator (it’s a strategy lab, not a guessing game). In a real operator, you’d see only the SHA-256 hash before betting and the seed itself after rotation. Both modes are honest provably-fair — the hash is your audit anchor.

The Book of Casino Dirty Tricks

Crypto casinos have run every conceivable manipulation. We catalogued 38 of them in the Book of Casino Dirty Tricks. Each game’s individual page links to the manipulations specific to that game. Read the book before playing real money anywhere.

Choosing your first game

I want to understand the simplest possible PF game.

Start with Dice. One float in, one roll out, one decision (over/under). Then Limbo for the geometric distribution, then Crash for the iconic curve.

I want maximum variance and lottery-style multipliers.

Limbo at a 100× target. Mines with 20 mines. Plinko high-risk on 16 rows. All converge to the same expected loss, but the ride is wildly different.

I want to compare operator implementations.

Use the universal verifier on a real operator round, then play the same (server, client, nonce) here in this simulator. Identical inputs must produce identical outputs — anywhere they don’t, the operator has diverged from the spec.