$FOMOTAPFomo ↗
Fair play

Seed decides the tower.
You decide the race.

Every climber gets the same obstacles, the same timing windows and the same speed. The only thing that separates you is when you tap — and every tap is scored by the server, recorded, and re-playable by anyone after the match.
01

One tower for everyone

Each match generates one tower from its round seed: 40 obstacles across START, LOWER, MID, HIGH and SUMMIT. Every lane runs that exact sequence with the same approach times and timing windows. Lanes only change where your climber is drawn.

No paid advantage, no token-holding advantage, no hidden boost. Holding a token can be an entry requirement for some rounds; it never changes how you climb.

02

Commit before, reveal after

When a match is created the server picks a random secretSeed and publishes only seedCommit = sha256(secretSeed) on the match page. It can't change the seed later without the commitment breaking.

When entries lock, the round seed is derived from the secret, the match id and the ordered participants: roundSeed = sha256(secretSeed:matchId:ids). Participants are the qualified entries in entry order, then labelled house bots. The round seed draws the tower and the lanes.

The secret, round seed, participant order and tower hash are revealed only after the match ends (or is voided). Publishing them earlier would let a script know every obstacle timing in advance, so we don't.

03

The server scores every tap

Your browser sends exactly one thing per tap: a sequence number and its clock time. It never says “perfect” or “jumped”. The server converts your timestamp to match time using a clock-sync handshake, then grades it against the obstacle's window. Your screen animates instantly from a local prediction, but the server's grade is the one that counts.

SectionPerfectGreatGoodEarly/Late
START±70ms±130ms±210ms±340ms
LOWER±60ms±120ms±195ms±320ms
MID±45ms±100ms±160ms±250ms
HIGH±35ms±75ms±125ms±210ms
SUMMIT±30ms±65ms±110ms±200ms

Rules version climb-rules-v1. Anything outside the early/late window is a MISS. Difficulty rises toward the summit; the first section is generous.

04

Latency, spam and replays

  • Bounded compensation. The server rewinds a tap by at most 150ms based on your measured round-trip and jitter. A slow connection is helped a little; it can never claim a tap from the past. Above 180ms round-trip you'll see “HIGH LATENCY — Timing compensation is active.”
  • Mashing loses. Only the first tap inside an obstacle's zone counts, taps closer than 70ms apart are ignored, and the zone opens 450ms before the target — so an early mash just jumps early.
  • Anti-replay. Sessions use one-time signed tickets, sequence numbers must increase, duplicates are acknowledged but never processed twice.
  • Bots. Inhuman intervals, impossible reactions and automation signals are flagged for review. Very good timing alone never gets anyone banned — and no system catches every bot, so we don't claim to.
05

If you disconnect

Your climber keeps going and misses every obstacle it reaches — nobody gets free inputs. Falls never drop below the current section's checkpoint. Reconnect within 30 seconds and you pick up from wherever your climber is; after that you're marked DNF.

06

Signed results, full replays

At the finish the game server signs the result (winner, finish times, placements, tower hash, round seed) with its ed25519 key and stores the replay: every accepted tap, every resolution, every DNF. The first to cross the summit trigger wins, by server time with sub-millisecond precision. Within 120ms it's a photo finish.

FomoTap's published result key: aa334264c7b9203e396b8a418351b87a3da5110a103b66db591c8a8cfca779f4

On any finished match's fair-play page, Verify in your browser re-derives the tower from the revealed seed, replays every tap through the same rules code the server runs, and checks the signature. Nothing has to be trusted except the published data.

07

Pre-funded prizes, paid once

  • Official matches carry a promotional prize that is deposited into an on-chain prize vault before it is advertised. The match shows FUNDED ✓ with the transaction.
  • The vault releases each match's prize once, keyed by FOMOTAP_PAYOUT_<matchId>, to the verified winner's declared Fomo wallet. A voided match can only be refunded to the vault owner — there is no other way out.
  • No entry fee, no stake, no wagering. House bots are labelled BOT, only appear in open matches, and are never paid or rated.