What is KOLBET?
KOLBET is a conviction-betting layer built on Solana. Pick TAIL or FADE on the top pump.fun KOL wallets — real on-chain portfolio data, no price manipulation, no synthetic exposure. Creator fee SOL airdrops to the top 15 KolCoin balances every 2 hours.
Core concept
Every pump.fun caller has a wallet. That wallet makes real trades. KOLBET tracks 25 of the most active callers and updates their portfolio values from live Solana RPC data every 30 seconds. You're not predicting a price chart — you're predicting whether a specific human's on-chain moves will pay off.
No oracle manipulation. No synthetic exposure. Just wallet math.
Who is it for?
- Pump.fun degens — you already watch these wallets. Now bet on them.
- Meta-traders — read the callers, be right about them, earn real SOL.
- $KOLBET holders — hold tokens, pick callers, earn SOL from the creator fee pool every 2 hours.
Playing the game
1. Connect your wallet
Click Connect Wallet in the app. We support Phantom and any Solana wallet adapter. Your wallet address tracks your bets, token balance, and leaderboard position. We never request a transaction approval — only a message signature to authenticate your picks.
2. Read the caller board
The terminal shows 25 KOL wallets ranked by performance. Each card displays:
- Portfolio Δ — live change in the wallet's SOL-denominated value this cycle
- Hit rate — historical percentage of cycles where the caller's portfolio went up
- Win / loss record — lifetime cycle outcomes
- Live trades — recent on-chain buys and sells detected by the scanner
- Crowd split — what % of players are currently tailing vs fading
Click any card to open the KOL detail view with a P&L sparkline, full cycle history, and live on-chain trade feed.
3. Build your slip
Press ▲ TAIL or ▼ FADE on as many callers as you want. Set a stake for each. Your slip accumulates in the sidebar — review totals before submitting. Picks are always open — no lock windows.
4. Sign and submit
Your slip is hashed client-side and you sign a human-readable message with your Phantom wallet. No token approval required — just a message signature. The server verifies the signature and records your bets immediately.
Always open. Unlike round-based games, KOLBET has no betting window — picks are accepted at any time. The 2-hour airdrop cycle runs continuously in the background.
5. Collect winnings
At the end of each 2-hour cycle, the top 15 KolCoin balances on the leaderboard receive a SOL airdrop from the creator fee pool. Your $KOLBET token balance tracks your paper performance. Real SOL flows to verified top pickers.
Cycle lifecycle
KOLBET runs a single continuous cycle — no rounds, no phases. Picks are always accepted.
| Event | Timing | What happens |
|---|---|---|
| Cycle opens | Immediately on startup | Opening wallet snapshots taken. Picks accepted from any connected wallet. |
| Continuous scan | 2 wallets every 30 s | Portfolio values update in real-time. Live feed shows trades. P&L deltas visible on cards. |
| Airdrop drop | Every 2 hours | Closing snapshots taken. Outcomes computed per-KOL. SOL distributed to the top 15 KolCoin balances. |
| Next cycle | Immediately after drop | New cycle opens. Previous results stored. Picks reset. |
The cycle interval is controlled by the PAYOUT_HOURS environment variable. Default: 2 hours.
Outcomes & payouts
Per-KOL outcome
Each of the 25 KOLs gets an independent outcome at cycle close:
| Outcome | Condition | Who wins |
|---|---|---|
| ▲ TAIL | Wallet SOL value increased open → close | TAIL bettors split FADE stakes, minus fee |
| ▼ FADE | Wallet SOL value decreased open → close | FADE bettors split TAIL stakes, minus fee |
| — PUSH | No measurable change (dust threshold) | Stakes returned to all bettors |
Payout formula
winning_share = your_stake / total_winning_stakes
gross_payout = your_stake + (losing_pool × winning_share)
fee = gross_payout × protocol_fee_rate
net_payout = gross_payout − fee
Protocol fees accumulate in the creator fee pool and are airdropped to top leaderboard players at each 2-hour mark.
Slip-level settlement
Your slip can contain picks on multiple KOLs. Each pick settles independently — you can win some and lose others in the same cycle. Net P&L is tracked across all picks on your account.
Leaderboard & rankings
The leaderboard tracks every connected wallet's performance. Sort by:
- KolCoins — your in-game KolCoin balance (starts at 500 KolCoins, grows with correct picks)
- Hit % — percentage of individual picks that landed correctly
- Streak — longest consecutive win streak
- SOL — real creator fee SOL earned from protocol distributions
Top-ranked players receive a share of the creator fee pool at each airdrop drop, weighted by rank. The current pool balance is always visible in the app header and stats band.
On-chain scanning
How wallet values are computed
We call getTokenAccountsByOwner and getMultipleAccounts on Solana mainnet RPC to fetch every SPL token account held by a KOL wallet. For each token:
- Fetch mint metadata to identify the token
- Resolve current price via Jupiter Price API when available
- Fall back to pump.fun bonding curve reserves for unlisted tokens
- Sum SOL + priced token values into a single portfolio value
Micro-cap pump.fun tokens often have no Jupiter quote — counted as unpriced holdings and reported separately. P&L comparison uses the SOL-balance-weighted delta, making it robust to unpriced tokens.
Scan rate & rate limits
Uses the public Solana mainnet RPC endpoint — no API key required. To stay within public rate limits:
- 2 wallets polled every 30 seconds — full 25-wallet cycle takes ~6 minutes
- Sequential seeding at startup — 2-second delay between wallets to avoid 429s
- False-buy guard — if the seed snapshot was empty (rate-limited), first diff is skipped to avoid phantom trade signals
Trade detection
On each poll, we diff current token holdings against the previous snapshot. A net positive balance change on a token is reported as a BUY. A net negative change is a SELL. Trade signals feed the live wallet feed in real-time.
Note: Token tickers are resolved via the pump.fun metadata API. Tokens not yet indexed may show their mint address until resolved.
Tech stack
KOLBET is a Node.js monolith — no external services, no Docker, no database server. Everything runs in-process.
| Layer | Technology | Notes |
|---|---|---|
| Runtime | Node.js 22+ | Requires ≥22.5 for node:sqlite built-in |
| Database | SQLite (node:sqlite) | Single-file, zero-dependency, embedded |
| HTTP server | node:http | No framework — raw request routing |
| Solana RPC | Public mainnet-beta | api.mainnet-beta.solana.com — no API key |
| Token prices | Jupiter Price API v2 | Batch price fetch for known tokens |
| Auth | @solana/web3.js (client) | Message signing via Phantom — no keypair server-side |
| Frontend | Vanilla JS + CSS | No build step — served as static files |
| Fonts | Inter + DM Serif Display + JetBrains Mono | Google Fonts CDN |
Key source files
├─ index.js — entry point, starts engine + server
├─ engine.js — continuous cycle (open → airdrop → repeat)
├─ realfeed.js — live on-chain scanner (25 wallets, RPC)
├─ oracle.js — portfolio valuation via Solana RPC
├─ tracker.js — trade detection + live feed state
├─ server.js — HTTP API + static file serving
├─ db.js — SQLite schema + query helpers
├─ bets.js — slip validation + signature verification
└─ slate.js — KOL roster management
public/
├─ index.html — main app (hero + terminal + sidebar)
└─ docs.html — this page
API reference
All endpoints return JSON. No authentication required for read endpoints.
| Endpoint | Method | Description |
|---|---|---|
| /api/state | GET | Current cycle, slate with crowd splits, pool size, next airdrop timestamp, player count |
| /api/live | GET | Live wallet delta values + recent trade feed |
| /api/leaderboard | GET | Player rankings. Query: ?by=net|hit|streak|real |
| /api/me | GET | My stats. Query: ?wallet=<pubkey> |
| /api/kol/:wallet/history | GET | Last 30 settled cycle outcomes for a KOL wallet |
| /api/auth/nonce | POST | Request a one-time sign-in nonce. Body: {wallet} → {nonce, message} |
| /api/auth/verify | POST | Verify the wallet's ed25519 signature over the nonce message. Body: {wallet, signature} (base64) → {token} |
| /api/bet/submit | POST | Place picks. Requires Authorization: Bearer <token> for the same wallet. Body: {wallet, bets} |
| /api/bet/cashout | POST | Cash out a pending pick at the live quote. Requires Authorization: Bearer <token>. Body: {wallet, kolId} |
Wallet sign-in flow
const { message } = await fetch('/api/auth/nonce', { method: 'POST', body: JSON.stringify({ wallet }) });
// 2. sign it once with your wallet (proves you own the key)
const sig = await phantom.signMessage(encode(message));
// 3. exchange the signature for a 24h session token
const { token } = await fetch('/api/auth/verify', { body: JSON.stringify({ wallet, signature: base64(sig) }) });
// 4. bets & cashouts require the token — nobody can act as your wallet without it
fetch('/api/bet/submit', { headers: { Authorization: 'Bearer ' + token }, body: JSON.stringify({ wallet, bets }) });
$KOLBET token
$KOLBET is the native currency of the platform. All stakes, payouts, and leaderboard balances are denominated in $KOLBET tokens. The token is live on pump.fun.
Contract address: Dsj3vWsDMGtGbnq3FiTyvPwaNhm2JjzDBitm23Uzpump
Paper tokens vs real tokens
Inside the app, your skill is tracked as KolCoins — an in-game currency everyone starts with 500 of. Pick right and your KolCoin balance grows. The top KolCoin holders at each airdrop window split the real SOL creator fee pool. Hold $KOLBET on-chain to unlock real SOL payouts.
In the current phase, token mechanics are simulated. Full on-chain settlement activates when DRY_RUN=0 is set and the engine wallet is funded.
Creator fees & airdrops
A small protocol fee (configurable, typically 2–5%) is deducted from winning payouts each cycle. These fees accumulate in the creator fee pool — visible in real-time in the app header.
Every 2 hours, the engine airdrops SOL from the fee pool to the top players on the leaderboard, weighted by rank. The airdrop countdown is always visible in the navigation bar and stats band.
This creates a flywheel: the more you play and win, the higher your rank, the larger your share of platform fees — paid in real SOL, on-chain.
To earn real SOL airdrops: Hold $KOLBET tokens + rank in the top tier of the leaderboard by the end of each 2-hour window.
FAQ
EJs8…U5DQ) is the source of airdrop SOL — funded by pump.fun creator fees.