Transparency
FOMO RACE isn’t a “trustless” system. Here’s an honest split between what you can check yourself and what the operator controls.
Trust model
You can verify
- The line-up, rules and track are locked with hashes before any randomness exists.
- Randomness comes from a future drand beacon round chosen when the line-up locks (demo mode uses a reproducible demo seed).
- The seed is derived from that randomness and the commitment; start slots come from the seed.
- Deterministic physics: replaying the same inputs gives the same result and the same results hash.
- Treasury and dev wallet balances, top-ups and payouts are public Solana transactions (except simulated demo payouts).
The operator controls
- The simulation and broadcast server: uptime and availability.
- Intake: which theses count (by the published rules), using data from a third-party provider.
- Prize funding: claiming creator fees and topping up the treasury is done by hand by the team.
- The treasury key that signs payouts.
- Hashes and replays prove a result follows from its inputs — they don’t remove this control.
Prize funding
Every race pays a fixed $100 prize (1st $70 · 2nd $20 · 3rd $10) in SOL from the project treasury. The team claims the token’s creator fees to the dev wallet and tops up the treasury by hand — nothing is claimed automatically. The SOL amount for a race is fixed once, when its results are final, from a median SOL/USD price across several sources; all quotes are recorded in the round manifest.
Treasury
Prize statuses
- Estimated — the SOL equivalent of the USD prize at the live price, before results.
- Confirmed — SOL amounts fixed when results were final, with the recorded price.
- Awaiting treasury top-up — the treasury can’t cover pending prizes yet; they wait and resume automatically after a top-up, oldest race first.
- Fewer finishers than prizes → the reached places share the whole prize. No finishers → nothing is paid and nothing carries over.
- Solana network fees for payouts are paid by the project, not from prizes.
Randomness
In use now: —
- drand quicknet (League of Entropy): when the line-up locks, the server commits to a specific future beacon round. The BLS signature is verified and both are published in the manifest.
- Demo seed is reproducible but not verifiable — the server picks it. Such rounds are always labelled as demo.
Order of events
Seed = SHA-256(randomness ‖ commitment hash). The commitment covers the line-up, rules and track hashes plus the round number, and is made before the beacon exists.
Back-on-track rule
One public rule for everyone (rules version race-rules-1):
- Stuck — moved less than 0.75 m in 10 s.
- Off track — below the track’s fall-out plane or more than 25 m from its centre line.
- After a fixed 2 s the marble is placed on its last passed checkpoint with zero speed. Every recovery is written to the event log.
- No speed boosts for stragglers and no braking for leaders. Every marble has identical physics.
- Not finished within 280 s of the gate opening — DNF. An exact tie goes to the lower start slot.
Payout ledger
The signed transaction, its signature and validity window are stored before sending, so a retry can never create a second payout. “Paid” appears only after on-chain confirmation; simulated demo payouts are never called paid.
Integration checks
Real-money mode switches on only when every check passes. Until then the service runs in demo or devnet mode.
FOMO data source
No server data.
FOMO has no official public API. Theses are read through an independent third-party provider that isn’t affiliated with FOMO. Data can be delayed; while the provider is down, no new entries are created.
The payout address comes only from the author’s own post (fomorace:<address>). Wallets that a provider “guesses” from a handle are never used.