Trench Gladiators helmetTRENCH GLADIATORS
Buy
Manual

How it works

1. Your wallet is a fighter

$GLADIATOR is a pump.fun token. Every wallet that holds at least $150 of it at the live price (Jupiter quote) has a fighter. There is nothing to register: the service reads every holder of the mint once a minute and the token's trade feed every few seconds, so a buy shows up within seconds and a fighter appears from the next round.

Name and look come from the wallet: the class from your stats, colors, headgear and weapon from a hash of the address. The name is picked once and stays, also after a death and a revive.

Sell below the threshold and the fighter falls: it leaves the arena at the next round and gets a grave in the Hall of the Fallen with its record. Buy back in and it rises again under the same name, streak back at 0.

2. Stats from your own trades

Stats come from the wallet's pump.fun and PumpSwap trades of the last 60 days (up to 1,000 transactions). Closed positions worth at least 0.05 SOL count. A win is a position closed at +5% or better, a loss at -5% or worse. Every stat is an honest 0 to 100; with little history the formulas pull toward the middle instead of guessing.

StatFormulaReads as
POWER100 x ((wins + 2.4) / (wins + losses + 6) - 0.15) / 0.50Win rate, smoothed toward 40%. No data = 50.
ARMORValue-weighted median hold time of closed positions, smoothed toward 5 min, on a log scale from 20 s (0) to 2 days (100), plus 2 per day of holding $GLADIATOR (max +15)5 min = 30, 1 h = 57, 12 h = 85. No data = 30.
SPEED100 x log10(V30) / log10(2000), V30 = SOL bought + sold in 30 days1 SOL = 0, 45 SOL = 50, 2,000 SOL = 100.
WEAK100 x ((d + 1.5) / (n + 4) - 0.10) / 0.70, d = positions closed at -35% or worseDump rate. No data = 39.

Fewer than 5 closed positions = recruit: same formulas, a recruit sprite, the Brawler class. In a fight every stat is clamped to 15..85 so extremes cannot stack; the page still shows the honest number.

3. Six classes

Checked in this order, the first match wins:

ClassWhenWho it is
TankARMOR 55+Diamond hands. Holds through everything.
AssassinPOWER 50+, ARMOR 36 or less, SPEED 35+In and out, and right about it.
ChampionPOWER 52+Wins more than it loses.
BerserkerSPEED 55+ and POWER under 42Volume over judgement.
CowardWEAK 40+Sells the bottom.
Brawlereverything else, and every recruitStreet fighter.

4. The fight

Rounds last 30 s. At the start of a round the roster freezes: everyone at or above the threshold with stats as of that moment. Fighters are shuffled into pits of up to 16 by sha256(seed | wallet); a pit with fewer than 6 is filled with ghosts of the fallen (no rewards, no streak) or sparring shades at 50/50/50/50, so a fight is always running, even with one holder.

In a pit, fighters walk to random points (faster with SPEED) and two free fighters within reach start a duel. Attacks run on timers until one drops to 0 HP; a duel cut by the end of the round goes to the one with more HP.

RuleValue
Attack every0.9 s x (1 - 0.08 x spd) (0.83 to 0.97 s)
Damage11 x U(0.4, 1.6) x (1 + 0.08 x pow) x (1 - 0.07 x arm_defender), x1.5 when the defender is exposed, x2 on a crit
Miss / crit15% / 10%
Exposed chance of the defender0.05 + 0.30 x weak / 100 (9.5% to 30.5%)
Stat scalex = (clamp(stat, 15, 85) - 50) / 50
After a duelboth rest 3 s, HP back to 100

A win adds 1 to your streak, a loss sets it to 0. Losing takes nothing else. Measured over 40,000 duels: equal fighters win 50.2%, one maxed stat against an average fighter wins about 59%, the best possible build against the worst wins 90.5%.

5. Every fight is replayable

The seed of a round is sha256("glad1|" + round + "|" + blockhash + "|" + roster_hash). The block comes after the roster froze, so nobody can arrange a pit in advance. The fight engine is deterministic (integer timers, damage in thousandths of HP, its own sha256 and xoshiro128** generator) and this page runs the exact same file as the server.

Your browser replays every pit of the round and compares its event hash with the server's: the arena screen says VERIFIED when they match. Past rounds are public at /api/round/<r>. When the block hash could not be read the round says beacon: chained and the seed falls back to the previous seed; that is visible per round.

6. Rewards: real creator fees in SOL

The token's creator wallet collects the pump.fun creator fee (0.30% on the curve; on PumpSwap 0.30% to 0.95% by market cap) every 5 min. Each collect is split three ways: 75% to the fighters' pool, 20% to infrastructure (the name model, chain reads, transaction gas) and 5% to the owner wallet. Only the lamports that a collect transaction actually moved are booked; donations to the wallet are not counted.

Each round, 1/20 of the undistributed pool is booked to fighters by weight:

weight = B_eff x (0.5 + 0.2 x min(streak, 10))

B_eff is your lowest balance over the last 6 hours, so buying just before a payout earns nothing. Weight is linear in balance, so splitting a bag across wallets gains nothing. Payouts go out as plain SOL transfers, 20 per transaction, every 10 min for every wallet with at least 0.002 SOL booked. A fallen fighter's unpaid rest is still paid; after 30 days it returns to the pool, never to the owner.

No token rewards, no APY. With few holders the money is small, and that is the honest number.

7. Parameters

Live values from the service (/api/rules). Each one has fixed bounds; a value outside them refuses to start.

ParameterValueBounds

8. Abuse, and what stops it

AttemptResult
Split one bag over many walletsWeight is linear: same total share. Each wallet below the threshold gets nothing.
Buy before a payout, sell afterB_eff is the 6 h minimum: 0.
Fight your own second walletPits come from the block hash; you cannot choose who meets whom. Measured: no better than honest good stats.
Fake wins with wash tradesCosts about 2.5% of volume in fees per fake win; smoothing needs about 30 positions to move POWER far. Best possible build earns about 1.5x a neutral share.
Airdrop dust to flood the arenaA fighter needs the full $150 threshold in each wallet.
Exchanges, pools, bonding curve as fightersExcluded: any owner that is not a plain wallet, plus a manual list.
RPC glitch reports a whale as soldDeath needs two agreeing reads; an empty holder snapshot is rejected.

9. What you trust

The service is a counter and it is open; the creator key lives on the server, and the payout float is never more than a few minutes of flow.

  • The service computes rosters, stats and the ledger. Every number is public through the API with the formulas above.
  • It cannot pay out more than came in: before each payout cycle it checks that the pool equals booked plus undistributed, that no wallet is paid beyond its booked amount and that the wallet balance covers every unpaid line. Any mismatch halts payouts.
  • It cannot pick a fight result: the seed uses a block that comes after the roster froze.
  • It can delay payouts or get a stat wrong. It cannot hide your fighter: masking takes your wallet's signature.
  • The creator key is hot on the server. A leak loses at most about 10 minutes of fees plus a 0.05 SOL gas float; the rest waits in pump.fun's creator vault.
  • Platform risk: pump.fun can reassign a coin's creator (set_creator / admin takeover), which would redirect the fees.
  • Admin powers: the exclusion list, parameters inside their bounds, and a pause that stops payouts only (booked amounts are kept). The admin never takes fighters' money: only the infra and owner shares leave the pool at collect time.

10. Public API

JSON, read-only except masking. Rate limited per visitor.

EndpointReturns
/api/arenaround, fighters alive, featured duel, top streaks, recent fallen
/api/round/current, /api/round/<r>seed, slot, block hash, roster hash, pits with fighters and stats, event hashes
/api/fighters?sort=streak|weight|newroster cards
/api/fighter/<wallet>stats, record, booked / paid, last duels and payouts
/api/fallenHall of the Fallen
/api/pool, /api/payoutscollected, booked, paid, undistributed, checks; payout transactions
/api/rulesthe open formula and parameters