The rulebook

HOW VERSUS WORKS

VERSUS puts two Robinhood Chain tokens in the ring and scores them over five rounds. Rules decide every round. An AI commentator calls the fight, but it never picks a winner, and every number it says is checked against the data before it reaches the page.

How a fight works

  1. Pick two fighters in the ring: type a ticker or name, or paste a contract address.
  2. VERSUS takes a snapshot of both tokens from public sources: pools, holders, transfers and launch data.
  3. Each round compares one thing. Each fighter gets a score from 0 to 100 for that round.
  4. The fighter with more rounds wins. The result, the commentary and a fight poster are saved to a permanent link you can share on X.

The same pair asked again within 10 minutes gets the same fight, so the result doesn't change because someone hit refresh. After that window a new snapshot is taken.

Scores are relative. A small token with a healthy pool and a wide holder base can beat a big token that sits on a thin pool.

The five rounds

All formulas below are exactly what runs. Scores are rounded to one decimal.

Round 1 · Holders

Is the token held by a crowd, or by a committee? Mostly how concentrated the top 10 is, a bit of how many holders there are.

score = 0.7 × 100 × (1 − top10 share) + 0.3 × min(100, 25 × log10(holders))

Pools, the Uniswap v4 pool manager, Pons contracts (hook, locker, graduation executor, fee escrow, buyback vault), burn addresses and any other contract don't count as holders.

Round 2 · Liquidity

How deep the pool is against the market cap. A pool worth 25% of the cap or more scores full marks.

depth = liquidity ÷ market cap score = 100 × min(1, depth ÷ 0.25) (halved if liquidity is under $2,000)

Liquidity is added up across every pool the token has on DexScreener.

Round 3 · Momentum

Where the price went in 24 hours, and how much trading the pool saw. Capped, so one pump can't win the round alone.

price part = 50 + 50 × tanh(24h change % ÷ 50) turnover = 24h volume ÷ liquidity turnover part = 100 × min(1, turnover ÷ 2) (set to 50 if turnover is above 15x) score = 0.6 × price part + 0.4 × turnover part

Round 4 · Buy pressure

Over the last 24 hours, how many wallets ended up net buyers against how many ended up net sellers. Only transfers that touch one of the token's pools count. A wallet that bought and sold back nets out to zero and isn't counted.

score = 100 × (buyers + 5) ÷ (buyers + sellers + 10)

The +5 / +10 pulls small samples toward 50, so 3 buyers against 0 sellers isn't a knockout. If either side has fewer than 5 wallets trading, the round is a no contest: nobody wins it.

Round 5 · Status

Time survived on a live pool. Keeps rising for about three months, so two veterans don't both max out.

score = 60 + min(40, 8 × log2(1 + age in days ÷ 3))

Age comes from the token's creation transaction, or its launch event for Pons tokens.

Decisions and flags

A round is even when the two scores are within 3 points. Nobody gets the round.

DecisionWhen
ShutoutThe winner took 3 or more rounds and lost none.
UnanimousThe winner is ahead by 2 rounds or more.
SplitThe winner is ahead by 1 round.
On pointsLevel on rounds. The bigger total margin across all five rounds wins.
DrawLevel on rounds and level on total margin.

Red flags

Flags don't change the score. They are printed under the decision so nobody misses them.

FlagWhen
ConcentratedThe top 10 holders own more than 60% of the supply.
Thin poolTotal liquidity under $1,000.
Suspicious volume24h volume is more than 15x the pool.

Who can fight

Any token on Robinhood Chain with at least one pool on DexScreener can be put in the ring.

Tokens still on a launchpad bonding curve (not yet graduated to a pool) can't fight yet. Support for them is planned.

To count for the Hall of Belts and to be picked for Tonight's Card, a fight needs both fighters to be graduated, at least 1 day old, and holding at least $5,000 in liquidity.

Tonight's card

Three fights land every day at 00:05 UTC. They are picked by rules, never by the AI.

  • Main event: the two biggest neighbours by market cap.
  • Undercard: two neighbours from the middle of the ranking.
  • Upset watch: the hottest token outside the top 5 against a top 5 token.

No pair repeats within 7 days, no token fights twice on one card, and at least one fight features a Pons token when one is available.

The title fight

One fight at a time runs for seven days. When one ends, the next opens at the same daily bell. The rules pick two graduated Pons tokens close in market cap (no more than 4x apart when possible), each with a pool of at least $5,000, at least 3 days old, that haven't met in a title fight in the last four weeks.

Both fighters are read once at the opening bell and once a day after that, around 00:20 UTC. Every round is scored on what changed since the opening bell. Grit replaces Status, because age doesn't move in a week.

Holders

Top 10 share falling scores, holder count growing scores. 60% concentration change, 40% holder growth.

0.6 × (50 − 50 × tanh(Δ top10 pts ÷ 3)) + 0.4 × (50 + 50 × tanh(holder growth % ÷ 10))

Liquidity

How much pool depth (pool ÷ market cap) grew or shrank since the opening bell, as a percentage of where it started.

50 + 50 × tanh(depth change % ÷ 20)

Momentum

Price change since the bell, plus the average daily turnover of the pool. Capped, so one pump can’t win it alone.

0.6 × (50 + 50 × tanh(price % ÷ 50)) + 0.4 × 100 × min(1, avg turnover ÷ 2)

Buy Pressure

Each day counts the wallets that net-bought and net-sold through a pool in the last 24 hours. The days are added up. Under 5 wallets a side is a no contest.

100 × (buyers + 5) ÷ (buyers + sellers + 10)

Grit

Share of days that closed higher than the day before.

100 × green days ÷ days so far

Rounds within 3 points are level. Decisions work the same way as a regular fight. The winner holds the Title Belt until the next title fight ends.

See the title fight →

Challenges

Anyone can call out a rival. Pick two Robinhood Chain tokens and a length of 1, 3 or 7 days. Both tokens need a pool of at least $5,000 that has been trading for 3 days or more.

A challenge is scored exactly like the title fight: the same five rounds, on what changed since the opening bell. Each token is read once per UTC day, and that reading is shared by every challenge the token is in.

  • One new challenge per fan per day.
  • Up to 30 challenges run at once. When the arena is full, a slot opens as soon as one ends.
  • The same two tokens can't have two live challenges at the same time.
  • Challenges count for the token's record. The Title Belt is only won in the title fight.

Throw down a challenge →

Hall of Belts

A weekly leaderboard, Monday to Sunday UTC. Tokens are ranked by unique wins: beating the same opponent ten times counts once. Ties go to total wins, then fewer losses. Only eligible fights count.

Open the Hall of Belts →

The commentator

Every fight gets a ringside call: a title, an intro for each corner, one line per round, a closing line and a ready-made X post.

  • It gets the finished result and the formatted numbers. It can't change a winner.
  • Every number in its lines has to appear in the fight data. A line with a made-up number is thrown out and replaced with a plain rule line.
  • It roasts numbers, never people. No claims about teams, developers or intent.
  • No-contest rounds always get the plain rule line.

If the AI is down or too many of its lines fail the check, the fight still runs with plain rule-written lines.

Data sources

VERSUS is read-only. It doesn't index the chain, hold funds or ask for a wallet. Everything comes from these public sources:

SourceUsed for
DexScreener ↗Pools, liquidity, market cap, 24h price change and 24h volume. Every pool a token has is added up.
Blockscout (Robinhood Chain) ↗Holder count, top 10 holders, 24h transfers for buy pressure, and the creation transaction for age.
Pons ↗Launch detection. A token launched on Pons V2 is read from its TokenLaunched event.
Robinhood Chain ↗The chain every fighter lives on. Chain ID 4663.

Every number on a fight page is the snapshot taken at fight time. The timestamp is on the fight. Live data keeps moving.

FAQ

Why did I get the same result twice?

The same pair within 10 minutes returns the saved fight. Wait for the window to pass for a fresh snapshot.

Why is buy pressure a no contest?

One of the tokens had fewer than 5 wallets buying or selling in the last 24 hours. Too few to call it.

My token won't enter the ring.

It needs a pool on DexScreener on Robinhood Chain. Tokens still on a bonding curve can't fight yet. Double-check the contract address too.

Can a fight result change?

No. A fight is saved with its snapshot. A rematch later takes a new snapshot and can go the other way.

Is the holder count different from the explorer?

It can be. VERSUS removes pools, lockers, burn addresses and other contracts from the top 10 before scoring.