Every KUB block produces an unpredictable block hash — the same value DurianEntropy V2.1 hashes to make a result
(rng = keccak256(blockhash · id · player · seed)). This page takes every block's hash and derives a
Roulette, Dice, Two-dice, Blackjack and Coinflip outcome from it — no bet, no gas, no clicking — so the distribution
fills in live. If the source were biased, the bars would lean. Anyone can reproduce it from public block hashes.
keccak256(blockhash, game, blockNumber, k) reduced into the game's outcome range — the
same keccak-of-blockhash construction the contract uses. The block hash isn't known until the block is mined, so no one
(not even us) can steer it. Over many blocks a fair source flattens to the dashed expected line:
Roulette → 1/37 each pocket, Dice → 1/6, Two dice → the 2-12 triangle, Blackjack → 1/13 per rank, Coinflip → 50/50.
The χ² stat sums the squared gap vs expected; below the 95% threshold = consistent with fair (a fair source still
crosses it ~1 spin in 20, so it wiggles — that's healthy, not rigged). Note: a casino's house edge comes from the
payout rules, not from biased numbers — this page tests the numbers. Single block producers can nudge one block hash
within the 256-block horizon; the consumer's per-block bet cap is the mitigation (this is a commit-reveal scheme, not a VRF).
…. The whole network
decides it together; no one can choose it ahead of time.… — one giant unpredictable number.number mod 37):
… from step 1.