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 256The 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.