The virtual bonding curve.
Trading can begin without creator-seeded liquidity. Real buys still fund every real payout.
In this guide
Virtual reserves price the coin
A virtual curve uses synthetic token and quote reserves to define its initial price and how price changes with trades. These values are pricing state. They are not extra minted tokens or a deposit of SOL that someone can withdraw.
Pump’s public program documentation describes a synthetic-reserve launch mechanism without seeded liquidity. RalliPad follows that product pattern; using the same pattern does not mean that Pump’s deployed program supports RalliPad’s custom community reserve.
| Quantity | What it means |
|---|---|
| Virtual token / SOL reserves | Inputs to pricing. They cannot be treated as withdrawable inventory. |
| Real sale tokens | Minted tokens actually available for buyers on the curve. |
| Real trading SOL | Accounted buyer funding remaining after sells; the source of sell payouts. |
| Rewards / liquidity / fees | Separate accounting buckets with separate permitted uses. |
Buys add funds. Sells remove them.
A buy transfers real quote assets into trading custody and transfers real tokens out of the sale inventory. A sell returns tokens and receives real quote assets, subject to available reserves, fees and slippage. Sells can reverse progress before curve completion.
In the reference constant-product model, buying reduces the virtual token reserve and increases the virtual quote reserve. The marginal price rises. Selling moves those reserves in the opposite direction. A user’s average execution price includes the effect of the whole trade and fees.
Native reference math
These formulas describe the native reference design, not an executable quote for LaunchLab or another engine. X and Y are effective virtual reserves, Q is accounted real SOL, and d is a token amount in base units. Fees are tracked separately.
net_SOL_in = ceil(Y × d / (X − d))
X_next = X − d
Y_next = Y + net_SOL_in
Q_next = Q + net_SOL_ingross_SOL_out = floor(Y × d / (X + d))
require gross_SOL_out ≤ Q
X_next = X + d
Y_next = Y − gross_SOL_out
Q_next = Q − gross_SOL_outUse checked integer arithmetic. Validate the sale limit, positive output, user price bounds and fee order. Pool-favoring rounding can increase the reserve product slightly; an old unrounded invariant must not be reused as if every trade preserved it exactly.
When using an external engine, its verified program and pinned quote implementation determine execution. Do not substitute this explanatory math for the engine’s instructions.
Progress is not volume or market cap
The selected engine’s published completion rule determines graduation readiness. The native reference uses exhausted net sale inventory. Gross turnover, a front-end energy meter and price multiplied by supply are not measures of spendable liquidity.
Curve completion and successful migration are distinct facts. A completed curve can be awaiting pool creation. The reward reserve must stay protected through both states.
