How Satellite works
A satellite is a coin quoted in another coin, its planet. You buy it with the planet token, and every trade pays its fee in the planet token. Part of that fee is burned out of the planet's supply.
Overview
Planet: a coin with at least 5 SOL of liquidity on its curve or pool, registered once by anyone: a pump.fun coin (on its curve or PumpSwap pool, quoted in SOL or in another token), a Meteora DBC coin, a Meteora DAMM v2 pool, a Raydium pool or an Orca Whirlpool against SOL (WIF, PENGU, BONK…). The price source is fixed at registration. For an Orca Whirlpool the liquidity is the SOL and coin actually sitting within −20% / +25% of the price, read from its tick arrays (a donation to the pool does not count), and registering one needs twice the minimum. When the pool is quoted in another token (a stablecoin, a tokenized stock…), that token is priced in SOL on a pool that must itself hold at least as much SOL. A satellite launched here can itself become a planet, down to orbit 3.
Satellite: a coin launched by the program on Meteora's Dynamic Bonding Curve with the planet as the quote token. 1B supply, 6 decimals, Token-2022, no mint or freeze authority, metadata immutable.
Burn feed: anyone can push a satellite's collected fees through the program. In one instruction it burns the planet share from the planet's supply, books the dev share, and sends the buyback, holder and Station shares on.
| STAGE | WHAT HAPPENS | WHO |
|---|---|---|
| Register | A coin becomes a planet with its price source. The program checks the mint is a plain mint (no freeze authority, transfer fee, hook or delegate), every pool by program, token pair and address, and reads its liquidity. Registering a new planet locks a $SATELLITE stake bond. | anyone with a bond |
| Observe | The planet's price is read once a minute into a 16-slot ring. A reading moves at most 10% from the recent median. | anyone (keeper) |
| Planet config | Once 5 readings spanning 4 minutes agree within 9%, the planet gets its Meteora curve config: graduation at 40 SOL worth of planet tokens at the median. | anyone (keeper) |
| Launch | The dev launches a satellite on the planet, with an optional first buy in planet tokens. | dev |
| Trade | Everyone trades the satellite on the curve against the planet token. The 1% fee is kept in the planet token. | traders |
| Feed | Fees are claimed from Meteora and split: planet burn, dev, $SATELLITE buyback, holders, Station. | anyone (keeper) |
| Graduate | At the threshold the curve migrates to a Meteora DAMM v2 pool, 100% of the LP locked to the program forever. LP fees keep feeding the planet. | anyone (keeper) |
| Claim | The dev share goes to the dev's wallet, in the planet token. | anyone pushes, only the dev receives |
Routes: trading needs the planet
A satellite has no SOL pool. To buy it you first hold its planet. The site does every hop for you, one signed swap per hop:
- Buy: open a satellite, pick an amount of SOL, press "Buy through the route". The first hop buys the root planet with SOL; every next hop spends all of what the previous one brought.
- Slippage guard: every hop is quoted just before you sign it (on the curve with Meteora's own swap math, after graduation by simulating the DAMM v2 swap) and sent with a minimum out of the quote less 0.5%, 1% or 3% (you pick; 1% by default). If the price moved more than that, the swap fails and nothing is spent. A buy bigger than what is left on a curve buys what is left and the rest stays in your wallet.
- Sell: a satellite sells into its planet token. Sell the planet on its own market (pump.fun, PumpSwap, or its own curve if it is a satellite too) to get back to SOL.
- Aggregators: Meteora DBC and DAMM v2 pools are indexed by Jupiter and trading terminals, so SOL → planet → satellite routes also work outside this site.
- Every hop of a route pays its own fee, and every one of those fees feeds the coin below it.
Launch, step by step
- Pick a planet that shows its orbit level. A planet still collecting price readings shows "warming up".
- Name (up to 32 bytes), ticker (1–10 letters or digits), picture. The picture and metadata go to IPFS; the program accepts only IPFS links.
- First buy: none, or a share of the planet tokens you hold. There is no fee on the first buy.
- Pay the 0.05 SOL launch fee, which goes to the Station (−25%, −50% or free with a staking tier).
- One transaction creates the Meteora pool (you are its creator), makes the first buy, pays the launch fee and records the satellite. It must be alone in its transaction, so nobody can bundle a snipe in front of your first buy.
Fees and the burn
Every trade on a satellite pays 1% in the planet token. Meteora keeps 20% of every trading fee; the program claims the other 80% and splits it by the satellite's stage, the same way at any hour:
| STAGE | TRADING VOLUME | PLANET BURN | DEV | $SATELLITE BUYBACK | HOLDERS OF THE COIN | STATION |
|---|---|---|---|---|---|---|
| Liftoff | 0 – 1 SOL | 30% | 30% | 13% | 5% | 22% |
| Low orbit | 1 SOL | 30% | 30% | 13% | 8% | 19% |
| Mid orbit | 5 SOL | 30% | 30% | 13% | 12% | 15% |
| High orbit | 15 SOL | 30% | 30% | 13% | 16% | 11% |
| Deep space | 40 SOL or graduated | 30% | 30% | 13% | 20% | 7% |
- Planet burn: a Token-2022 burn of the planet's supply, in the feed itself.
- Dev: booked in the planet vault, claimable any time, only to the dev. A dev with staked $SATELLITE gets up to 35% on the coins they launch; the extra comes out of the Station share.
- $SATELLITE buyback: the treasury sells it for SOL; half buys $SATELLITE and burns it, half buys $SATELLITE and adds it with SOL to the $SATELLITE pool, with the LP tokens burned (permanent liquidity). This is the one place $SATELLITE is burned besides the Hangar.
- Holders of the coin: the coin's top holders (at least 0.1% of supply) receive this share from the very first stage, pro rata, paid in the coin itself, bought back from its own pool every 6 hours.
- Station: the platform reserve, described below.
The Station
The Station share goes to the Station wallet, and so does the 0.05 SOL launch fee. Its keeper sells the planet tokens, keeps 5% as SOL for keeper gas, buys $SATELLITE on the market (refused when the price is more than 5% off the on-chain median) and funds the Station. Each funding is split on chain into three reserves: 65% crew share, 23% cashback, 12% graduation bonus. Nothing is burned there.
Crew share: once a day the whole crew-share reserve is split between every $SATELLITE holder with at least 100,000 $SATELLITE, pro rata. A holder counts at the lowest balance they had in that UTC day (sampled every 2 hours, wallet plus Station stake). Pools, program accounts, the treasury and keepers are left out. Cashback: a staker who trades satellites gets 10% / 25% / 50% of the trading fees they paid back in $SATELLITE, by tier, posted once a day. Graduation bonus: when a satellite graduates, 5% of the graduation reserve goes to its top holders.
Staking is access, not income. Launch fee discount: −25% from 1M, −50% from 5M, free from 20M staked. Dev boost: +2% (from 1M) or +5% (from 5M) on every satellite you launch, forever. Cashback tier: 10% / 25% / 50%. Planet registration bond. A deposit counts after a 24 h warm-up; unstaking takes 7 days and drops your tier at once; an optional 30 or 90 day self-lock only stops you from unstaking earlier.
Distributions are merkle trees: the program stores each root, the full tree is public, a guardian can veto a wrong one during its first 6 hours, then claims stay open for 30 days. Unclaimed cashback and bonuses go back to their reserve; an unclaimed crew share is burned after 30 days. Nothing here is a promise of any return.
Open the Station →Graduation
Each planet has one curve config. It sets the graduation threshold at 40 SOL worth of planet tokens at the planet's median price (within 10%), capped at 50% of the planet's supply. The price rises 4x from start to graduation and a third of the satellite's supply migrates, so a new satellite starts at a market cap of about 30 SOL (3/4 of the graduation value) and reaches the open market after 40 SOL of buys.
At the threshold anyone runs Meteora's migration into a DAMM v2 pool (satellite / planet). 100% of the LP is locked to the program's relay account with no withdraw path. Nobody can create that pool first: only Meteora's pool authority can. After graduation the locked LP's fees (in the planet token) are fed exactly like curve fees.
If a planet's price moves 2x, a new config can replace the stale one for new launches. Existing satellites keep the config they launched with.
Parameters
Planned values for the first deployment. The live values will be read from the program once it is deployed.
| PARAMETER | AT LAUNCH | BOUNDS IN THE PROGRAM |
|---|---|---|
| Trading fee of new planet configs | 1% | 0.25 – 5% |
| Fee split of the claimed fee | by stage (see Fees) | planet burn always at least 20% |
| Launch fee | 0.05 SOL to the Station | staker discounts −25% / −50% / free |
| Fee on the first buy | 0% | 0 – 5% |
| Minimum planet liquidity | 5 SOL (Orca Whirlpool: 10 SOL) | 1 – 10,000 SOL |
| Graduation value | 40 SOL | 5 – 2,000 SOL |
| Curve of new planet configs | 4x, 1/3 migrates | fixed in the program |
| Graduation price band | 10% | 1 – 30% |
| Maximum orbit depth | 3 | 1 – 3 (hard cap 3) |
| Graduation target cap (of planet supply) | 50% | 1 – 50% |
| Paused | no | pause stops new planets, configs and launches only |
Constants: price readings at most one per 60 s, 5 readings for a median, readings older than 30 min ignored, a reading moves at most 10%, a config needs readings spanning 4 min within 9%, a feed needs at least 1,000 planet base units waiting. Parameters are copied into every satellite at launch; a later change never touches it.
Program reference
Satellite program: address published at deployment. Built with Anchor. It runs on top of Meteora DBC dbcij3LWUppWqq96dh6gJWwBifmcGfLSB5D4DuSMaqN and Meteora DAMM v2 cpamdpZCGKUy5JxQXB4dcpGPiikHawvSWAd6mEn1sGG.
Accounts
| ACCOUNT | SEEDS | HOLDS |
|---|---|---|
| Config | ["config"] | admin, pending admin, treasury, paused, params, counters |
| Relay | ["relay"] | no data: Meteora fee claimer of every planet config and owner of the locked LP; its token accounts are pass-throughs |
| Planet | ["planet", mint] | kind, orbit, curve config, threshold, satellites, fed, burned, dev booked / claimed, volume, price ring |
| Planet vault | ATA(planet, mint) | dev shares booked and not yet claimed |
| PlanetSrc | ["src", mint] | the declared price source of a planet: pool, quote token, SOL reference; never changes |
| Satellite | ["sat", mint] | planet, dev, pool, orbit, copied split, stage, fed, burned, dev earned / claimed, graduation, name / ticker / uri |
| Station | ["station"] | reserves, distribution roots, stakes and bonds |
Instructions
| INSTRUCTION | WHO CAN CALL | DOES |
|---|---|---|
register_planet | anyone with a bond | pump.fun (SOL) or Satellite coin: plain-mint check, liquidity check, first price reading; alone in its transaction |
register_planet_src | anyone with a bond | any other supported pool with its SOL reference, pinned forever; same checks |
observe | anyone | clamped price reading (only other readings may share its transaction) |
set_planet_config | anyone | accepts a Meteora config only if every field is Satellite's and the threshold matches the median |
launch | the dev | Meteora pool + first buy + launch fee; alone in its transaction |
feed / feed_amm | anyone | claim fees from Meteora and split them by stage |
graduate | anyone, once | records the DAMM v2 pool after Meteora's migration and checks the relay holds the locked LP |
claim_dev | anyone pushes | booked dev share to the dev's own token account only |
stake / unstake / claim | holders | Station staking, tiers and merkle claims |
update_config, set_treasury, set_paused, propose_admin / accept_admin | admin | future params, treasury, pause, two-step handover |
set_planet_disabled | admin | closes (or reopens) one planet to new launches and configs; its satellites keep trading and feeding |
Errors
Error codes the program will return. Codes are final at deployment.
| CODE | NAME | WHAT IT MEANS |
|---|---|---|
| 6000 | Unauthorized | Only the admin can do this |
| 6001 | Paused | Satellite is paused: no new planets or coins right now (trading, feeding and claims still work) |
| 6002 | BadConfig | Config value out of its allowed range |
| 6003 | ParamsChanged | The platform settings changed since you looked: reload and check the fees |
| 6004 | BadName | Name must be 1–32 bytes, no control or invisible characters, no leading or trailing spaces |
| 6005 | BadSymbol | Ticker must be 1–10 characters, no spaces, control or invisible characters |
| 6006 | BadUri | The metadata link must be an IPFS link (ipfs://<cid> or https://ipfs.io/ipfs/<cid>), at most 200 bytes |
| 6007 | BadAccounts | Wrong account passed |
| 6008 | BadKind | Unknown planet kind |
| 6009 | UnsafePlanetMint | This coin cannot be a planet: it has a freeze authority or a token extension (transfer fee, hook, delegate…) that could block burns or seize fed tokens |
| 6010 | PlanetTooThin | The planet has too little liquidity |
| 6011 | PlanetTooSmall | The planet is too small: the graduation target would need too much of its supply |
| 6012 | NoPrice | No price for this planet |
| 6013 | TooDeep | Too deep: a chain can be at most 3 satellites long |
| 6014 | SelfOrbit | A coin cannot orbit itself |
| 6015 | PlanetNotReady | This planet has no curve config yet: set one first |
| 6016 | WrongDbcConfig | The curve config does not match the planet's current one |
| 6017 | BadDbcConfig | The curve config is not the one Satellite runs (quote, fee claimer, fee, supply, curve shape or migration differ) |
| 6018 | BadThreshold | The graduation threshold is not the configured SOL value of planet tokens at the planet's median price |
| 6019 | ConfigNotStale | The planet already has a curve config that is still fine (it can be replaced once the price moved 2x) |
| 6020 | BadDbcAccount | Not a valid Meteora bonding-curve account for this coin |
| 6021 | BadDammAccount | Not a valid Meteora DAMM v2 account for this coin |
| 6022 | StaleMedian | Not enough recent price observations for this planet (wait a few minutes, the keeper observes every minute) |
| 6023 | ShortPriceHistory | The price observations do not span enough time yet |
| 6024 | PriceUnstable | The planet's price is moving too much right now: try again later |
| 6025 | ParentStale | The parent planet has no fresh median price: observe it first |
| 6026 | ObserveTooSoon | Too soon: one price observation per minute |
| 6027 | NotAlone | This instruction must be alone in its transaction |
| 6028 | NothingBought | The first buy returned no tokens (or fewer than your minimum) |
| 6029 | NothingToFeed | Not enough fees to feed yet |
| 6030 | NotMigrated | The bonding curve has not migrated yet |
| 6031 | AlreadyGraduated | Already graduated |
| 6032 | NotGraduated | Not graduated yet |
| 6033 | GraduateFirst | The coin migrated: record its graduation first |
| 6034 | NotOurPosition | The locked LP position is not held by Satellite's relay |
| 6035 | NothingToClaim | Nothing to claim |
| 6036 | Math | Math overflow |
| 6037 | BadSource | Not a valid price source for this coin (pool program, token pair, derivation or state) |
| 6038 | BadReference | Not a valid SOL reference for the pool's quote token |
| 6039 | ReferenceTooThin | The SOL reference of the quote token is too thin (or has no active liquidity) |
| 6040 | PlanetDisabled | This planet is disabled: no new launches or curve configs on it (its satellites keep trading and feeding) |
| 6041 | PlanetInUse | This planet has satellites or fed fees: it cannot be reset |
| 6042 | StationMissing | The Station accounts are missing |
| 6043 | BadStationParams | Bad Station params |
| 6044 | BadLock | Lock must be 0, 30 or 90 days |
| 6045 | StakeTooSmall | Stake at least 1 $SATELLITE |
| 6046 | StakeLocked | This stake is locked (or bonded) for now |
| 6047 | Cooling | Still cooling down |
| 6048 | BadDist | Bad distribution |
| 6049 | BadProof | Proof does not match the distribution |
| 6050 | TooEarly | Too early |
| 6051 | TooLate | Too late |
| 6052 | ReserveTooLow | Not enough in that reserve |
| 6053 | BondTooLow | Registering a planet needs a staked $SATELLITE bond |
| 6054 | PlanetBonded | This planet still holds a bond |
| 6055 | PlanetNotDisabled | Only a disabled planet's bond can be slashed |
Verify it on chain
- Pick any planet and open its mint on an explorer: its supply is lower than its starting supply by exactly the burned total the site shows.
- The relay's planet-token accounts hold the same before and after every feed: nothing sits there.
- A satellite's pool config names the relay as fee claimer and leftover receiver, creator fee share 0, LP 100% permanently locked.
- Every number on the site comes from the program's accounts and events (Launched, Fed, Graduated, PlanetRegistered) through a public RPC. The treasury and admin addresses will be published here at deployment.
What the admin can and cannot do
| CAN | CANNOT |
|---|---|
| pause new planets, planet configs and launches | stop feeds, dev claims or trading |
| close one planet to new launches (a scam or dead coin) | touch the satellites already on it, their pools or their fees |
| change params within the bounds above, for future configs and launches | change the split, fee or threshold of an existing satellite |
| change the treasury (shares are paid at feed time, nothing is stranded) | move planet-vault tokens, fees, curve reserves or the locked LP |
| hand over admin in two steps | unlock the graduated LP: it has no withdraw path |
Risks and honest limits
- The Satellite program is not deployed or audited yet. Do not send funds to any address claiming to be Satellite until it is announced here and on X.
- Meteora DBC and DAMM v2 are upgradeable by Meteora. Curve reserves, fees not yet fed and the locked LP live in their programs. Satellite reads their accounts with owner, discriminator and layout checks and refuses anything unexpected.
- Graduation is set in planet tokens at launch time: if the planet rises, graduating costs more in SOL; if it falls, less.
- Prices of satellite planets are chained medians. A thin planet can be pushed up to 10% per reading; configs only land on a settled price.
- A slow keeper only delays burns: fees wait in Meteora and anyone can feed them from the site.
- The flat 1% fee has no anti-sniper schedule. Your first buy is in the launch transaction and nothing can be bundled with it; the next slot trades on the same curve as everyone.
- Each hop of a route is simulated first and the route stops if a hop brings nothing. Use small amounts on thin planets.
- Memecoins are highly volatile. Nothing on this site is investment advice or a promise of any return.
FAQ
Is Satellite live?
Not yet. The program is being built and will be audited before launch. Until then every counter on the site reads zero.
Why would a planet holder like this?
Every satellite that trades burns their coin. The planet needs to do nothing.
Can I launch a satellite of a satellite?
Yes, once the satellite is registered as a planet and has its price readings, down to orbit 3. Its fees then burn the satellite it orbits.
Where is my dev share?
In the planet token, booked to you at every feed. "Mine" shows it; one button claims everything.
What happens if the site goes down?
Nothing on chain changes. The pools trade on Meteora, and the feeds and claims are open instructions anyone can send.
Where does the $SATELLITE CA get published?
Only on this site and on the official Satellite X account, at launch.