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, Überwachungstools und Programme, die CPI benötigen.Das Programm-Upgrade 2026-09 hat LaunchLab auf Anchor 1.0.2 / Solana 3.1.10 neu aufgebaut und drei Übergangsmechanismen gelöscht: das veraltete
Initialize schlägt jetzt immer fehl, MigrateToAmm verlor seine drei Argumente und jedes OpenBook-Konto, und das get_upgrade_timestamp-Gate, das mehrere Prüfungen vom Clock abhängig machte, ist weg. Es fügt auch eine Admin-Anweisung hinzu, CollectExcessLamports. Siehe den Changelog-Eintrag vom 2026-09-09.Anweisungsbestand
Die „ExactIn/ExactOut”-Aufteilung spiegelt CPMMs
SwapBaseInput / SwapBaseOutput — On-Chain sind sie separate Anweisungs-Diskriminatoren mit leicht unterschiedlichem Rounding.
Graduierungs-Pfad-Auswahl. Jeder neue 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. Das veraltete Initialize kann überhaupt keinen Launch mehr erstellen (siehe unten).
MigrateToAmm bleibt für einen bestehenden PoolState aufrufbar, der mit migrate_type = 0 vor dieser Einschränkung initialisiert wurde. Das Release schreibt den bestehenden Pool-Status nicht 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 seinen 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 hier irrelevant: Sein Quote-Programm-Konto ist immer noch auf SPL Token typisiert, und seit dem 2026-09-Upgrade schlägt die Anweisung fehl, bevor sie ein Konto liest. Starten Sie über InitializeV2 oder InitializeWithToken2022.
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. InitializeV2 fügt gegenüber dem veralteten Initialize nur das Argument amm_fee_on hinzu; Anzahl und Reihenfolge der Konten sind identisch, und der einzige Unterschied auf Kontoebene ist, dass quote_token_program als Interface<TokenInterface> typisiert ist, sodass eine Token-2022-Quote-Mint akzeptiert wird.
Argumente
Vier positionale Argumente, kein einzelnes Struct. (InitializeWithToken2022 hängt ein fünftes an, transfer_fee_extension_param: Option<TransferFeeExtensionParams>; dem veralteten Initialize fehlt amm_fee_on.)
global_config.curve_type entsprechen, sonst revertiert die Anweisung mit InputNotMatchCurveConfig (6003). Es gibt kein open_time, kein quote_mint-Argument (es kommt aus global_config), kein fees-Struct und kein post_graduation_lp_policy — die LP-Verwertung wird auf der PlatformConfig gesetzt, nicht pro Launch.
Konten — insgesamt 18 (16 deklarierte plus die beiden #[event_cpi]-Anhänge)
Vorbedingungen
quote_mint ∈ launch_config.allowed_quote_mints.base_supply_graduation ≤ base_supply_max.- Gebührenparameter bestehen
launch_config.max_*_fee_ratePrüfungen. open_time ≥ now − slop(SDK erzwingt≥ now; Programm toleriert leichte Rückdatierung).curve_typewird erkannt.
base_minthatsupply = curve_param.supply, alles inbase_vault.- Die Mint-Autorität wird in derselben Anweisung widerrufen (
set_authority(MintTokens, None)), direkt nachdem das Angebot geprägt wurde — nicht bei der Graduation. Die Base-Mint hat daher dauerhaft ein festes Angebot, und keine spätere Anweisung kann mehr prägen. PoolStatewird initialisiert mitstatus = Fund(0),real_a = 0,real_b = 0.total_fund_raising_bkommt direkt auscurve_param.total_quote_fund_raising.- Für
InitializeWithToken2022mit angehängtemTransferFeeConfig:transfer_fee_config_authority = launch_authority, undwithdraw_withheld_authority = PlatformConfig.transfer_fee_extension_auth, wenn dieses Feld gesetzt ist, andernfallslaunch_authority. Die Abhebungsseite wird genau deshalb bei der Mint-Erstellung geschrieben, damit die Plattform einbehaltene Gebühren vor der Graduierung einziehen kann. Sieheplatform-config.
NotApproved (6000, bedingungslos, für das veraltete Initialize), InvalidInput (6002, eine Angebots-/Raten-/Fundraising-Untergrenze aus GlobalConfig verletzt), InputNotMatchCurveConfig (6003, die curve_param-Variante passt nicht zu global_config.curve_type), MigrateTypeNotMatch (6007, migrate_type != 1), MathOverflow (6008), VestingRatioTooHigh (6010), NoSupportExtension (6017), NotEnoughRemainingAccounts (6018), InvalidPlatformAllowConfig (6022), CurveParamNotMatchPlatformRule (6025). Eine fehlgeschlagene Anchor-Prüfung address = / constraint = erscheint als 2xxx-Code, nicht als einer dieser — keiner von InvalidQuoteMint, FeeRateTooHigh oder InvalidCurveParams existiert im Fehler-Enum des Programms.
Buy (kanonische Variante: BuyExactIn)
Der Benutzer stellt einen festen Eingabebetrag bereit; die Kurve berechnet die Ausgabe.
Argumente
Verbleibende Konten — die Gebühren-Verdrahtung, in genau dieser Reihenfolge gelesen:
share_fee_receiver— nur wennshare_fee_rate > 0.system_program— immer; geprüft== System::id(), sonstInvalidInput.platform_fee_vault— PDA[platform_config, quote_token_mint]; wird bei der ersten Verwendung erstellt.creator_fee_vault— PDA[creator, quote_token_mint]; wird bei der ersten Verwendung erstellt.
NotEnoughRemainingAccounts (6018). Es gibt keinen associated_token_program-
Slot, und system_program ist ein verbleibendes Konto und kein deklariertes.
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 das Post-Fee-Quote. require(base_out ≥ minimum_base_out)andernfalls RückgängigmachenExceededSlippage.- 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
Der Benutzer gibt das genaue base_out an; das 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 geprüft. Bei einem Quote Mint ohne die Erweiterung ist jeder Fall unten identisch mit einem einfachen Legacy Mint.
Zwei Konsequenzen für Angebote:
- Eine Grenze, die berechnet wird, als wäre der Mint gebührenfrei, 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 führt zu CalculateOverflow auf den Exact-Out-Pfaden.
Beide Handelsseiten-Mints sind auch auf das Programm beschränkt, das in ihrem passenden 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.
Handels-Restkonten
Alle vier Handelsanweisungen nehmen ihre Gebühren-Rohrleitungen durchremaining_accounts in dieser Reihenfolge:
Geändert in 2026-09: Die letzten drei sind jetzt bedingungslos, und
system_program wird validiert. Vor diesem Release las das Programm sie nur, wenn unix_timestamp >= get_upgrade_timestamp(), und übersprung die Plattform-/Ersteller-Gebühren-Aufteilung ganz davor. Der Timestamp ist lange vorbei, daher ist das Verhalten auf Mainnet praktisch unverändert — aber der Branch ist aus dem Code weg, und ein Builder, der die drei Konten immer noch auslässt, schlägt jetzt immer mit NotEnoughRemainingAccounts (6018) fehl, statt nur nach dem Cutover. Der system_program-Slot wird zusätzlich gegen System::id() geprüft und gibt InvalidInput (6002) zurück, wenn er etwas anderes hält, wo zuvor jedes Konto in dieser Position akzeptiert wurde.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.
- Verifizieren Sie
pool_state.status == Migrate(d.h.quote_reserve_targetwurde erreicht). Andernfalls Rückgängigmachen mitPoolMigrated(Status war bereitsMigrated) oderPoolFunding(noch in Finanzierung). - Verifizieren Sie
pool_state.migrate_typestimmt mit der Anweisung überein (0für AMM,1für CPMM). Andernfalls Rückgängigmachen mitMigrateTypeNotMatch. - 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 wurden, kombinieren Sie
platform_scale + creator_scalein einen Plattform-eigenen gesperrten LP-Anteil und prägen Sie höchstens einen Fee Key NFT zuplatform_nft_wallet. Verbrennen Sie denburn_scale-Rest. 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 Flow dieser Anweisung. - (Kein Mint-Authority-Schritt.
base_mint.mint_authoritywar bereits bei der Launch-Erstellung aufNonegesetzt — siehe die Notiz unten.) - Kippen Sie
pool_state.status = Migrated, setzen Sievesting_schedule.start_time = block_time + cliff_period.
TransferFeeConfig trägt und PlatformConfig.transfer_fee_extension_auth nicht-Standard ist, weist die Migration auch diese Erweiterungs-Autoritä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 neu zugewiesen nur wenn dieauthorityPDA sie immer noch hält. Launches, die ab 2026-08-27 erstellt wurden, tragen bereitstransfer_fee_extension_authauf dieser Authority von der Mint-Erstellung, daher wird der Schritt übersprungen. Der Guard ist das, was Migration davon abhält, auf diesen Mints rückgängig zu machen — die PDA kann eine Authority, die sie nicht mehr hält, nicht abgeben.
transfer_fee_extension_auth zur Migrationszeit Pubkey::default() ist, bewegen sich weder Authority und beide bleiben permanent bei der authority PDA. Siehe platform-config.
Die Supply des Base Mint ist von der Erstellung an festgelegt, nicht von der Graduierung.
InitializeV2 und InitializeWithToken2022 prägen die gesamte Supply in den Base Vault und widerrufen dann sofort MintTokens in derselben Anweisung, daher ist base_mint.mint_authority None für das ganze Leben des Launch. Migration berührt es nicht. (Frühere Überarbeitungen dieser Seite legten den Widerruf bei der Graduierung; das war falsch.) Die einzigen Autoritäten, die Migration verschieben kann, sind die Token-2022 Transfer-Fee-Autoritäten, die unten beschrieben sind.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-Restkonten
Clients, dieMigrateToCpswap bauen, müssen diese festen remaining_accounts Indizes verwenden:
Die Anweisung erfordert mindestens zehn Restkonten. Die Support-Mint-Konten sind Read-Only 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 auslassen, müssen aktualisiert werden.
Geändert in 2026-09. Zwei Bereinigungen, von denen keine einen korrekten Builder ändert:
- Der berechtigte CPMM-Pfad ist jetzt der einzige Pfad.
MigrateToCpswapwählte früher zwischenInitializeCpSwapundInitializeCpSwapWithPermissionbasierend aufunix_timestamp >= get_upgrade_timestamp(). Der Timestamp-Helper und das Legacy CPI sind beide weg, daher gilt der berechtigte Pfad — und daher das Zehn-Konto-Minimum — bedingungslos. - Drei Adress-Constraints wurden vom Account-Struct in den Anweisungs-Body verschoben.
platform_config,base_vaultundquote_vaultsind immer noch erforderlich, um die aufPoolStategespeicherten Werte zu entsprechen, aber die Nichtübereinstimmung wird jetzt durchrequire_keys_eq!statt durch Anchorsaddress =Constraint erhöht. Die Prüfung ist äquivalent; nur die Fehleroberfläche unterscheidet sich — Sie erhalten Anchors generischesRequireKeysEqViolated(2502) stattConstraintAddress(2012), und es wird ohne einen Kontonamen gemeldet. Aktualisieren Sie jede Fehlerbehandlung, die auf2012für diese drei Konten passte.
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 auch 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 Prüfung:
0: Die Plattform akzeptiert jeden ansonsten gültigenGlobalConfig; kein Allow-Konto ist erforderlich.1:Initialize,InitializeV2undInitializeWithToken2022müssen das passendePlatformAllowConfigirgendwo 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 pensioniert.
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 ganz, wenn sie existiert. Es ändert die Größe des Kontos, um zu passen, daher zahlt der Unterzeichner die Miete, die es wächst, und erhält die Miete zurück, die es schrumpft. Eine neue Gruppe über der zehnten gibtCurveRuleGroupsExceededzurück; mehr als 25 Constraints, 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-Config 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 Config 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 Auslassen sie nicht überspringen kann. Ein fehlendes Konto ist NotEnoughRemainingAccounts; ein Launch, der keine Gruppe erfüllt, ist CurveParamNotMatchPlatformRule. Die Prüfung läuft vor GlobalConfigs eigenen Limits und kann sie nur einengen. Modell und Playbooks: products/launchlab/curve-rules. Beide Fehler sind Client-seitig vermeidbar — das SDK spiegelt diese Prüfung als reine Funktion, siehe Check before you send.
CollectFee
Admin-Einzug der angesammelten 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 angesammelten 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 angesammelter 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. Rückgängigmachen 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 vollen Saldo von
platform_fee_vault zu recipient_token_account. Rückgängigmachen, wenn der Vault leer ist.
CollectExcessLamports
Admin-Einzug von Lamports, die über dem Rent-Exempt-Minimum auf Konten sitzen, die LaunchLab kontrolliert. Hinzugefügt im 2026-09-Upgrade, damit das Protokoll die Über-Finanzierung zurückfordern kann, die die SIMD-0437 Rent-Reduktion auf Konten hinterlässt, die vor jedem Schritt erstellt wurden.
Nur der Überschuss bewegt sich. Token-Salden, Kontodaten, Besitzer, Kurven-Status und Vesting bleiben unberührt, und die Anweisung ist ein No-Op gegen ein Konto, das bereits bei seinem Minimum ist — daher ist es sicher, nach jedem Rollout-Schritt erneut auszuführen.
Argumente — keine.
Konten
authority auswählen
Das Konto wird ungeprüft übergeben und vom Programm aufgelöst, das alle drei LaunchLab-Authority PDAs neu ableitet und passt:
Ein Schlüssel, der keinem der drei passt, schlägt die ganze Anweisung mit
InvalidOwner (6001) fehl.
Wie jedes Quellkonto behandelt wird
Base Mints können nicht eingezogen werden.
InitializeV2 und InitializeWithToken2022 widerrufen MintTokens auf dem Base Mint in der gleichen Anweisung, die die Supply prägt, daher kann kein Schlüssel WithdrawExcessLamports dafür unterzeichnen — die Miete des Mint bleibt permanent dort.
Häufige Fehler — InvalidOwner (6001, falscher Unterzeichner oder eine authority, die keine der drei PDAs ist), LamportsCalculateError (6031, die wSOL-Rundreise nettete nicht zu Null), und InsufficientFunds vom Programm-eigenen Pfad, wenn ein Konto weniger als seine eigene Rent-Minimum hält.
Kein SDK-Builder. @raydium-io/raydium-sdk-v2 liefert keinen Builder für diese Anweisung, und auch das raydium-sdk-V2-demo Repo nicht — es ist ein Admin-Pfad. Kodieren Sie es von Hand, wie die Wallet-seitige Einzug in solana-fundamentals/rent-and-reclaimable-rent für die Token-Programm-Anweisung.
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

