Everything about Ovus, in one place.
Ovus is a non-custodial bonding-curve launchpad on Solana. This page covers how launches, trading, migration, fees, and refunds actually work on-chain, plus what you need to build an integration against it.
Overview
Ovus is a place to launch and trade tokens on Solana. You browse launches, open any token to see its bonding-curve progress, and trade straight from your wallet.
Ovus never holds your funds. Every launch, buy, claim, and refund is a transaction your wallet asks you to approve.
Launch mechanism
Creating a launch deploys the token mint and its bonding-curve pool in a single signature. The creator sets the name, symbol, image, description, links, and can optionally bundle a first dev buy into the same transaction.
Every token launches with a fixed total supply of 1,000,000,000 tokens and trades only against SOL, inside its own bonding curve — there is no external liquidity pool yet. A flat … SOL launch fee is paid once, at creation, separate from any trading fee.
Each curve self-calibrates: at creation, Ovus reads the live SOL/USD price from Pyth and derives the exact virtual SOL reserves needed so the curve's migration point lands on a target USD market cap — no manual recalibration needed as SOL's price moves between launches.
The mint and bonding-curve pool are created in one transaction, self-calibrated to today's SOL price.
Buys move the curve and the price. The curve is buy-only pre-migration — there is no sell instruction on it.
Once the SOL target is reached, liquidity migrates to a new, permanently-locked Raydium CPMM pool.
Launch protection: tokens bought within the first 30% of total supply sold are locked (subject to post-migration vesting tiers). Creator/dev-bundle wallets can be locked up to a separate, higher cap — anything a dev buys past that cap is unlocked immediately, by design.
Trading & pricing
Pre-migration, every token trades against SOL on a constant-product bonding curve (the same x·y=k shape as a Uniswap-style AMM). The price you see is the live curve price, and it moves with every buy.
- Price
- The current bonding-curve spot price for one token.
- Market cap
- Price multiplied by circulating (sold) supply.
- Migration progress
- real_sol_reserves ÷ migration_quote_threshold.
- Price impact
- The curve movement caused by the size of your buy.
- Slippage
- The minimum tokens-out your transaction will still accept.
- Curve reserves
- SOL and tokens actually escrowed in the curve, live.
There is no sell on the pre-migration curve by design — the only ways SOL leaves a curve before migration are a successful graduation or a refund on a failed launch.
Graduation
A launch graduates once its curve's real_sol_reserves reaches the pool's self-calibrated migration_quote_threshold. Graduation confirms the target was reached — it is not a quality signal and does not guarantee future liquidity, price, or an exit.
At migration, 100% of the collected SOL (including any AddLiquidity-mode donations) and the remaining unsold token supply seed a brand-new Raydium CPMM pool. The LP position is permanently burned — nobody, including Ovus, can withdraw it. Trading continues in that Raydium pool from then on; nothing about the token or its holders moves again.
Post-migration, buy and sell trade against the same Raydium pool at the same rate — see Fees below for the exact split.
Fees
Every fee below is either read live from the on-chain admin config (so this page can't go stale the way hardcoded copy has before) or a compile-time program constant with no update instruction at all. Full worked examples live on the Fee Schedule page.
| Fee | Rate | Applies to |
|---|---|---|
| Platform trade fee | …% | Every bonding-curve buy |
| Creator trade fee | …% | Every bonding-curve buy |
| Launch fee | … SOL flat | Once, at pool creation |
| Refund processing fee | 0.8% | Refund on a failed launch |
| Donation fee | 10% | Every donation (burn or add-liquidity) |
| Raydium swap fee (post-migration) | 1.495% | Every swap, buy or sell — same rate |
| ↳ creator share | ≈1.000% | of swap volume |
| ↳ platform share | ≈0.495% | of swap volume |
Account rent for the ~7 new on-chain accounts a launch creates (≈… SOL) is a separate, one-time Solana network cost — it is not platform or creator revenue. A buy that goes fully into the curve nets …% of what you send.
Protocol revenue
Everything routed to the platform (the platform's share of trade fees, donations, and post-migration Raydium fees) accumulates in one on-chain vault and is split on a permissionless crank, by a fixed ratio hardcoded at deploy time — no admin instruction can change it afterward.
The platform wallet is paid last, absorbing whatever integer-division rounding leaves over, so dust never gets stuck.
Refund protection
If a launch doesn't reach its migration target before the deadline, every contributor can claim an automated on-chain refund of their contribution — no action needed beyond signing the claim, and anyone can permissionlessly crank refunds on a contributor's behalf.
This is not a 100% refund. The …% trade fee already paid on each buy is non-refundable (it left the curve for the creator/platform vaults the moment you bought), and a further 0.8% refund-processing fee applies to what's left. Net effect: ≈…% of your original contribution comes back.
Risk disclosures
Tokens launched through Ovus are user-created and experimental. Review the mint address, creator, curve progress, and transaction preview before signing anything.
- Prices can move quickly and curve/pool liquidity can be thin.
- Similar names and images can represent unrelated tokens — always check the mint address.
- Smart contracts, wallets, RPCs, and indexers can fail or be congested.
- Displayed values are estimates, not execution guarantees — actual fills can differ via slippage.
- A failed launch returns ≈…% of your contribution, not 100% — see Refund protection above.
Ovus is an interface to non-custodial smart contracts, not investment advice or a representation of any token's quality.
Network
Ovus runs on Solana. Devnet is the current active deployment; mainnet addresses below are compiled into the programs but not yet live — check back before building against them.
Programs
Ovus is split into two on-chain programs: launch_pad (bonding-curve business logic and migration — stays upgradeable) and fee_controller (fee-ceiling enforcement and all SOL fee routing — intended to have its upgrade authority revoked once fully verified on mainnet).
Onchain events
Index these Anchor events off launch_pad for a trust-minimized integration.
| Event | Emitted when |
|---|---|
| PoolCreated | A new token + bonding curve is launched |
| BuyEvent | A buy executes against a curve |
| DonateEvent | A donation (burn or add-liquidity mode) is made |
| Migrated | A curve graduates to Raydium CPMM |
| LaunchFailed | A launch is marked failed after its deadline |
| Refunded | A contributor claims their refund |
| TokensClaimed | Locked tokens are claimed after unlock |
Reading pool state
Every pool is a PDA derived from its mint. Fetch and decode it directly with the program's Anchor IDL — no off-chain indexer required for the current state.
import { PublicKey } from "@solana/web3.js";
const LAUNCH_PAD_PROGRAM_ID = new PublicKey(
"EDadQntR13ehBMgyXFRw6iAiPzbfwDpPuhFXa2w3R58C" // devnet
);
function derivePoolPda(mint: PublicKey) {
const [pool] = PublicKey.findProgramAddressSync(
[Buffer.from("pool"), mint.toBuffer()],
LAUNCH_PAD_PROGRAM_ID
);
return pool;
}
// Decode with the program's own Anchor IDL:
const pool = await program.account.bondingCurvePool.fetch(poolPda);
console.log(
pool.realSolReserves.toString(),
pool.migrationQuoteThreshold.toString(),
pool.status // 0 Active, 1 Migrated, 2 Failed
);A contributor's own position (tokens bought, SOL spent, lock/refund status) is a second PDA: ["buyer", pool, buyer].
Pricing & migration math
Reproduce the curve's constant-product pricing off-chain for a live quote before signing:
function tokensOutForSol(
virtualSol: bigint,
virtualToken: bigint,
solIn: bigint,
): bigint {
const k = virtualSol * virtualToken;
const newVsol = virtualSol + solIn;
const newVtok = k / newVsol; // floors, same as on-chain
return virtualToken - newVtok;
}Graduation is a single comparison: a pool is ready to migrate once real_sol_reserves >= migration_quote_threshold — both fields are readable directly off the pool account above, so progress is just real_sol_reserves / migration_quote_threshold.
Support
Ovus is under active development. Support channels for integrators will be listed here once the project has an official public presence — for now, everything you need to build against it is on this page and in the smart-contract source.
Terms & attribution
Onchain data is public and free to read; you are responsible for how you use it. Ovus is provided as-is — see the Terms of Service and Privacy Policy for the full legal terms, including the current refund and fee disclosures.