Blinko

Provably fair

How you can prove we didn't cheat

The blast point of every round is decided before either player acts and published as a hash. Once the round starts, nothing — not us, not your opponent — can change it. After the round the seed behind that hash is revealed and anyone can recompute the result.

Check a round

A real round, checked

Every value below is published. Recompute them and you get the same answer. This is a live round, not an illustration.

chain 3ea188595c9e41c0 · index 1

1 · Committed before the round

87a1ced498db265b07a34da90df08d088a74ee429dc2a041aef50c8cef827c94

SHA-256 of the revealed seed equals the hash published beforehand. That is the whole guarantee: the seed could not have been chosen after seeing how the round was going.

2 · Revealed after the round

53c095ce747f1b473b564bbf66df4be4e069d93f10405f6ed11f03e4e973af41

3 · Your seed went in too

player-m35kue · nonce 41

Your own seed and the round counter go into the derivation, so the outcome is not something the server picks alone.

4 · The blast point

4.77° Verified

Check this round yourself →

Where blast points land

Not uniform. Most rounds are short and a few run very long. These are computed from the formula, not sampled from history.

Median
3.75°
Mean
7.21°
Minimum possible
2.80°
Reach the 100° cap
0.97%

Two schemes, and which one your round used

Blinko runs two provably-fair schemes and you can meet either. Check your round against the right one — they hash different things, and using the wrong one will make an honest round look wrong.

Hash chain — solo and LIVE rounds

Seeds are generated as a chain in advance, each one hashing to the entry before it. Your round takes one seed, your client seed and a nonce. SHA-256 is taken over the seed’s hex text.

commit = SHA-256(hex text of serverSeed)
digest = HMAC-SHA-256(serverSeed, "clientSeed:nonce")
u      = first 52 bits of digest / 2^52
B      = 2.80 + 0.95 / (1 − u) − 0.95, capped at 100

Fairness v3 — PvP duels

Both players contribute a seed, and the blast point and first holder are derived under separate HMAC domains so neither reveals the other. SHA-256 is taken over the raw 32 seed bytes.

commit  = SHA-256(raw 32-byte serverSeed)
entropy = SHA-256("blinko.fairness.v3" || 0x00 || … || hostSeed || guestSeed)
blast   = HMAC-SHA-256(serverSeed, "blinko.explosion.v3" || 0x00 || entropy)
holder  = HMAC-SHA-256(serverSeed, "blinko.holder.v3" || 0x00 || entropy)

What this proof does not cover

It proves the blast point was honest. It says nothing about network latency: if your connection is slower than your opponent’s, a fair blast point does not make the duel even. That is a separate problem and it is handled separately, by measuring the lockout on server time so both players get the same window.