Overview
POKEPERP is a Pokémon-flavored take on perpetual markets, built in three layers:
- Data layer — a server-side feed that aggregates real Pokémon card prices from CardMarket (via the pokemontcg.io API), converts them to USD at the live EUR/USD rate, and serves them through a public REST API with caching so downstream consumers never see a flaky upstream.
- Arena layer — a trading playground on Solana devnet. Positions are encoded as Memo-program transactions signed by your own wallet: open and close events live on-chain and are verifiable on any explorer. No custody, no real funds.
- Token layer — $POKEPERP, the memecoin of the ecosystem, fair-launched on pump.fun.
The end-game (see Quest Log) is a real on-chain perp protocol for card prices — oracle, collateral vault, liquidation engine. The current platform is the foundation: distribution, data, and community.
Quickstart
- Get a wallet — install Phantom (browser extension or mobile).
- Buy $POKEPERP — hit any buy button on this site; it opens the official pump.fun page. Always verify the contract address against the one in the site header and on our X.
- Try the Arena — go to Trade, connect Phantom, press Airdrop 1 SOL (free devnet SOL), pick a market, choose LONG or SHORT, set leverage, and open your position. Phantom will ask you to sign a transaction — that signature is your position being written to devnet.
- Verify it yourself — every position row links to the Solana Explorer where you can see the raw transaction and its memo.
Perps 101
A perpetual future ("perp") is a bet on a price with no expiry date:
- LONG — you profit when the price goes up, lose when it goes down.
- SHORT — the reverse: you profit from a falling price.
- Leverage — multiplies your exposure. At 10x, a +1% move in the price is +10% on your margin; a −10% move wipes you out (liquidation).
You never own the underlying — no shipping a Charizard, no grading, no vault. You're trading pure price exposure. That's why perps are the most traded instrument in crypto, and why they're a natural fit for illiquid collectibles.
Price feed
Card prices are real market data, not simulations:
- Source — CardMarket price points (trend, 1-day / 7-day / 30-day averages) via the pokemontcg.io API. CardMarket updates these daily.
- Conversion — CardMarket publishes EUR; we convert to USD using the live EUR/USD rate (frankfurter.app, with open.er-api.com as fallback). The exact rate used is exposed at
/api/v1/fx. - Aggregation — the server refreshes every 15 minutes, persists the last good snapshot to disk, and fills any gaps from an upstream hiccup with the last known real data. The frontend only ever talks to our own API.
- Baskets — index markets (VINTAGE, MODERN, GRAILS) are transparent sums of their member cards. The composition is in each market's
descfield.
Honesty rule: if data is stale or an upstream is down, the API says so (lastError, lastRefresh in /api/v1/health). We never fabricate a price.
Battle Arena (devnet)
The Arena is paper trading with an on-chain audit trail, on Solana devnet:
- Opening a position sends a transaction containing a Memo program instruction, signed by your wallet and paid with devnet SOL (worthless test tokens, free from the faucet).
- The memo payload is namespaced JSON:
pokeperp:{"a":"open","m":"ZARD","s":"long","l":10,"z":1000,"p":4786.5} - Closing writes a second memo referencing the opening signature:
pokeperp:{"a":"close","ref":"5h2k…","p":4650.1} - Your position list is rebuilt by scanning your wallet's recent transactions — the chain is the database. Anyone can audit it via
/api/v1/positions/<wallet>or the explorer.
What the Arena is not: there is no collateral vault, no counterparty and no liquidation engine — position sizes are paper USD. It exists to practice, compete and build the trading culture before the real protocol ships (Quest 4).
PnL math
PnL is computed against real CardMarket prices, expressed as a percentage of margin:
direction = +1 for LONG, −1 for SHORT move = (mark_price − entry_price) / entry_price PnL % = direction × move × leverage × 100
Example: LONG ZARD at $4,786.50 with 10x leverage. ZARD trends up to $4,976 (+3.96%). PnL = +39.6% on margin. The same move on a SHORT would be −39.6%. At 100x, a −1% move against you already exceeds −100% — in a real perp venue you'd be liquidated before that.
$POKEPERP token
- Chain — Solana (mainnet). Launch — pump.fun bonding curve, fair launch.
- Supply — 1,000,000,000 (pump.fun standard). No presale, no team allocation, no insider wallets.
- Taxes — 0% buy / 0% sell. LP — burned at migration.
- Contract address — shown in the site header once live. Verify it against our X before buying; impersonation tokens are common.
$POKEPERP is a memecoin: it has no intrinsic value, promises no yield, and its only utility today is being the flag of this ecosystem. Roadmap perks (tournaments, leaderboard prizes) are community rewards, not financial instruments.
API reference
Base URL: same origin as this site. All endpoints are GET, return JSON, are CORS-enabled (Access-Control-Allow-Origin: *) and require no authentication. Please cache on your side; be gentle.
GET /api/v1/health
Service status, feed freshness, market count and last upstream error (if any).
curl -s https://YOUR-DOMAIN/api/v1/health
{
"status": "ok",
"version": "0.1.0",
"uptimeSec": 86211,
"feed": {
"markets": 11,
"lastRefresh": "2026-07-04T02:10:11.421Z",
"sourceUpdated": "2026/07/01",
"lastError": null
},
"network": "solana-devnet"
}
GET /api/v1/markets
All markets (baskets + grail cards) with USD prices and real 30d/7d/24h averages.
curl -s https://YOUR-DOMAIN/api/v1/markets
{
"currency": "USD",
"fxEurUsd": 1.1439,
"sourceUpdated": "2026/07/01",
"markets": [
{ "sym": "ZARD", "name": "Charizard", "kind": "card",
"price": 4786.50, "trend": [2777.00, 4506.58, 17100.36], … }
]
}
GET /api/v1/markets/:sym
A single market by symbol, e.g. /api/v1/markets/ZARD. 404 if unknown.
GET /api/v1/positions/:wallet
All Arena positions for a devnet wallet, parsed straight from its on-chain memos, with mark price and live PnL. 400 on malformed addresses.
curl -s https://YOUR-DOMAIN/api/v1/positions/9xQeWvG…
{
"wallet": "9xQeWvG…",
"network": "devnet",
"count": 1,
"positions": [
{ "sig": "5h2kj…", "market": "ZARD", "side": "long", "lev": 10,
"sizeUsd": 1000, "entry": 4786.5, "markPrice": 4801.2,
"pnlPct": 3.07, "closed": false,
"explorer": "https://explorer.solana.com/tx/5h2kj…?cluster=devnet" }
]
}
GET /api/v1/fx
The EUR/USD rate currently applied to CardMarket prices.
GET /api/v1/sol
SOL/USD spot (CoinGecko, cached 60s).
GET /api/v1/devnet
Arena network status: current slot and epoch info from the devnet RPC.
Self-hosting
The whole platform is a single zero-dependency Node.js (≥18) process:
git clone <repo> cd pokeperp node server.js # → http://localhost:4173
No build step, no database (the feed cache persists to data/cache.json). Deploy anywhere Node runs: Railway, Render, Fly.io, a VPS. Set PORT to change the port and DEVNET_RPC to use your own RPC endpoint.
Legal & risk
- POKEPERP is an experimental community meme project — not affiliated with, endorsed by, or connected to The Pokémon Company, Nintendo, Creatures Inc. or GAME FREAK.
- Nothing on this site is financial advice. $POKEPERP is a memecoin with no intrinsic value and no expectation of profit. Memecoins routinely go to zero.
- The Battle Arena runs exclusively on Solana devnet with valueless test tokens. It is a game and an educational tool, not a trading venue.
- Card prices are third-party market data provided "as is"; accuracy is not guaranteed.
- Do your own research. Never invest more than you can afford to lose.
FAQ
Are the card prices real?
Yes — CardMarket data via pokemontcg.io, updated daily, converted at the live EUR/USD rate. See Price feed.
Is the Arena real trading?
The transactions are real (on devnet, verifiable on-chain); the money is not. See Battle Arena.
Can I build on the API?
Yes, it's open and CORS-enabled. See the API reference. No key needed — just don't hammer it.
When real perps?
Quest 4. An on-chain perp protocol needs an oracle for card prices, a collateral vault and a liquidation engine — that's the end-game we're building toward, not something we'll fake in the meantime.
How do I buy $POKEPERP?
Buy buttons on this site open pump.fun. Verify the CA in the header against our X first.