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.9⇒s ≈ 6.22e6Base-Token gekauft. - 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.9 ergibt ungefähr ∆s ≈ 0.4e6 — eine ~15-fache 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. - Newton-Lösungen für „Kauf exakte Quote” und „Verkauf exakte Quote” iterieren in
u128Festkomma mit einer konfigurierbaren maximalen Iterationszahl (Standard 10). Der Fehlermodus istNotConverged— selten außerhalb von Grenzfällen nahe der Graduierung.
Übergabe an CPMM
WennGraduate ausgelöst wird:
cpmm_initial_price mechanisch price(base_sold) (es ist der Grenzpreis der Kurve zum Zeitpunkt des Übergangs). Der CPMM-Pool öffnet genau zu diesem Preis, sodass ein Beobachter, der von der Kurven-UI zur CPMM-UI wechselt, keinen Sprung sieht.
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

