Pokémon Legacy: White paper
Pokémon Legacy is a shared-world Pokémon game on Robinhood Chain.
You catch, raise and battle the original 151 on one map with everyone else. What you win is yours: the ¥ you earn, the items you find and the Pokémon you catch are tokens you can take to your own wallet.
The game#
- Kanto, all 151. The original region and Pokémon, a story from Pallet Town to the Hall of Fame, then the Battle Arena, the market and the auto-battler.
- One shared world. Trainers walk the same map, see each other, chat, battle and trade.
- Plays anywhere. In the browser, on a phone, and as a Telegram Mini App.
- Wallet or guest. Sign in with a wallet, or play first as a guest. A guest's progress is on chain from the first step (see Wallet login).
- Every Pokémon is different. Each has a rarity, and a purity from 0 to 100 on each of its six stats, graded S to F. Both are fixed when it is caught (see Rarity and purity).
- Story and play. Eight gyms, the Elite Four, the Champion and the Hall of Fame. The Safari Zone, the Game Corner, the Pokédex, quests and rankings.
- Battle Arena. Ranked and casual battles, and staked battles for ¥ (see The Arena).
Wallet login#
- Wallet. Connect a wallet and sign one message. The message names your address, this site and a one-time code, and expires after 5 minutes. Signing it sends no transaction: no fee, no gas. A sign-in lasts 30 days.
- Guest. Nothing needs a wallet to start (see Guests).
- Telegram. Link Telegram to your wallet once, in Wallet → Connect Telegram. Then the bot sends you a one-time login link, good for 15 minutes. The Telegram Mini App opens the same game inside Telegram.
- What a Telegram login can do. It plays and spends in-game ¥ as its wallet. Deposits, withdrawals and listing Pokémon need the wallet itself. In the Mini App, a Telegram account with no wallet linked plays as a guest.
The ¥ token#
| Name | Pokémon Legacy |
|---|---|
| Symbol | ¥ |
| Supply | 1,000,000,000, fixed |
| Contract address | 0xd5Ad414684b5130FEC8F29558eb59E09557b7c3a |
¥1 in your in-game account is ¥1 of the token. You can move ¥ between your wallet and your account at any time (see Deposits and withdrawals).
Contracts#
Every contract is on Robinhood Chain. Each address links to the explorer.
| Contract | Address |
|---|---|
| Main ¥/ETH pool (Uniswap v4 pool id) | 0xbd168eeb83cfc89d1b66bdcbb5d7d9b391ed3b6034dfc8e3bd6556ff4ee14a00 |
| Player vault: every account's ¥ and items, the rewards pool's too | 0x260143d093fdFE2fdf57bf6321f430Ab2c6B0033 |
| Rewards programs | 0xb4b2b9452dE321332869F737170B612c79C8AdCb |
| Market | 0x4277385C0B1e0A6BeB962AbFa75201e3C3c5A871 |
| Pokémon (ERC-721) | 0xE8c09E34683e709792d9d414571E6A05a85c4523 |
| Item NFTs (ERC-1155) | 0x9aE8A565eaEC8AE03077798B97907a63F4619476 |
| Item pools' fee hook | 0xCacd54C8883b2e0557BCD4F18EDF7945537fA0CC |
The 26 item tokens are in the pools table under Allocation.
Allocation#
The five allocations are made when the token is created. Nothing is minted later.
| Allocation | ¥ | Share | Where it sits |
|---|---|---|---|
| Main liquidity | ¥400,000,000 | 40% | The ¥/ETH pool, locked on UNCX |
| Item pools | ¥300,000,000 | 30% | The ¥ side of the 26 item pools, never removable |
| Rewards pool | ¥200,000,000 | 20% | Prizes and the Arena house budget |
| Team and development | ¥50,000,000 | 5% | The team wallet: 0xC6286a982230271DE09485F9Bdf641cf65803A00 |
| Treasury | ¥50,000,000 | 5% | Operations, new pools and events: 0x4E2c0Ec0C13e0D076adbE550D2B07182F8a35a24 |
| Total | ¥1,000,000,000 | 100% |
The ¥/ETH pool is a Uniswap v4 pool with a 1% fee, locked on UNCX by the deployer.
Each of the 26 pool items has its own Uniswap v4 pool against ¥. A Poké Mart is a front end to them: buying is a swap, selling is a swap.
- One hook takes the fee on every item pool.
- Every buy and every sell pays 5%, in ¥. A buy costs the pool price plus 5%. A sale pays the pool price less 5%.
- The fee cannot be bypassed. Every swap goes through the hook, whoever sends it: the game, the swap page, an aggregator or a contract. Fees are capped in code at 15% each way, and every change waits 24 hours.
- Half of the fee goes to the rewards pool, half to the pools' bids. The bids' half is added once a day to the ¥ side of the pool that earned it. The pools' positions have no removal function.
- Two positions per pool. The ask holds items, from the start price up. The bid holds ¥, from just below the start price down.
- No floor and no ceiling. Prices move as far as trades push them. The start price is the Mart's list price.
- Open. Anyone can trade the pools from a wallet on the swap page, through the Uniswap router or an aggregator, and anyone can add liquidity.
- Price guard. The game trades for a player only within 3% of a price checkpoint at least 30 seconds old (players can set it lower). A price spike inside one block cannot be sold into a player.
Each pool now. The price is the pool's own, before the fee. The drop rate is per win over a wild Pokémon where the item drops (see Drops).
| Item | Token | Price | ¥ on the bid side | Items on the ask side | Drop rate |
|---|---|---|---|---|---|
| Poké Ball | 0x2830…075C | ¥998 | ¥21,000,000 | 28,000 | 1 in 136 |
| Great Ball | 0xB801…5aB6 | ¥2,992 | ¥16,500,000 | 7,333 | 1 in 408 |
| Ultra Ball | 0xA05e…3f94 | ¥6,000 | ¥22,500,000 | 5,000 | 1 in 816 |
| Potion | 0x76ec…7B9D | ¥1,501 | ¥9,000,000 | 8,000 | 1 in 204 |
| Super Potion | 0x2F27…34fA | ¥3,497 | ¥13,500,000 | 5,143 | 1 in 476 |
| Hyper Potion | 0xF77d…6d03 | ¥7,492 | ¥16,500,000 | 2,932 | 1 in 1,021 |
| Max Potion | 0x9181…6Bd5 | ¥12,476 | ¥13,500,000 | 1,440 | 1 in 1,701 |
| Full Restore | 0x1c10…6af2 | ¥15,026 | ¥18,000,000 | 1,600 | 1 in 2,041 |
| Revive | 0x67Ea…EdFC | ¥7,492 | ¥13,500,000 | 2,399 | 1 in 1,021 |
| Max Revive | 0x1567…3B76 | ¥20,040 | ¥15,000,000 | 1,000 | 1 in 2,721 |
| HP Up | 0xD3CB…4A48 | ¥48,994 | ¥15,000,000 | 408 | 1 in 6,667 |
| Protein | 0x0827…812E | ¥48,994 | ¥15,000,000 | 408 | 1 in 6,667 |
| Iron | 0xeb16…521F | ¥48,994 | ¥15,000,000 | 408 | 1 in 6,667 |
| Carbos | 0xD3Af…F78d | ¥48,994 | ¥15,000,000 | 408 | 1 in 6,667 |
| Calcium | 0x0215…Cb9F | ¥48,994 | ¥15,000,000 | 408 | 1 in 6,667 |
| Rare Candy | 0x5784…9B95 | ¥23,992 | ¥33,000,000 | 1,833 | 1 in 3,265 |
| Repel | 0x0720…e77c | ¥1,754 | ¥3,000,000 | 2,286 | 1 in 238 |
| Super Repel | 0x2022…8f67 | ¥2,499 | ¥4,500,000 | 2,400 | 1 in 340 |
| Max Repel | 0x47E3…7700 | ¥3,497 | ¥3,000,000 | 1,143 | 1 in 476 |
| Escape Rope | 0x8382…8e5d | ¥2,751 | ¥6,000,000 | 2,909 | 1 in 374 |
| Antidote | 0xB80A…E431 | ¥501 | ¥3,000,000 | 7,999 | 1 in 68 |
| Paralyze Heal | 0x9DcF…0a6b | ¥998 | ¥2,250,000 | 2,999 | 1 in 136 |
| Burn Heal | 0x8030…8E0B | ¥1,253 | ¥2,250,000 | 2,400 | 1 in 170 |
| Ice Heal | 0x3622…A013 | ¥1,253 | ¥2,250,000 | 2,400 | 1 in 170 |
| Awakening | 0x14D8…2Eb1 | ¥998 | ¥2,250,000 | 2,999 | 1 in 136 |
| Full Heal | 0x3c96…8558 | ¥2,992 | ¥4,500,000 | 1,999 | 1 in 408 |
| All 26 pools | ¥300,000,000 | 96,254 |
The on-chain economy#
The vault and your in-game account#
One contract, the PlayerVault, holds every player's ¥ and items. The game plays at once and keeps a live copy of each account. It writes the changes to the chain in batches: every 2 minutes, and at once when a player withdraws, lists or trades. The vault checks that its real balance always covers all accounts.
The game's server key can mint finds and drops, burn used items, pay prizes from the rewards pool (never more than it holds) and trade for a player within the price guard. It cannot send an asset to any wallet, choose who gets paid for a sale, mint ¥ or pause a withdrawal.
A battle's chain actions wait until it ends: one record write per Pokémon, one settlement for its drops and uses.
Items#
There are 125 items.
- 26 pool items (balls, potions, revives, vitamins, Rare Candy, repels, Escape Rope and cures) are ERC-20 tokens, one per item. The game and the vault count whole items.
- 81 item NFTs (TMs, stones, X items, drinks, PP items, fossils, the Bicycle, tools, the Nugget and others) are ids of one ERC-1155 collection. They sell on the market at the seller's price.
- 17 story items (rods, HMs, keys, the Parcel and others) are soulbound: minted to your wallet, never transferable, burned when the story uses them.
- 1 item, the Safari Ball, exists only inside the Safari Zone.
Items are minted when the game hands them out and burned when they are used. Found and dropped items are yours at once, with no waiting period.
Pokémon#
Each Pokémon is an ERC-721 token. Its whole record is on chain, readable by anyone.
| Fixed when caught | Changes as it plays |
|---|---|
| Original trainer, time and kind of catch | Species |
| Rarity | Level and experience |
| Purity of all six stats | The four moves and their PP Ups |
| Stat experience, vitamins included |
- Names, types and attributes are built on chain from the record, so explorers and marketplaces show the Pokémon as it is now. The picture is a card pinned on IPFS.
- Evolution keeps the token. The chain checks every step of its Gen 1 line.
- Records are written quickly. Catches, evolutions and moves at once; level and experience when a fight ends.
- The record cannot be rewritten. Rarity, purity, original trainer and catch live in the token and never change. Moving the changing half to a new records contract is proposed publicly and waits 7 days.
Badges and the Hall of Fame#
The eight Gym Badges and the Champion mark are soulbound tokens, minted to your wallet when you earn them, one per wallet per mark, never revoked. Each Champion win also adds a soulbound Hall of Fame entry with the date and the team.
Wardrobe#
Plain looks are free. The Boutique's 39 wearables cost from ¥6,000 to ¥40,000. They are minted to you as tokens and can be sold on the market. The Boutique's takings go to the rewards pool.
Guests#
A guest plays the whole game without a wallet. Its browser makes a key, and the key names an account on chain. The guest's Pokémon are minted to that account when caught, and its ¥ and items are in the vault at once. Nobody holds a key for that account, so nobody can send or withdraw from it. A guest can buy and sell in the Marts and on the market.
When a wallet connects, one claim moves everything to it, once. The claim takes three signatures: the guest's key, the game's and the wallet's.
Deposits and withdrawals#
- Deposit ¥, items and NFTs from your wallet whenever you like, from the Wallet popup or any PC. A deposit is your own transaction: you pay its gas.
- Withdraw from the same places. There is no waiting period. The game writes your account's last changes to the chain, then signs a voucher for the amount you ask, up to your free balance. You send the voucher from your wallet and pay its gas. The vault pays you in that transaction.
- A voucher pays once, only to the account it names and that account's own wallet. One voucher at a time, one a minute. A voucher not sent within 15 minutes expires, and the amount goes back to your account.
- The minimum is ¥1,000 for a voucher that carries ¥. Items and NFTs go in any amount, with or without ¥.
- Pokémon are minted straight to your wallet, so they need no withdrawal.
- Withdrawals are never paused. No admin can stop or hold one.
Rarity and purity#
A Pokémon's rarity and purity are rolled when it is caught, written into its token and never change. Purity sets its stats; rarity raises its purity.
Rarity#
One roll picks the rarity, by these weights. The rarity's bonus is added to each of the six stat rolls.
| Rarity | Chance | Weight | Added to each roll | Purity bonus |
|---|---|---|---|---|
| Common | 79% | 790 of 1,000 | 0 | 0 |
| Uncommon | 15% | 150 of 1,000 | +3 | about +10 |
| Rare | 5% | 50 of 1,000 | +6 | about +19 |
| Epic | 0.8% | 8 of 1,000 | +9 | about +29 |
| Legendary | 0.2% | 2 of 1,000 | +12 | about +39 |
Purity#
- Each stat rolls a whole number from 0 to 31, each number equally likely.
- The rarity's bonus is added, up to 31.
- Purity is that roll on a scale of 0 to 100: round(roll × 100 / 31).
- A stat is floor((2 × base + purity + training) × level / 100) + 5. HP is the same with level + 10 in place of the 5. Training is the stat experience from battles and vitamins.
- In Ranked and Staked Arena matches every Pokémon fights at purity 50 on every stat.
Each purity has a grade. The overall grade, shown in the Pokédex and on the NFT, is the grade of the six purities' average.
| Grade | Purity |
|---|---|
| S | 96 to 100 |
| A | 81 to 95 |
| B | 61 to 80 |
| C | 41 to 60 |
| D | 21 to 40 |
| F | 0 to 20 |
The chance of each grade for one stat:
| Rarity | S | A | B | C | D | F |
|---|---|---|---|---|---|---|
| Common | 6.3% | 15.6% | 18.8% | 18.8% | 18.8% | 21.9% |
| Uncommon | 15.6% | 15.6% | 18.8% | 18.8% | 18.8% | 12.5% |
| Rare | 25% | 15.6% | 18.8% | 18.8% | 18.8% | 3.1% |
| Epic | 34.4% | 15.6% | 18.8% | 18.8% | 12.5% | 0% |
| Legendary | 43.8% | 15.6% | 18.8% | 18.8% | 3.1% | 0% |
The chance of each overall grade:
| Rarity | S | A | B | C | D | F |
|---|---|---|---|---|---|---|
| Common | under 0.01% | 0.49% | 19.5% | 57.8% | 21.6% | 0.62% |
| Uncommon | 0.02% | 3.4% | 42.3% | 48.4% | 5.9% | 0.02% |
| Rare | 0.22% | 11.6% | 61.1% | 26.3% | 0.76% | under 0.01% |
| Epic | 1% | 27.7% | 62.9% | 8.4% | 0.03% | 0% |
| Legendary | 3.5% | 50.4% | 44.9% | 1.2% | under 0.01% | 0% |
How players earn#
| Way | What it pays |
|---|---|
| Drops | Every win over a wild Pokémon rolls once for an item |
| Trainer prizes | ¥ for the first win over each trainer, from the rewards pool |
| Selling items | The pool price less 5% |
| The market | Pokémon, item NFTs and wearables at your own price, less 10% |
| Arena stakes | A staked win takes the pot less 10% |
| Arena challenge trainers | A win pays twice the stake |
| Holding and trading ¥ | ¥ and every item trade on open pools |
Drops#
Every win over a wild Pokémon rolls once. Each item that drops in the area has its own chance, set by its price: an item ten times cheaper drops ten times as often.
The base chance is 1 in round(price × 10,000 / 49,000): 1 in 10,000 for a ¥49,000 vitamin, 1 in 204 for a ¥1,000 Poké Ball. Drops run at 150% of the base chance: a Poké Ball drops 1 in 136, a vitamin 1 in 6,667.
- 71 items drop, across 44 areas, in five stages of the story. Each stage's drop bonus is in The auto-battler.
- The chance is the same for a player, the auto-battler and a bot. There is no daily cap.
- Catching, running, trainers, battles between players and the Arena drop nothing.
- A drop lands in your account as an item you own and can sell at once.
- The live table is in the Pokédex and the Guide. The operator can change the drop settings in the admin page, and every change is logged.
Trainer prizes#
Beating a trainer the first time pays a prize in ¥ from the rewards pool. The game decides who won. The chain caps every prize at what the rewards pool holds.
The market#
Pokémon, item NFTs and wearables sell on one market, priced in ¥, at the seller's price. Listing, repricing and buying use the in-game account and ask for no wallet signature. The market takes 10% of the price, in ¥: half to the rewards pool, half to the item pools' bids. A Pokémon you release is burned.
The Arena#
- Staked battles. Both stakes go into escrow in one step. The winner takes the pot less 10%, and the 10% goes to the rewards pool. A draw or a restart refunds both. A match with no result is refunded after 24 hours. The minimum stake is ¥1,000. Leaving a staked battle is a loss.
- Challenge trainers. Three Arena trainers take stakes of ¥1,000, ¥5,000 and ¥20,000 and pay twice the stake on a win. They pay from a house budget of ¥1,000,000 moved out of the rewards pool. Before you stake you see the trainer's whole team and the odds. A wallet can challenge each trainer once every 4 hours.
The auto-battler#
The auto-battler plays wild battles for you while you are away. You pay up front, by the minute, at the price of the stage of the story where it runs. A session keeps the price it started at. The ¥ goes to the rewards pool.
| Stage | Where in the story | Auto-battler | Drop bonus |
|---|---|---|---|
| 1 | Before Brock | ¥100 a minute | +5% |
| 2 | To Vermilion | ¥325 a minute | None |
| 3 | Lavender to Fuchsia | ¥625 a minute | None |
| 4 | Safari to Cinnabar | ¥875 a minute | None |
| 5 | Victory Road and after | ¥1,075 a minute | +25% |
It buys time, not a return: its wins drop items by the same rolls as anyone's. While it runs there is no blackout penalty.
The rewards pool#
The rewards pool starts with ¥200,000,000, 20% of the supply. It holds ¥199,000,000 now.
It pays trainer prizes and the Arena's house budget.
| Into the pool | From |
|---|---|
| Half of every item-pool fee | The 5% on buys and sells |
| Half of the market fee | The 10% on market sales |
| Shop sales | TMs, stones, X items, drinks, Poké Dolls and wearables bought at the on-chain prices |
| Auto-battler | ¥ per minute, by stage |
| Arena | 10% of every staked pot, and lost challenge stakes |
| Blackouts | The ¥ lost when a whole party faints |
Every sink in the game refills the pool. Prizes and payouts empty it. The bids' half of the fees never leaves the item pools.
Fees at a glance#
| Where | Fee | Paid in | Goes to |
|---|---|---|---|
| Main ¥/ETH pool | 1% | ETH and ¥ | The wallet that owns the UNCX lock, by hand |
| Item pools | 5% on buys, 5% on sells | ¥ | 50% rewards pool, 50% item pools' bids |
| Market | 10% of the price | ¥ | 50% rewards pool, 50% item pools' bids |
| Arena stakes | 10% of the pot | ¥ | Rewards pool |
| Withdrawals and deposits | None from the game | Network gas only |
The game pays the gas for catches, record writes and settlements. Players pay the gas for their own deposits, withdrawals and trades sent from a wallet.
Who controls what#
- Admin is one wallet, the deployer. It can register new vault modules (after a 48-hour wait), pause deposits, and change the item-pool fees within code limits (after 24 hours). It cannot touch any player's balance, stop a withdrawal or mint ¥.
- The game's server key runs the game: it mints what the game hands out, settles batches and signs withdrawal vouchers. It cannot send an asset to a wallet, or move one player's balance to another except through a market sale or an Arena result.
- The operator's levers are the drop settings (rates, the auto-battler's stage prices) and the shop prices, in the admin page. Shop prices are set on chain, and raises wait 24 hours.
- Game results are the server's. A battle cannot be proven on chain, so the server decides who won. The chain limits what that can pay out.
- Locks. The main pool is locked on UNCX. The item pools' positions have no removal function.
Roadmap#
These are in the plan and not yet live.
- Arena seasons. Players ranked by an Elo rating over a season, with prizes by placing.
- Daily tournaments. Players sign up with a team, with rewards by placing.
- Other skill-based programs, each with a budget drawn from the rewards pool and visible on chain: weekly challenges, Pokédex and Hall of Fame milestones, boss events, a Battle Tower, a speedrun ladder, catch contests and referrals. A program can never pay more than its budget.
- Pokémon in vault custody, so Telegram-only players can list Pokémon.
Links#
| Play | pokemon.legacy.mobi |
|---|---|
| Swap items from a wallet | pokemon.legacy.mobi/swap |
| This paper | pokemon.legacy.mobi/whitepaper |
| X | @pokemonlegacyrh |
| Telegram | @pokemonlegacybot |
| Explorer | robinhoodchain.blockscout.com |