PROVABLY FAIR

Before every round starts, the server picks the needle's patch (x, y) with a cryptographic RNG, generates a random 32-byte salt, and publishes:

commitment = SHA-256(round + ":" + x + ":" + y + ":" + salt)

Current round commitment:

loading…

While the round runs, nobody — including us — can move the needle without breaking this published hash. And nobody can reverse it: without the salt, the hash reveals nothing about the location.

When the needle is found, the server reveals x, y and salt. Anyone can recompute the SHA-256 and confirm it matches the commitment that was public all along. Past reveals are on the winners board.

Verify a finished round yourself (any shell):

echo -n "ROUND:X:Y:SALT" | shasum -a 256

The needle's location lives only inside one serialized server object. It is never sent to any browser, never appears in any API response before a win, and every scoop is validated and rate-limited server-side. Full threat model in the repo.

← back to the haystack · how everything works