Sign in

Network

Tezos L1

Dice · Wallet · House · Staking

Etherlink (EVM)

Crash USDC · Poker

Tezos and Etherlink networks are independent — you can use mainnet on one and shadownet on the other.

Provably Fair

Every result is determined by publicly verifiable data — no server randomness, nothing we control.

🎲Dice

Results computed inside an immutable Tezos smart contract from block data. No off-chain RNG.

↓ Details below

📈Crash

Crash points derive from a pre-committed SHA-256 hash chain seeded by an unpredictable Tezos block hash.

View Crash fairness →

Dice — how it works

No off-chain randomness

Results are computed inside the smart contract from block data sealed by the Tezos network. No server, no RNG, nothing we control.

Every input is public

Block number, timestamp, and game counter are all visible on TzKT.io. Anyone can reconstruct the exact result of any bet.

Immutable formula

The smart contract is deployed and locked on-chain. The math cannot be changed after the fact — not by us, not by anyone.

How each roll is decided

Why on-chain randomness is hard

A blockchain is a network of thousands of computers that must all agree on the exact same result for every transaction. True randomness is impossible — if each node invented a different number, the chain would fork. Every smart contract calculation must be completely deterministic: same inputs, same output, every time, forever.

Instead, the contract uses pseudo-randomness: a formula that can generate excellent randomness. Feed in the same inputs and you always get the same result — that's what makes it verifiable. The formula uses large prime multipliers so that any tiny change in the inputs produces a completely different output. The unpredictability doesn't come from the formula itself; it comes from using an input that neither party knows in advance.

That input is the block timestamp, set by the baker when they seal the block your transaction lands in — after your bet is already committed.

Block level and game counter are sequential — they can be estimated. The ingredient neither party controls is the exact timestamp: the baker (block producer) assigns it when they seal the block your transaction lands in. You don't know which baker that will be, or what second they'll choose. The formula mixes all three values through large prime constants so that a single second's difference in timestamp produces an entirely different roll.

⛓️

Block number

sealed by the network

⏱️

Block time

seconds since Jan 1 2020

🎯

Game counter

increments each bet

mix & mod 6

on-chain formula

Face 1 – 6

Example roll, step by step

Scroll through to see how a single bet is settled on-chain

Your bet

6
0
5
0
4
0
3
0
2
0
1
0

← face → bit

Block sealed by Tezos network

⛓️

Block number

8,542,103

⏱️

Timestamp

2025-05-29 · 14:32:10 UTC

🎯

Game counter

#42

Block level and game counter are sequential — you can estimate them. What you can't control is which block your transaction lands in: that's the baker's call. The exact timestamp is set by the baker at sealing — and even a 1-second difference produces a completely different result due to the large multiplier in the formula.

Mixing the inputs (XOR)

A = block level × K₁ + time × K₂

B = game count × K₃ + bitmask × K₄

XOR compares A and B bit-by-bit. A bit becomes 1 (green) wherever A and B differ:

A
1
1
0
1
1
0
1
1
B
1
1
1
0
0
1
1
0
0
0
1
1
1
1
0
1

(showing last 8 bits — same XOR logic applies across all 64 bits)

A ⊕ B (full 64-bit result)

Why mod 6 + 1?

The XOR result is a huge 64-bit number. mod 6 keeps only the remainder after dividing by 6 — the remainder is always exactly 0, 1, 2, 3, 4, or 5, giving six equally-likely outcomes. We add 1 because die faces are numbered 1–6, not 0–5.

remainder → die face

0
1
2
3
4
5

Remainder 5 + 1 = face 6

Result

Who can influence the result

~
The baker (block producer) is a small, shared riska baker can nudge the timestamp within a narrow protocol window, which changes the result. The block reward is ~5 XTZ — not a full deterrent for large bets. But this risk falls equally on house and player; a baker can't target you specifically without also knowing your exact bet in advance.
The house cannot cheatthe contract is immutable on-chain. We have no server in the result loop. The same math runs for every bet, for everyone.
You, the player cannot cheatthe game counter increments every bet, so each result is unique — even if you submit the exact same bet in the same block.

Technical details