How fairness works
Every result on KoKiYo is decided by two things nobody controls alone. You can re-check any round yourself.
1. A seed committed in advance
Each game has a hash chain of one million seeds: x₁₀₀₀₀₀₀ is random, and every earlier seed is the SHA-256 of the next one. The first value x₀ is published before any round. Round j uses xⱼ and reveals it after settling; anyone can hash it j times and arrive at x₀. Past seeds don't reveal future ones.
2. Public randomness that arrives later
When a round locks, it uses the next drand quicknet beacon — randomness produced by an independent network every 3 seconds, signed with BLS. The beacon doesn't exist yet when entries close, so the result can't be chosen.
3. One formula for every game
value = HMAC-SHA256(seed, randomness : instance : round : entries root : label), then the first 52 bits as a number between 0 and 1. Every entry gets a receipt — a fingerprint of round, seat, player, ticket, choice and time — the moment it's accepted. When the round locks, all receipts combine into the entries root, so every entry takes part in the draw and nobody can be added or removed afterwards.
Coin Flip: heads below 0.5. Double: each seat's value ranks the seats. Crash: stop point = 0.97 ÷ (1 − value), two decimals; below 1.01 shows as 1.00. Dice: each die = floor(value × 6) + 1. Wheel: colour = floor(value × 4). Plinko: each of 7 rows bounces right when the value is 0.5 or more. Mines: the 5 mines, who goes first and a turn's random reveal are each picked from the remaining choices with floor(value × count).
4. Verify a round
Open any round's details and press Verify. Your browser checks the hash chain, the drand signature and recomputes the result — nothing is sent to us.