Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
LaunchLab stellt einen kompakten Anweisungssatz bereit: sechs Aufrufe für Benutzer plus eine Handvoll Admin-Primitiven. Das SDK umhüllt alle; diese Seite dokumentiert die rohe Oberfläche für Aggregatoren, Überwachungstools und Programme, die CPI benötigen.

Anweisungsbestand

Die Aufteilung „ExactIn/ExactOut” spiegelt CPMMs SwapBaseInput / SwapBaseOutput wider — on-chain sind sie separate Anweisungs-Diskriminatoren mit leicht unterschiedlichem Rounding. Graduierungspfad-Auswahl. Jeder neue Initialize-, InitializeV2- und InitializeWithToken2022-Aufruf muss migrate_type = 1 (CPSWAP) setzen. Jeder Versuch, einen neuen AMM-v4-gebundenen Pool zu initialisieren, gibt MigrateTypeNotMatch zurück. amm_creator_fee_on wählt nur aus, ob die resultierende CPMM-Ersteller-Gebühr auf das Quote-Token oder beide Token angewendet wird; es wählt nicht das Ziel-Programm aus. MigrateToAmm bleibt für einen bestehenden PoolState aufrufbar, der mit migrate_type = 0 vor dieser Einschränkung initialisiert wurde. Die Veröffentlichung schreibt den bestehenden Pool-Status nicht um und entfernt die Legacy-Anweisung nicht.

Initialize

Erstellen Sie einen neuen Launch. Argumente
Konten (gekürzt) Vorbedingungen
  • quote_mint ∈ launch_config.allowed_quote_mints.
  • base_supply_graduation ≤ base_supply_max.
  • Gebührenparameter bestehen launch_config.max_*_fee_rate-Prüfungen.
  • open_time ≥ now − slop (SDK erzwingt ≥ now; Programm toleriert leichte Rückdatierung).
  • curve_type wird erkannt.
Nachbedingungen
  • base_mint hat supply = base_supply_max, alles in base_vault.
  • base_mint.mint_authority = launch_authority, freeze_authority = None.
  • LaunchState initialisiert mit status = Active, base_sold = 0, quote_reserve_real = 0.
  • quote_reserve_target berechnet aus Kurvenparametern + base_supply_graduation + buy_numerator (ungefähr).
Häufige FehlerInvalidQuoteMint, FeeRateTooHigh, InvalidCurveParams, MathOverflow.

Buy (kanonische Variante: BuyExactIn)

Benutzer stellt ein festes quote_in bereit; die Kurve berechnet base_out. Argumente
Konten Vorbedingungen
  • launch_state.status == Active.
  • now ≥ open_time.
  • user_quote_ata.balance ≥ quote_in.
  • quote_in > 0.
Effekt
  1. Teilen Sie quote_in in quote_in_after_fee und die Gebührenteile auf.
  2. Newton-Lösen Sie die Kurve für base_out gegeben das Post-Gebühren-Quote.
  3. require(base_out ≥ minimum_base_out) sonst revert ExceededSlippage.
  4. Verschieben Sie quote_in Benutzer → Vault. Verschieben Sie base_out Vault → Benutzer.
  5. Aktualisieren Sie base_sold += base_out, quote_reserve_real += quote_in_after_fee × (lp_share / total_share).
  6. Aktualisieren Sie Gebührenzähler (protocol_fees_quote, creator_fees_quote).
  7. state_data.num_buys += 1.
  8. Wenn quote_reserve_real ≥ quote_reserve_target nach der Aktualisierung, verkettete das SDK typischerweise eine Graduate-Anweisung in derselben Transaktion. Das Programm graduiert nicht automatisch innerhalb von Buy — eine nachfolgende Graduate ist erforderlich.

BuyExactOut

Benutzer gibt das exakte base_out an; Programm berechnet quote_in. Argumente
Gleiche Konten wie BuyExactIn. Verwendet die geschlossene quadratische Integralform (oder CPMM-Inverse für curve_type 1) statt Newton-Iteration.

Sell / SellExactIn / SellExactOut

Spiegelbild von Buy. Benutzer gibt base_in an die Kurve zurück und erhält quote_out. Die Gebühr wird von quote_out abgezogen, daher erhält der Benutzer weniger als die rohen integrierten Einnahmen. Vorbedingungen
  • user_base_ata.balance ≥ base_in.
  • Verkauf kann base_sold nicht unter 0 drücken (redundant mit dem obigen, wenn die Buchhaltung konsistent ist).
  • Launch ist Active.
Effekt — symmetrisch zu Buy. base_sold sinkt, quote_reserve_real sinkt. Gebühren fallen weiterhin an.

MigrateToAmm / MigrateToCpswap

Graduieren Sie einen Launch in einen handelbaren Pool, sobald die Kurve total_quote_fund_raising erreicht hat. Neue Launches sind nur CPMM. MigrateToAmm wird für bestehende Pools beibehalten, deren gespeicherter migrate_type 0 ist. Wer unterzeichnet
  • MigrateToAmm — das migrate_to_amm_wallet, das auf der Bindungs-GlobalConfig aufgezeichnet ist.
  • MigrateToCpswap — das migrate_to_cpswap_wallet, das auf der Bindungs-GlobalConfig aufgezeichnet ist.
Diese Wallets werden typischerweise von der Raydium-betriebenen Graduierungs-Crank gehalten; in der Praxis landet die Graduierung Sekunden nach dem Überschreiten des Schwellwerts, unabhängig davon, wer den endgültigen Kauf ausgelöst hat. Argumente MigrateToAmm nimmt drei (hauptsächlich OpenBook-Marktparameter, die das Programm an AMM v4 weiterleitet):
MigrateToCpswap nimmt keine. Effekt (gemeinsam für beide)
  1. Überprüfen Sie pool_state.status == Migrate (d. h. quote_reserve_target wurde erreicht). Andernfalls revert mit PoolMigrated (Status war bereits Migrated) oder PoolFunding (noch in Finanzierung).
  2. Überprüfen Sie, dass pool_state.migrate_type der Anweisung entspricht (0 für AMM, 1 für CPMM). Andernfalls revert mit MigrateTypeNotMatch.
  3. Berechnen Sie die Post-Graduierungs-Reserven:
    • base_amount_out = base_vault.amount − vesting_schedule.total_locked_amount
    • quote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
  4. CPI in das Ziel-Programm (AMM v4 Initialize2 oder CPMM InitializeWithPermission) mit diesen Reserven, um den Post-Graduierungs-Pool zu erstellen.
  5. Für CPMM-Migrationen, die nach dem 2026-08-17-Upgrade ausgeführt werden, kombinieren Sie platform_scale + creator_scale in einen plattformeigenen gesperrten LP-Anteil und prägen Sie höchstens einen Fee-Key-NFT zu platform_nft_wallet. Verbrennen Sie den burn_scale-Rest. Vor dem Upgrade war creator_scale separat gesperrt und sein Fee-Key ging an den Token-Ersteller. Abgeschlossene historische Migrationen werden nicht geändert. Für Legacy-AMM-v4-Graduierung folgt die LP-Disposition dem bestehenden Fluss dieser Anweisung.
  6. Widerrufen Sie base_mint.mint_authority (setzen Sie auf None).
  7. Kippen Sie pool_state.status = Migrated, setzen Sie vesting_schedule.start_time = block_time + cliff_period.
NachbedingungenBuyExactIn, BuyExactOut, SellExactIn, SellExactOut werden von diesem Punkt an mit PoolMigrated ablehnen. Der resultierende AMM-Pool ist kanonisch und handelt wie jeder andere AMM-v4- / CPMM-Pool. Häufige FehlerPoolFunding, PoolMigrated, MigrateTypeNotMatch, InvalidCpSwapConfig, MathOverflow.

CPMM-Migrations-Restkonten

Clients, die MigrateToCpswap erstellen, müssen diese festen remaining_accounts-Indizes verwenden: Die Anweisung erfordert mindestens zehn Restkonten auf dem aktualisierten Pfad. Die Support-Mint-Konten sind schreibgeschützte CPI-Eingaben. Leiten Sie beide Adressen ab, auch wenn der Mint keinen initialisierten Support-Datensatz hat. Ältere Builder, die immer noch Creator-Lock-Konten anhängen oder Indizes 8–9 weglassen, müssen aktualisiert werden.

Plattform-GlobalConfig-Allowlist

PlatformConfig.restrict_global_config steuert die Prüfung:
  • 0: Die Plattform akzeptiert jede ansonsten gültige GlobalConfig; kein Allow-Konto ist erforderlich.
  • 1: Initialize, InitializeV2 und InitializeWithToken2022 müssen die passende PlatformAllowConfig irgendwo in remaining_accounts enthalten.
Der Plattform-Admin erstellt oder schließt die PDA mit CreatePlatformAllowConfig und ClosePlatformAllowConfig. Ihre Seeds sind [b"platform_allow_config", platform_config, global_config]. Die früheren Admin-verwalteten PlatformGlobalAccess-Anweisungen und PDA sind veraltet.

CollectFee

Admin-Einzug der aufgelaufenen Handelsgebühren des Protokolls auf einem einzelnen Launch. Argumente — keine. Konten Effekt — Übertragen Sie pool_state.quote_protocol_fee von quote_vault zu recipient_token_account, dann nullen Sie den Zähler. Aufrufbar jederzeit nach dem ersten Kauf.

CollectMigrateFee

Admin-Einzug der bei der Graduierung aufgelaufenen Migrationsgebühr. Gleiche Kontoform wie CollectFee mit migrate_fee_owner als Unterzeichner (statt protocol_fee_owner) und pool_state.migrate_fee als geleerten Zähler.

ClaimCreatorFee

Pro-Ersteller-Einzug aufgelaufener Ersteller-Gebühren über jeden Launch, den der Ersteller besitzt, der das gleiche Quote-Mint verwendet. Leert den Pro-Ersteller-Gebühren-Vault, nicht den Pro-Pool-Vault. Argumente — keine. Konten Effekt — Übertragen Sie den gesamten Saldo von creator_fee_vault zu recipient_token_account. Revert mit einer Require-Größer-als-Null-Prüfung, wenn der Vault leer ist.

ClaimPlatformFee

Pro-Plattform-Einzug, der einen Launch-Quote-Vault direkt leert. Verwenden Sie dies, wenn eine Plattform ihren Anteil für einen bestimmten Launch einziehen möchte, ohne durch den aggregierten Plattform-Vault zu gehen. Argumente — keine. Konten Effekt — Übertragen Sie pool_state.platform_fee von quote_vault zu recipient_token_account, nullen Sie den Zähler.

ClaimPlatformFeeFromVault

Pro-Plattform-aggregierter Einzug. Leert den Pro-Quote-Mint-Gebühren-Vault der Plattform, der Gebühren von jedem Launch sammelt, der durch die Plattform geleitet wird. Argumente — keine. Konten Effekt — Übertragen Sie den vollständigen Saldo von platform_fee_vault zu recipient_token_account. Revert, wenn der Vault leer ist.

Vesting- und Plattformkonfigurationsanweisungen

Diese sind auf dedizierten Seiten dokumentiert, da jede ihr eigenes State-Modell hat:

State-Änderungsmatrix

Nächste Schritte

Quellen: