Skip to main content

Dice Originals — Mines · Limbo · Plinko · Keno

The four Entropy dice games share one money model with Crash: bets are crash chips (shared crash_chips ledger, ETH 18dp / USDG 6dp), debited at bet, credited at settle. Every bet draws a fresh server seed; keccak(seed) is stored alongside the result so any settled row can be audited — recompute the outcome from the stored seed, and the hash proves the row wasn’t rewritten.

Shared economics

Fee routing mirrors the crash side: realized edge accrues in the bank and flows to the same sinks (VIP pots + LP treasury) through routeEdge().

Mines — single pick, M mines on a 5×5 grid

Mine positions are drawn with sampleDistinct (Fisher–Yates partial shuffle over the seed stream) — uniformly distinct positions, verifiable from the stored seed.

Limbo — target the multiplier

Same structure as Crash’s formula with a 1% edge and a 1,000,000× ceiling:

Plinko — 16-row binomial drop

The multiplier tables are shipped in the API config (GET /api/entropy → plinkoTables) so clients render exactly what the engine pays. Extreme buckets (edges of the 17-bucket row) carry the huge multipliers (up to 170×/1000× on high risk); the center buckets pay fractions of a stake.

Keno — pick up to 10 of 40

Top multipliers are hit at extreme tails — 10/10 hits pays the table maximum (~238× at pick-10 in the current table). The full paytables ship in the API config.

Verification walkthrough

For any settled bet:
  1. Fetch the row (API exposes seedHash, seed after settle, plus full result meta).
  2. Check keccak(seed) === seedHash.
  3. Re-run the engine function on (seed, bet params) — pure, deterministic, and the same code path the settle used.
  4. Confirm the payout matches the derived outcome × the paytable.
The same popup used for Crash (shared vfair-verify component) runs this flow for all four games — one aligned theme, no white-page verification. Next: Lootboxes.