Every round is committed before betting opens and is identical for every
player. The room draws a secret server seed, then publishes only
SHA-256 of it combined with the public client seed and the round
number — that is the commitment below, and it is fixed before a single bet is
taken. After the race settles, the server seed itself is revealed, so anyone
can hash it and check it against the commitment that was published first.
The result comes from the round digest:
HMAC-SHA256, keyed by the revealed server seed, over the round's
message string. The winner is mapped from that digest. The exact message
strings and algorithms used are shown below, so nothing has to be assumed
about our encoding.
Server seed (SHA-256 commit)
—
Server seed (revealed)
—
Client seed (public)
—
Round (nonce)
—
Round digest
—
Result winner
—
The outcome is drawn by the server, not in your browser, and the
commitment is published before betting opens — so the room cannot change a
result after seeing the bets, and cannot have chosen the commitment to suit
one. The client seed and round number are public so the message being signed
is fully known; the server seed stays secret until the race is settled, then
is revealed for checking.