Esta página fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.Ver versión en inglés →
LaunchLab soporta tres formas de curva seleccionadas en
Initialize: constant-product (la más común, forma de reserva virtual del estándar x · y = k), linear-price y fixed-price. La fórmula del umbral de graduación se comparte entre las tres. Esta página detalla la matemática de constant-product; las formas lineal y fija se resumen al final.Parámetros almacenados en LaunchState
Los nombres de campo en la estructura Rust coinciden con los campos
PoolState descritos en accounts; las unidades anteriores son conceptuales.
Curva constant-product con reservas virtuales (curve_type = 0)
La curva predeterminada y más utilizada. Todos los lanzamientos estilo Pump usan esta forma. La curva pretende que hay una reserva de quote virtual V_q y una reserva de base virtual V_b desde el inicio (almacenadas como virtual_quote y virtual_base en PoolState), por lo que el pool efectivo se parece a un CPMM con esas reservas. Las compras siguen la matemática x · y = k:
base_out:
s:
x · y = k que LaunchLab aplica pre-graduación es entonces la curva CPMM post-graduación, por lo que la transición es mecánicamente sin problemas: el precio marginal en base_sold = base_supply_graduation es igual al precio al que se abre el pool post-graduación con (quote_vault, base_vault_remaining) como sus reservas.
Curva de precio fijo (curve_type = 1)
Una curva de precio plano. Cada compra/venta ocurre a un precio constante, configurable en Initialize:
base_supply_graduation ha sido vendido (la relación de costo lineal hace que quote_reserve_target sea sencillo de derivar).
Curva de precio lineal (curve_type = 2)
El precio aumenta linealmente con base_sold:
base_sold — los compradores tempranos pagan casi cero, los compradores tardíos pagan sustancialmente más, con el precio marginal siempre aumentando a una pendiente fija. La implementación en cadena vive en curve/linear_price.rs.
Comparación de formas de curva
Umbral de graduación
quote_reserve_target se calcula en Initialize como el quote requerido para impulsar base_sold de 0 a base_supply_graduation:
quote_vault.balance ≥ quote_reserve_target. Debido a que las compras vienen en tamaños discretos, el saldo real en la graduación puede exceder ligeramente el objetivo — el excedente se convierte en liquidez adicional del lado de quote en el pool CPMM resultante.
Ejemplo trabajado — un lanzamiento cuadrático
Parámetros:base_supply_max = 1_000_000_000(1 mil millones de tokens base, 6 decimales)base_supply_graduation = 800_000_000(80% vendido dispara la graduación)k = 40(escala de precio)- Tarifas: 1% compra, 1% venta, divididas
lp:creator:protocol = 60:20:20.
s = 0): 0 (cuadrático puro comienza en cero).
Precio al 50% vendido (s = 500_000_000):
s = 800_000_000):
10 USDC:
- Estado virtual:
s = 0,quote_vault = 0. - Restar tarifa:
quote_after_fee = 10 × 0.99 = 9.9. - Resolver
(40 / (3e18)) × s³ = 9.9⇒s ≈ 6.22e6tokens base comprados. - Tarifa del 1% (
0.1 USDC) dividida: lp0.06, creator0.02, protocol0.02. La parte de lp permanece enquote_vault; las otras dos se enrutan a sus contadores de acumulación respectivos.
s₀ = 750e6 con quote_in_after_fee = 9.9 da aproximadamente ∆s ≈ 0.4e6 — una reducción de ~15× en base por USDC comparado con la primera compra.
Mecánica de tarifas durante la fase de curva
En cadaBuy:
lp_sharese deja enquote_vault. Esto es lo que hace que la curva efectiva sea más ajustada (más reserva de quote contra el mismo suministro de base).protocol_shareincrementaLaunchState.state_data.protocol_fees_quote.creator_shareincrementaLaunchState.state_data.creator_fees_quote.
Sell se aplica la misma división pero la tarifa se toma del quote_out saliente.
Ambos contadores se barren a través de CollectFees (admin o creator, cada uno a su propio contador).
Precisión
- Cantidades del lado base:
u64. - Cantidades del lado quote:
u64. - Cubos / productos intermedios:
u128. - Las resoluciones de Newton para “comprar quote exacto” y “vender quote exacto” iteran en
u128de punto fijo con un conteo máximo de iteraciones configurable (predeterminado 10). El modo de fallo esNotConverged— raro fuera de casos extremos cerca de la graduación.
Transición a CPMM
Cuando se disparaGraduate:
cpmm_initial_price es mecánicamente price(base_sold) (es el precio marginal de la curva en el momento de la transición). El pool CPMM se abre exactamente a ese precio, por lo que un observador que cambia de la UI de curva a la UI de CPMM no ve ningún salto.
Dónde ir a continuación
products/launchlab/accounts— los camposLaunchStateque almacenan estos parámetros.products/launchlab/instructions— listas de cuentas deBuy,Sell,Graduate.algorithms/constant-product— la matemática CPMM que usa el pool post-graduación.
- Módulo
LaunchLabdel SDK de Raydium v2 - Fuente del programa Raydium LaunchLab

