Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
LaunchLab stellt einen kompakten Anweisungssatz bereit: sechs benutzergerichtete Aufrufe plus eine Handvoll Admin-Primitive. Das SDK umhüllt alle; diese Seite dokumentiert die rohe Oberfläche für Aggregatoren, Monitoring-Tools und Programme, die CPI benötigen.
Anweisungsbestand
Die „ExactIn/ExactOut”-Aufteilung spiegelt CPMMs
SwapBaseInput / SwapBaseOutput — 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, ob die resultierende CPMM-Ersteller-Gebühr auf den Quote Token oder beide Token angewendet wird; es wählt nicht das Ziel-Programm.
MigrateToAmm bleibt für einen bestehenden PoolState aufrufbar, der mit migrate_type = 0 vor dieser Einschränkung initialisiert wurde. Die Veröffentlichung schreibt keinen bestehenden Pool-Status um und entfernt die Legacy-Anweisung nicht.
Quote-seitiges Token-Programm. Der Quote Mint kann dem SPL Token Programm oder Token-2022 gehören. Jede Anweisung, die ihn berührt — CreateConfig, InitializeV2, InitializeWithToken2022, alle vier Handelsanweisungen, CollectFee, CollectMigrateFee, ClaimCreatorFee, ClaimPlatformFee und ClaimPlatformFeeFromVault — nimmt das besitzende Programm in seinem Quote-Programm-Kontoslot. Kontopositionen haben sich nicht geändert; nur der akzeptierte Wert hat sich geändert. Übergeben Sie das Programm, das tatsächlich GlobalConfig.quote_mint besitzt, das Sie aus PoolState.token_program_flag Bit1 für einen bestehenden Launch lesen können (siehe accounts) oder andernfalls aus dem Mint-Konto-Besitzer.
Das veraltete Initialize ist die Ausnahme: sein Quote-Programm-Konto ist immer noch auf SPL Token typisiert, daher muss eine Konfiguration, deren Quote Mint Token-2022 ist, durch InitializeV2 oder InitializeWithToken2022 gestartet werden.
MigrateToCpswap ist die andere Ausnahme, in die entgegengesetzte Richtung — es nimmt beide Programme bedingungslos statt eines pro Mint. Siehe die Migrations-Konten unten.
Initialize
Erstellen Sie einen neuen Launch.
Argumente
Vorbedingungen
quote_mint ∈ launch_config.allowed_quote_mints.base_supply_graduation ≤ base_supply_max.- Gebührenparameter bestehen
launch_config.max_*_fee_rateÜberprüfungen. open_time ≥ now − slop(SDK erzwingt≥ now; Programm toleriert leichte Rückdatierung).curve_typewird erkannt.
base_minthatsupply = base_supply_max, alles inbase_vault.base_mint.mint_authority = launch_authority,freeze_authority = None.LaunchStateinitialisiert mitstatus = Active,base_sold = 0,quote_reserve_real = 0.quote_reserve_targetberechnet aus Kurvenparametern +base_supply_graduation+buy_numerator(ungefähr).- Für
InitializeWithToken2022mit angehängtemTransferFeeConfig:transfer_fee_config_authority = launch_authorityundwithdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth, wenn dieses Feld gesetzt ist, andernfallslaunch_authority. Die Abhebungsseite wird bei der Mint-Erstellung geschrieben, damit die Plattform Einbehaltungsgebühren vor der Graduierung einziehen kann. Sieheplatform-config.
InvalidQuoteMint, FeeRateTooHigh, InvalidCurveParams, MathOverflow.
Buy (kanonische Variante: BuyExactIn)
Benutzer stellt einen festen quote_in bereit; die Kurve berechnet base_out.
Argumente
Vorbedingungen
launch_state.status == Active.now ≥ open_time.user_quote_ata.balance ≥ quote_in.quote_in > 0.
- Teilen Sie
quote_ininquote_in_after_feeund die Gebührenteile auf. - Newton-Lösen der Kurve für
base_outgegeben die Post-Gebühren Quote. require(base_out ≥ minimum_base_out)andernfallsExceededSlippagezurückweisen.- Verschieben Sie
quote_inBenutzer → Vault. Verschieben Siebase_outVault → Benutzer. - Aktualisieren Sie
base_sold += base_out,quote_reserve_real += quote_in_after_fee × (lp_share / total_share). - Aktualisieren Sie Gebührenzähler (
protocol_fees_quote,creator_fees_quote). state_data.num_buys += 1.- Wenn
quote_reserve_real ≥ quote_reserve_targetnach der Aktualisierung, verkettete das SDK typischerweise eineGraduateix in derselben Transaktion. Das Programm graduiert nicht automatisch innerhalb vonBuy— eine nachfolgendeGraduateist erforderlich.
BuyExactOut
Benutzer gibt das genaue base_out an; Programm berechnet quote_in.
Argumente
BuyExactIn. Verwendet das geschlossene quadratische Integral (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.- Der Verkauf kann
base_soldnicht unter 0 drücken (redundant mit dem obigen, wenn die Buchhaltung konsistent ist). - Launch ist
Active.
Buy. base_sold sinkt, quote_reserve_real sinkt. Gebühren fallen weiterhin an.
Quote-seitige Transfergebühren
Wenn der Quote Mint einTransferFeeConfig trägt, unterscheiden sich der Betrag, den der Vault bewegt, und der Betrag, um den der Zahler belastet oder gutgeschrieben wird, und die Slippage-Grenze wird gegen die Zahlerseite überprüft. Bei einem Quote Mint ohne die Erweiterung ist jeder Fall unten identisch mit einem einfachen Legacy Mint.
Zwei Konsequenzen für Quoting:
- Eine Grenze, die berechnet wird, als ob der Mint gebührenfrei wäre, wird abgelehnt. Die gebührenfreien Kosten als
maximum_amount_inoder die gebührenfreien Einnahmen alsminimum_amount_outzu übergeben, führt zuExceededSlippage. real_quoterückt nur um das vor, was den Vault erreichte. EinBuyExactInvonamount_inauf einem 5% Quote Mint bewegtreal_quoteumamount_in × 0.95.
10000 Basispunkte) kann nicht invertiert werden und gibt CalculateOverflow auf den Exact-Out-Pfaden zurück.
Beide Handelsseiten-Mints sind auch auf das Programm beschränkt, das in ihrem entsprechenden Slot übergeben wird, daher schlägt ein nicht übereinstimmendes base_token_program jetzt fehl, statt ignoriert zu werden. Siehe algorithms/token-2022-transfer-fees für die zugrunde liegende Gebührenmathe.
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— dasmigrate_to_amm_walletauf der Bindungs-GlobalConfigaufgezeichnet.MigrateToCpswap— dasmigrate_to_cpswap_walletauf der Bindungs-GlobalConfigaufgezeichnet.
MigrateToAmm nimmt drei (hauptsächlich OpenBook Marktparameter, die das Programm an AMM v4 weiterleitet):
MigrateToCpswap nimmt keine.
Effekt (gemeinsam für beide)
- Überprüfen Sie
pool_state.status == Migrate(d.h.quote_reserve_targetwurde erreicht). AndernfallsPoolMigrated(Status war bereitsMigrated) oderPoolFunding(noch in Finanzierung) zurückweisen. - Überprüfen Sie, dass
pool_state.migrate_typeder Anweisung entspricht (0für AMM,1für CPMM). AndernfallsMigrateTypeNotMatchzurückweisen. - Berechnen Sie die Post-Graduierungs-Reserven:
base_amount_out = base_vault.amount − vesting_schedule.total_locked_amountquote_amount_out = quote_vault.amount − quote_protocol_fee − migrate_fee − platform_fee
- CPI in das Ziel-Programm (
AMM v4 Initialize2oderCPMM InitializeWithPermission) mit diesen Reserven, um den Post-Graduierungs-Pool zu erstellen. - Für CPMM-Migrationen, die nach dem 2026-08-17 Upgrade ausgeführt werden, kombinieren Sie
platform_scale + creator_scalein einen plattformgesammelten gesperrten LP-Anteil und prägen Sie höchstens einen Fee Key NFT zuplatform_nft_wallet. Verbrennen Sie denburn_scaleRest. Vor dem Upgrade warcreator_scaleseparat 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. - Widerrufen Sie
base_mint.mint_authority(setzen Sie aufNone). - Kippen Sie
pool_state.status = Migrated, setzen Sievesting_schedule.start_time = block_time + cliff_period.
TransferFeeConfig ist und PlatformConfig.transfer_fee_extension_auth nicht Standard ist, weist die Migration auch diese Erweiterungsautoritäten dem Plattform-Schlüssel zu:
transfer_fee_config_authoritywird immer neu zugewiesen. Die LaunchauthorityPDA hält sie für die ganze Pre-Graduierungs-Phase, daher gibt es immer etwas zu verschieben.WithheldWithdrawwird nur neu zugewiesen, wenn dieauthorityPDA sie noch hält. Launches, die ab 2026-08-27 erstellt wurden, tragen bereitstransfer_fee_extension_authauf dieser Autorität von der Mint-Erstellung, daher wird der Schritt übersprungen. Die Schutzvorrichtung ist das, was verhindert, dass die Migration auf diesen Mints zurückweist — die PDA kann eine Autorität, die sie nicht mehr hält, nicht abtreten.
transfer_fee_extension_auth zur Migrationszeit Pubkey::default() ist, bewegen sich weder Autorität und beide bleiben permanent bei der authority PDA. Siehe platform-config.
Nachbedingungen — BuyExactIn, 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 Fehler — PoolFunding, PoolMigrated, MigrateTypeNotMatch, InvalidCpSwapConfig, MathOverflow.
CPMM-Migrations verbleibende Konten
Clients, dieMigrateToCpswap erstellen, müssen diese festen remaining_accounts Indizes verwenden:
Die Anweisung erfordert mindestens zehn verbleibende Konten 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.
CPMM-Migrations Token-Programme
MigrateToCpswap nimmt beide Token-Programme bedingungslos und arbeitet aus, welches jeden Mint besitzt. Seine zwei Token-Programm-Konten wurden entsprechend umbenannt:
Sie ersetzen das frühere
base_token_program (welches Programm den Base Mint besaß) und quote_token_program (immer Legacy). Positionen sind unverändert, daher ist dies eine Wertänderung statt einer Layout-Änderung — aber die zwei Werte sind nahe beieinander invertiert, und ein Builder, der sein altes Paar weitergibt, liefert Token-2022, wo das Legacy-Programm erforderlich ist, sobald einer der Mints ein Token-2022 Mint ist.
Das Legacy-Programm ist erforderlich, auch wenn keiner der Mints es verwendet, da der CPMM LP Mint und der gesperrte Liquiditäts Fee Key NFT immer darauf leben.
Plattform GlobalConfig Allowlist
PlatformConfig.restrict_global_config steuert die Überprüfung:
0: die Plattform akzeptiert jeden ansonsten gültigenGlobalConfig; kein Allow-Konto ist erforderlich.1:Initialize,InitializeV2undInitializeWithToken2022müssen das entsprechendePlatformAllowConfigirgendwo inremaining_accountsenthalten.
CreatePlatformAllowConfig und ClosePlatformAllowConfig. Seine Seeds sind [b"platform_allow_config", platform_config, global_config]. Die früheren Admin-verwalteten PlatformGlobalAccess Anweisungen und PDA sind veraltet.
Plattform Launch-Parameter-Regeln
Vier Anweisungen verwalten einPlatformCurveRule Konto. Alle vier werden von PlatformConfig.curve_rule_manager oder vom Plattform-Admin unterzeichnet — das Programm akzeptiert den Admin, indem es die PlatformConfig PDA vom Unterzeichner neu ableitet, daher beweist kein separates Konto es. Ein Unterzeichner, der keiner ist, gibt InvalidCurveRuleAuthority zurück.
platform_curve_rule ist die PDA bei [b"platform_curve_rule", platform_config, global_config].
Createordnet das Konto zu, das keine Gruppe hält. Dieser Status schränkt nichts ein.Updateupsert die Gruppe mit diesergroup_id, ersetzt sie vollständig, wenn sie existiert. Es ändert die Größe des Kontos, um zu passen, daher zahlt der Unterzeichner die Miete, um die es wächst, und erhält die Miete zurück, um die es schrumpft. Eine neue Gruppe über die zehnte hinaus gibtCurveRuleGroupsExceededzurück; mehr als 25 Einschränkungen, ein unbekanntes Feld oder Operator, oder das gleiche(field, op)Paar zweimal in einer Gruppe gibtInvalidCurveRuleConstraintzurück; die vierTotalSellA-abgeleiteten Felder auf einer nicht-konstanten-Produkt-Konfiguration gebenCurveRuleFieldNotSupportedByCurvezurück.Removelöscht eine Gruppe nach ID, schrumpft das Konto und erstattet die Differenz. Eine unbekannte ID gibtCurveRuleGroupNotExistzurück.Closegibt die ganze Miete an den Unterzeichner zurück. Die Konfiguration ist dann wieder uneingeschränkt, auch wennrestrict_curve_param1bleibt.
UpdatePlatformConfig::RestrictCurveParam(0 | 1), das nur der Plattform-Admin aufrufen kann.
Auf dem Launch-Pfad. Während restrict_curve_param 1 ist, erfordern InitializeV2 und InitializeWithToken2022 die Regel PDA in remaining_accounts — auch wenn sie nicht existiert, damit das Weglassen sie nicht überspringen kann. Ein fehlendes Konto ist NotEnoughRemainingAccounts; ein Launch, der keine Gruppe erfüllt, ist CurveParamNotMatchPlatformRule. Die Überprüfung läuft vor GlobalConfig’s eigenen Grenzen und kann sie nur einengen. Modell und Playbooks: products/launchlab/curve-rules. Beide Fehler sind Client-seitig vermeidbar — das SDK spiegelt diese Überprüfung als reine Funktion, siehe Check before you send.
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 den gleichen Quote Mint verwendet. Leert den Pro-Ersteller-Gebühren-Vault, nicht den Pro-Pool.
Argumente — keine.
Konten
Effekt — übertragen Sie den gesamten Saldo von
creator_fee_vault zu recipient_token_account. Weist mit einer Require-Größer-als-Null-Überprüfung zurück, 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 einfordern 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 vollen Saldo von
platform_fee_vault zu recipient_token_account. Weist zurück, wenn der Vault leer ist.
Vesting und Plattformkonfiguration Anweisungen
Diese sind auf dedizierten Seiten dokumentiert, da jede ihr eigenes State-Modell hat:CreateVestingAccount,CreatePlatformVestingAccount,ClaimVestedTokenCreatePlatformConfig,UpdatePlatformConfig,CreatePlatformAllowConfig,ClosePlatformAllowConfigCreatePlatformCurveRule,UpdatePlatformCurveRule,RemovePlatformCurveRule,ClosePlatformCurveRuleCreateConfig,UpdateConfig
State-Änderungs-Matrix
Wo es weitergeht
products/launchlab/code-demos— TypeScript-Beispiele für jede Anweisung.products/launchlab/accounts— vollständige State-Form.reference/error-codes— LaunchLab Error Enum.
- Raydium SDK v2
LaunchLabModul - Raydium LaunchLab Programm-Quelle

