DONUTVAULT

Don't trust us. Check the math.

HOW IT WORKS
1

Server commits first

Server generates a random seed and publishes its SHA-256 hash before you bet. Changing the seed after would break the hash. You'd see it instantly.

2

You add randomness

Your client seed (you pick it) gets combined with the server seed plus a nonce that increments every bet. Neither side controls the outcome alone.

3

Verify after

Rotate your server seed whenever you want. We reveal the old one. Hash it, confirm it matches, re-run the formula on any bet. Done.

WHY WE CAN'T CHEAT

Seed is locked before your bet. Changing it breaks the hash. You catch it on verify.

You control half the input. We can't predict your client seed, so we can't engineer an outcome.

Formulas are public. HMAC-SHA256 for everything. Re-implement it yourself if you want.

Independent streams. Every mine, trap, bounce, block, and card uses its own labeled HMAC call. Knowing one tells you nothing about the next.

THE FORMULAS

Base formula: HMAC-SHA256(serverSeed, clientSeed:nonce[:label:index]). First 8 hex chars to 32-bit integer to game result.

Dice

HMAC(seed, client:nonce) produces a float [0,1) scaled to 0-99.99. Compared to your target.

Mines

Fisher-Yates placement. HMAC(seed, client:nonce:mine:i) per mine. Payout = product of (remaining/safe) per reveal, times (1 - edge).

Tower

HMAC(seed, client:nonce:tower:floor) picks the trap column per floor. Payout = (cols/safe)^floors times (1 - edge).

Plinko

HMAC(seed, client:nonce:plinko:row) picks left or right per peg. Final bucket maps to payout table.

Strip Mine

HMAC(seed, client:nonce:stripmine:i) per block, rolled against weighted ore table. Hit lava = bust.

Blackjack

6-deck shoe, Fisher-Yates shuffle. HMAC(seed, client:nonce:shuffle:i) per swap. Cards dealt in order.

Cases

HMAC(seed, client:nonce) against weighted item table. Drop chances shown before you open.

5% HOUSE EDGE

We take a flat 5% cut from winning payouts. That's it. The games aren't rigged. The odds are mathematically fair. The edge is just our fee, applied after the result is calculated. It's a service charge, not a thumb on the scale.

Example: you win a bet that should pay 2x. You get 1.90x instead of 2.00x. The 0.10x difference is our cut. The game itself played out exactly as the math dictated.

The edge is visible on every game screen. You can verify it in the payout formulas above.

← BACK TO GAMES