Cette page est traduite automatiquement par IA. La version anglaise fait foi.Voir la version anglaise →
LaunchLab supporte trois formes de courbe sélectionnées à
Initialize : constant-product (la plus courante, forme de réserve virtuelle de la courbe standard x · y = k), linear-price, et fixed-price. La formule du seuil de graduation est partagée entre les trois. Cette page détaille les mathématiques du constant-product ; les formes linéaire et fixe sont résumées à la fin.Paramètres stockés sur LaunchState
Les noms de champs dans la struct Rust correspondent aux champs
PoolState décrits dans accounts ; les unités ci-dessus sont conceptuelles.
Courbe constant-product avec réserves virtuelles (curve_type = 0)
La courbe par défaut et la plus utilisée. Tous les lancements de style Pump utilisent cette forme. La courbe prétend qu’il existe une réserve de quote virtuelle V_q et une réserve de base virtuelle V_b dès le départ (stockées comme virtual_quote et virtual_base sur PoolState), de sorte que le pool effectif ressemble à un CPMM avec ces réserves. Les achats suivent les mathématiques x · y = k :
base_out :
s :
x · y = k que LaunchLab applique avant la graduation est alors la courbe CPMM après la graduation, de sorte que la transition est mécaniquement transparente : le prix marginal à base_sold = base_supply_graduation est égal au prix auquel le pool post-graduation s’ouvre avec (quote_vault, base_vault_remaining) comme réserves.
Courbe fixed-price (curve_type = 1)
Une courbe à prix plat. Chaque achat/vente se fait à un prix constant, configurable à Initialize :
base_supply_graduation a été vendu (la relation de coût linéaire rend quote_reserve_target simple à dériver).
Courbe linear-price (curve_type = 2)
Le prix augmente linéairement avec base_sold :
base_sold — les premiers acheteurs paient près de zéro, les derniers acheteurs paient beaucoup plus, le prix marginal augmentant toujours à une pente fixe. L’implémentation on-chain se trouve dans curve/linear_price.rs.
Comparaison des formes de courbe
Seuil de graduation
quote_reserve_target est calculé à Initialize comme le quote requis pour faire passer base_sold de 0 à base_supply_graduation :
quote_vault.balance ≥ quote_reserve_target. Comme les achats arrivent en tailles discrètes, le solde réel à la graduation peut légèrement dépasser la cible — l’excédent devient une liquidité supplémentaire du côté quote dans le pool CPMM résultant.
Exemple détaillé — un lancement quadratique
Paramètres :base_supply_max = 1_000_000_000(1 milliard de jetons de base, 6 décimales)base_supply_graduation = 800_000_000(80% vendus déclenchent la graduation)k = 40(échelle de prix)- Frais : 1% achat, 1% vente, répartition
lp:creator:protocol = 60:20:20.
s = 0) : 0 (la quadratique pure commence à zéro).
Prix à 50% vendu (s = 500_000_000) :
s = 800_000_000) :
10 USDC :
- État virtuel :
s = 0,quote_vault = 0. - Soustraire les frais :
quote_after_fee = 10 × 0.99 = 9.9. - Résoudre
(40 / (3e18)) × s³ = 9.9⇒s ≈ 6.22e6jetons de base achetés. - Frais de 1% (
0.1 USDC) répartis : lp0.06, creator0.02, protocol0.02. La part lp reste dansquote_vault; les deux autres vont vers leurs compteurs d’accumulation respectifs.
s₀ = 750e6 avec quote_in_after_fee = 9.9 donne environ ∆s ≈ 0.4e6 — une réduction d’environ 15× en base par USDC comparé au premier achat.
Mécanique des frais pendant la phase de courbe
À chaqueBuy :
lp_sharereste dansquote_vault. C’est ce qui rend la courbe effective plus serrée (plus de réserve de quote contre la même offre de base).protocol_shareincrémenteLaunchState.state_data.protocol_fees_quote.creator_shareincrémenteLaunchState.state_data.creator_fees_quote.
Sell, la même répartition s’applique mais les frais sont prélevés sur le quote_out sortant.
Les deux compteurs sont balayés via CollectFees (admin ou créateur, chacun vers son propre compteur).
Précision
- Montants côté base :
u64. - Montants côté quote :
u64. - Cubes / produits intermédiaires :
u128. - Les résolutions Newton pour « acheter quote exact » et « vendre quote exact » itèrent en
u128virgule fixe avec un nombre d’itérations maximum configurable (par défaut 10). Le mode d’échec estNotConverged— rare en dehors des cas limites proches de la graduation.
Transition vers CPMM
QuandGraduate se déclenche :
cpmm_initial_price est mécaniquement price(base_sold) (c’est le prix marginal de la courbe au moment de la transition). Le pool CPMM s’ouvre exactement à ce prix, de sorte qu’un observateur passant de l’interface de courbe à l’interface CPMM ne voit aucun saut.
Où aller ensuite
products/launchlab/accounts— les champsLaunchStatestockant ces paramètres.products/launchlab/instructions— listes de comptesBuy,Sell,Graduate.algorithms/constant-product— les mathématiques CPMM que le pool post-graduation utilise.
- Raydium SDK v2
LaunchLabmodule - Source du programme Raydium LaunchLab

