Protocol
DBC mechanics
Meteora DBC prices a launch along a configured curve. Two quantities are easy to confuse: the virtual reserves that define the price, and the real quote reserve that traders actually deposit. Graduation is decided by the real one.
Virtual reserves vs real quote reserve
quoteReserve on the pool account and held in the pool's quote vault. It starts at zero and grows by the post-fee amount of every buy.SOURCE CODEDBC SDK math, curve.ts
Step by step: HOUSE / USDX
- HOUSE launches. Price starts at the configured start price; the real quote reserve is 0 USDX. The start price comes from the config, not from any deposit.
- Alice buys HOUSE with 100 USDX. After the fee, about 98.4 USDX enters the curve and the real quote reserve becomes that amount.
- Bob buys with 500 USDX. The real quote reserve grows again; the price has moved up along the curve.
- When the real quote reserve reaches the migration threshold, swaps stop at the migration price and the market can migrate.
- The resulting DAMM v2 pool holds the real base and real quote tokens: an actual HOUSE / USDX pair.
Quote vault vs quote reserve
The quote vault also holds accrued fees until they are claimed, so its balance exceeds quoteReserve. On the USDX fork run, at curve completion the reserve was 2.685606 USDX and the vault held 2.72937 USDX. FORK PROOF
Curve math
DBC stores prices as square roots in Q64.64 fixed point. Within one curve segment with liquidity L, moving the sqrt price from √Pa to √Pb exchanges exact amounts of each token.
Worked example: HOUSE / USDX
SIMULATIONSIMULATION: Primer Standard v1 production config for USDX, Meteora DBC SDK quote math, steady-state fee
The numbers below come from the Meteora DBC SDK quote functions run against the Primer Standard v1 production config for USDX. Start market cap $5,000, migration market cap $60,000, migration threshold 13,440.55 USDX.
| Trader | USDX in | HOUSE received | Average price | Price after | Real quote reserve | Graduation | Base sold total |
|---|---|---|---|---|---|---|---|
| Trader A | 100 | 19,326,438 | 0.000005174 | 0.000005182 | 98.375 | 0.73% | 19,326,438 |
| Trader B | 250 | 45,447,283 | 0.000005501 | 0.000005651 | 344.3125 | 2.56% | 64,773,721 |
| Trader C | 500 | 80,233,941 | 0.000006232 | 0.000006651 | 836.1875 | 6.22% | 145,007,663 |
Price vs real quote reserve
The curve is steepest late: each additional USDX near the threshold moves the price more than at launch. The green points are the three early trades from the table.
Migration threshold
migrationQuoteThresholdis fixed in the config. A swap that would cross it is filled only up to the migration price; PrimerPad uses the SDK's PartialFill swap mode for the final buy so the curve completes exactly. FORK PROOF- Once
quoteReserve ≥ migrationQuoteThreshold, the pool is curve complete and migration to DAMM v2 becomes possible. The instruction is permissionless. SOURCE CODE - Thresholds are normalised per quote asset: the Primer Standard targets market caps in USD and converts them at the quote's raw-unit price. See graduation feasibility for why some Primitives use a scaled profile.
See also: Launch lifecycle, Glossary: virtual reserve