Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
LaunchLab unterstützt drei Kurvenformen, die bei
Initialize ausgewählt werden: constant-product (die häufigste, Virtual-Reserve-Form der Standard-x · y = k Kurve), linear-price und fixed-price. Die Graduierungsschwelle ist für alle drei Formen identisch. Diese Seite erläutert die Mathematik der Constant-Product-Kurve im Detail; die linearen und festen Formen werden am Ende zusammengefasst.Parameter auf LaunchState
Feldnamen in der Rust-Struktur entsprechen den
PoolState-Feldern, die in accounts beschrieben sind; die Einheiten oben sind konzeptionell.
Constant-Product-Kurve mit Virtual Reserves (curve_type = 0)
Die Standard- und am häufigsten verwendete Kurve. Pump-ähnliche Launches verwenden alle diese Form. Die Kurve geht davon aus, dass es von Anfang an eine virtuelle Quote-Reserve V_q und eine virtuelle Base-Reserve V_b gibt (gespeichert als virtual_quote und virtual_base auf PoolState), sodass der effektive Pool wie ein CPMM mit diesen Reserves aussieht. Käufe folgen der x · y = k Mathematik:
base_out:
s:
x · y = k Invariante, die LaunchLab vor der Graduierung anwendet, ist dann die CPMM-Kurve nach der Graduierung, sodass der Übergang mechanisch nahtlos ist: Der Grenzpreis bei base_sold = base_supply_graduation entspricht dem Preis, zu dem der Post-Graduierungs-Pool mit (quote_vault, base_vault_remaining) als seinen Reserves öffnet.
Fixed-Price-Kurve (curve_type = 1)
Eine Kurve mit konstantem Preis. Jeder Kauf/Verkauf findet zu einem konstanten Preis statt, der bei Initialize konfigurierbar ist:
base_supply_graduation verkauft wurde (die lineare Kostenbeziehung macht die Herleitung von quote_reserve_target unkompliziert).
Linear-Price-Kurve (curve_type = 2)
Der Preis steigt linear mit base_sold:
base_sold — frühe Käufer zahlen nahe null, späte Käufer zahlen erheblich mehr, wobei der Grenzpreis immer mit einer festen Steigung ansteigt. Die On-Chain-Implementierung befindet sich in curve/linear_price.rs.
Vergleich der Kurvenformen
Graduierungsschwelle
quote_reserve_target wird bei Initialize als die Quote berechnet, die erforderlich ist, um base_sold von 0 zu base_supply_graduation zu treiben:
quote_vault.balance ≥ quote_reserve_target. Da Käufe in diskreten Größen erfolgen, kann der tatsächliche Saldo bei der Graduierung den Zielwert leicht überschreiten — der Überschuss wird zu zusätzlicher Quote-seitiger Liquidität im resultierenden CPMM-Pool.
Durchgerechnetes Beispiel — ein quadratischer Launch
Parameter:base_supply_max = 1_000_000_000(1 Milliarde Base-Token, 6 Dezimalstellen)base_supply_graduation = 800_000_000(80% verkauft löst Graduierung aus)k = 40(Preisskala)- Gebühren: 1% Kauf, 1% Verkauf, Aufteilung
lp:creator:protocol = 60:20:20.
s = 0): 0 (rein quadratisch beginnt bei null).
Preis bei 50% verkauft (s = 500_000_000):
s = 800_000_000):
10 USDC:
- Virtueller Status:
s = 0,quote_vault = 0. - Gebühr abziehen:
quote_after_fee = 10 × 0.99 = 9.9. - Löse
(40 / (3e18)) × s³ = 9.9e6— 9,9 USDC in nativen Einheiten mit 6 Dezimalstellen, denselben Einheiten, in denen auch das6.827e9oben angegeben ist ⇒s ≈ 9.06e7gekaufte Base-Token. - 1% Gebühr (
0.1 USDC) Aufteilung: lp0.06, creator0.02, protocol0.02. Der lp-Anteil bleibt inquote_vault; die anderen zwei leiten zu ihren jeweiligen Akkumulatoren weiter.
s₀ = 750e6 mit quote_in_after_fee = 9.9e6 ergibt ∆s ≈ 4.4e5 — eine ~200× Reduktion in Base pro USDC im Vergleich zum ersten Kauf.
Gebührenmechanik während der Kurvephase
Bei jedemBuy:
lp_sharebleibt inquote_vault. Dies ist das, was die effektive Kurve enger macht (mehr Quote-Reserve gegen die gleiche Base-Versorgung).protocol_shareerhöhtLaunchState.state_data.protocol_fees_quote.creator_shareerhöhtLaunchState.state_data.creator_fees_quote.
Sell gilt die gleiche Aufteilung, aber die Gebühr wird vom ausgehenden quote_out abgezogen.
Beide Zähler werden über CollectFees geleert (Admin oder Creator, jeweils zu ihrem eigenen Zähler).
Präzision
- Base-seitige Beträge:
u64. - Quote-seitige Beträge:
u64. - Zwischenergebnisse (Kuben / Produkte):
u128. - „Kauf exakte Quote” und „Verkauf exakte Quote” invertieren in geschlossener Form — die Constant-Product-Kurve algebraisch, die Fixed-Price-Kurve durch Division, die Linear-Price-Kurve durch eine Quadratwurzel. Es gibt keinen Newton-Solver im Programm, keine Iterationsobergrenze und keinen
NotConverged-Fehler.
Übergabe an CPMM
WennGraduate ausgelöst wird:
cpmm_initial_price genau price(base_sold), der Grenzpreis der Kurve zum Zeitpunkt des Übergangs, sodass ein Beobachter, der von der Kurven-UI zur CPMM-UI wechselt, keinen Sprung sieht. Für eine quadratische Preiskurve gilt das nicht: Der integrierte Durchschnitt liegt über dem Grenzpreis (im Beispiel oben um einen Faktor 4/3), sodass eine Stufe beim Übergang zu erwarten ist.
Nächste Schritte
products/launchlab/accounts— dieLaunchState-Felder, die diese Parameter speichern.products/launchlab/instructions—Buy,Sell,GraduateKontolisten.algorithms/constant-product— die CPMM-Mathematik, die der Post-Graduierungs-Pool verwendet.
- Raydium SDK v2
LaunchLabModul - Raydium LaunchLab Programmquelle

