Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Initialize) gewählt werden: constant-product (die häufigste Form, eine virtuelle Reservevariante der Standard-Kurve x · y = k), linear-price und fixed-price. Die Formel für den Graduierungsschwellwert ist bei allen drei gleich. Diese Seite behandelt die Mathematik der constant-product-Kurve im Detail; die lineare und feste Form werden am Ende zusammengefasst.
Parameter auf LaunchState
| Feld | Bedeutung |
|---|---|
curve_type | 0 = constant-product (virtuelle Reserven), 1 = fixed-price, 2 = linear-price. |
base_supply_max | Gesamtmenge an Base-Tokens, die die Kurve je prägen kann. |
base_supply_graduation | Base-Tokens, die verkauft werden müssen, um die Graduierung zu erreichen. Normalerweise 0.8 × base_supply_max; die restlichen 20% werden zum anfänglichen LP des Post-Graduierungs-Pools. |
quote_reserve_target | Quote-Menge, die die Graduierung auslöst. Wird bei Initialize aus den Kurvenparametern und base_supply_graduation abgeleitet. |
virtual_base / virtual_quote | Virtuelle Reserve-Seeds für die constant-product-Kurve. |
migrate_type | Wählt das Graduierungsziel: AMM v4 vs. CPMM. Siehe instructions. |
fees.buy_numerator / buy_denominator | Gebühr auf der Kauf-Seite, z. B. 100 / 10_000 = 1,00%. |
fees.sell_numerator / sell_denominator | Gebühr auf der Verkaufs-Seite. Oft gleich wie auf der Kauf-Seite. |
fees.protocol_share, fees.creator_share, fees.lp_share | Aufteilung der obigen, summiert sich zu denominator. |
PoolState-Feldern, die unter accounts beschrieben sind; Einheiten oben sind konzeptionell.
Constant-product-Kurve mit virtuellen Reserven (curve_type = 0)
Die Standard- und am häufigsten verwendete Kurve. Pump-ähnliche Launches verwenden alle diese Form. Die Kurve simuliert eine virtuelle Quote-Reserve V_q und eine virtuelle Base-Reserve V_b von Anfang an (gespeichert als virtual_quote und virtual_base auf PoolState), sodass der effektive Pool wie ein CPMM mit diesen Reserven aussieht. Käufe folgen der Mathematik von x · y = k:
base_out:
s:
x · y = k Invariante, die LaunchLab vor der Graduierung anwendet, ist dann wörtlich die CPMM- (oder AMM v4-) Kurve nach der Graduierung, sodass die Graduierungsübergabe mechanisch nahtlos ist: Der Grenzpreis bei base_sold = base_supply_graduation entspricht dem Preis, bei dem der Post-Graduierungs-Pool mit (quote_vault, base_vault_remaining) als seinen Reserven eröffnet wird.
Fixed-price-Kurve (curve_type = 1)
Eine Kurve mit konstanter Preis. Jeder Kauf/Verkauf findet zu einem konstanten Preis statt, der bei der Initialisierung (Initialize) konfigurierbar ist:
base_supply_graduation verkauft wurde (die lineare Kostenbeziehung macht quote_reserve_target einfach herzuleiten).
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
Graduierungsschwellwert
quote_reserve_target wird bei Initialize als die Quote berechnet, die erforderlich ist, um base_sold von 0 auf 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 Graduierung den Schwellwert leicht überschreiten — der Überschuss wird zu zusätzlicher Liquidität auf der Quote-Seite im daraus resultierenden CPMM-Pool.
Ausgearbeitetes Beispiel — ein quadratischer Launch
Parameter:base_supply_max = 1_000_000_000(1 Milliarde Base-Tokens, 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 (reine quadratische Kurve beginnt bei null).
Preis bei 50% verkauft (s = 500_000_000):
s = 800_000_000):
10 USDC:
- Virtueller Zustand:
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-Tokens gekauft. - 1% Gebühr (
0,1 USDC) Aufteilung: lp0,06, creator0,02, protocol0,02. Der lp-Anteil bleibt inquote_vault; die anderen beiden leiten zu ihren jeweiligen Akkumulatoren weiter.
s₀ = 750e6 mit quote_in_after_fee = 9,9 ergibt ungefähr ∆s ≈ 0,4e6 — eine ~15-fache Verringerung von Base pro USDC im Vergleich zum ersten Kauf.
Gebühren-Mechanik während der Kurvenphase
Bei jedemBuy:
lp_sharebleibt inquote_vault. Dies ist das, was die effektive Kurve enger macht (mehr Quote-Reserve gegen das gleiche Base-Angebot).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 aus dem ausgehenden quote_out abgezogen.
Beide Zähler werden über CollectFees (Admin oder Creator, jeder zu ihrem eigenen Zähler) geleert.
Präzision
- Base-seitige Beträge:
u64. - Quote-seitige Beträge:
u64. - Zwischensummen / Produkte:
u128. - Newton-Lösungen für „exakte Quote kaufen” und „exakte Quote verkaufen” iterieren in
u128mit Festpunkt und einer konfigurierbaren maximalen Iterationszahl (Standard 10). Fehlermodus istNotConverged— selten außerhalb von nahe-Graduierungs-Grenzfällen.
Übergabe zu CPMM
WennGraduate ausgelöst wird:
cpmm_initial_price mechanisch price(base_sold) (es ist der Grenzpreis der Kurve zum Zeitpunkt der Übergabe). Der CPMM-Pool erö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,GraduateAccount-Listen.algorithms/constant-product— die CPMM-Mathematik, die der Post-Graduierungs-Pool verwendet.
- Raydium SDK v2
LaunchLabmodule - Raydium LaunchLab Programmquellcode


