The whole thing, start to finish
How it works
A race is a pot. Everyone pays the same entry, one runner takes the pot. That is the entire product. The rest of this page is the detail behind it.
Running a race
-
Open a race
Choose ETH, the native token, or practice credits. Set the entry — say 0.01 ETH — and pick how many seats, from two to ten. Your entry is charged when you open it.
-
Others match the entry
Your race appears on the live board with its code. Anyone can take a seat by paying the same amount. A four-seat race at 0.01 ETH ends up with a 0.04 ETH pot.
-
The grid fills and locks
When the last seat is taken the race locks and a short countdown starts. Nobody can join or leave after that.
-
Everyone watches the same race
The server builds the entire race up front, sends it to every viewer at once, and each browser draws the identical run. What you see is what everyone else sees, frame for frame.
-
The winner is paid
First across the line takes the pot. On-chain races pay out to the winner's wallet automatically. Practice races credit the winner's balance.
Two kinds of account
Connected wallet
Sign a message to prove the wallet is yours — it costs nothing and moves nothing. You can then race for ETH or the native token, buy characters, and receive payouts.
Offline account
Just a username and password. You get practice credits and can race anyone else who is playing for credits. No wallet, no real value, no payouts.
Where the money goes
Entry fees for on-chain races sit in the escrow wallet until the race settles, then move to the winner in one transaction. If a race is cancelled or never fills, entries are refunded to the wallets that paid them.
Characters bought with the native token
The payment goes to the dead wallet — 0x…dEaD. Those tokens leave circulating supply and cannot be recovered by anyone, including us.
Characters bought with ETH
The payment goes to the marketing wallet. Both destinations are printed on the characters page so you can check them against your wallet prompt before signing.
Checking a result
Every race commits to its randomness before anyone can join, then reveals it afterwards. You do not have to trust the outcome — you can recompute it.
- Before the race: the server generates a random server seed and publishes only its SHA-256 hash. It cannot change the seed after that without breaking the hash.
- As people join: every racer contributes a client seed, so no single party controls the input.
- At the start: the two are combined — HMAC-SHA256(serverSeed, "CODE|seed1:seed2:…") — and that value drives every step of the race.
- After it settles: the server seed is published. Hash it and you get the commitment from before the race. Replay it and you get the same finish order.
The finished race page has a Check the result button that does this for you, and the raw values are available at /api/matches/CODE/verify if you would rather do it yourself.
Network details
Before you stake anything
This is wagering. Races are winner-takes-all, which means most entries end with nothing back. Stake only what you can afford to lose, and check whether this kind of wagering is legal where you live — that is on you, not on us. If it stops being fun, stop.
