Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Versionsbanner.
- SDK:
@raydium-io/raydium-sdk-v2@0.2.64-alpha - Cluster: Solana
mainnet-beta - Program ID: siehe
reference/program-addresses - Zuletzt verifiziert: 2026-09-09 gegen SDK
0.2.64-alphaQuellcode,raydium-sdk-V2-demo/src/launchpadund denraydium-launchProgrammquellcode
package.json. Die Bonding-Curve-Schnittstelle hat sich zwischen Minor-Releases weiterentwickelt.Setup
Die Demos hier spiegeln Dateien inraydium-sdk-V2-demo/src/launchpad wider. Das Bootstrap folgt der config.ts.template des Demo-Repos:
Launch erstellen
Quelle:src/launchpad/createMint.ts (und createBonkMintApi.ts für die API-gesteuerte Bonk-Variante)
Die meisten der Launch-Wirtschaftlichkeit sind keine Argumente — sie stammen aus der GlobalConfig, die Sie über configId binden, und das SDK füllt den Rest aus den Standard-Parametern der API. Sie übergeben die Identität des Mint, die zu bindende Config und (optional) einen ersten Kauf:
- Es gibt kein
curveType,graduationFractionBps,initialK,quoteMint,openTime,feesoderpostGraduationLpPolicyArgument. Die Kurvenform und der Quote-Mint sind Eigenschaften derGlobalConfig, die Sie binden; Gebührensätze befinden sich aufGlobalConfigundPlatformConfig; LP-Entsorgung bei Graduation ist einePlatformConfig-Einstellung. Sieheproducts/launchlab/instructionsfür genau das, wasInitializeV2akzeptiert. symbollänger als 10 Zeichen und ein leereruriwerden beide client-seitig abgelehnt, bevor ein RPC erfolgt.- Das Übergeben von
transferFeeExtensionParamsschaltet den Builder aufInitializeWithToken2022um und erzwingtmigrateTypeauf"cpmm". - Der Builder gibt ein
transactionsArray zurück;createOnly: falsefügt die First-Buy-Transaktion hinzu. Führen Sie immerexecute({ sequentially: true })aus — der Mint muss existieren, bevor der Kauf landet.
Launch-Status abrufen
Quelle:src/launchpad/poolInfo.ts
Es gibt kein getLaunchById. Die Pool-ID ist eine PDA von (programId, mintA, mintB), und getRpcPoolInfo gibt den dekodierten PoolState mit seiner gebundenen configInfo zurück:
getRpcPoolsInfo({ poolIdList }) ist die Batch-Form und gibt eine poolInfoMap zurück, die nach Pool-ID indiziert ist — verwenden Sie sie für Portfolio-Ansichten statt zu loopen. Wenn Sie die Raw-Accounts selbst dekodieren möchten, sind LaunchpadPool.decode und LaunchpadConfig.decode exportiert.
Kauf — exakte Quote rein
Quelle:src/launchpad/buy.ts
Der Off-Chain-Quote-Helper ist Curve.buyExactIn, eine statische Methode auf der exportierten Curve-Klasse — keine Methode auf raydium.launchpad. Der Transaction Builder ist buyToken. Beide benötigen die Gebührensätze der Plattform, die sich auf einem separaten PlatformConfig-Konto befinden:
minMintAAmount explizit statt slippage übergeben; lassen Sie beide weg und das SDK berechnet die Grenze aus Live-RPC-Daten. shareFeeRate darf poolInfo.configInfo.maxShareFeeRate nicht überschreiten, und es gilt nur, wenn Sie auch einen shareFeeReceiver übergeben.
Kauf — exakte Basis raus
Der Builder istbuyTokenExactOut, und die Mengenargumente sind outAmount (Basis, die Sie möchten) und maxBuyAmount (Quote, die Sie maximal ausgeben). Curve.buyExactOut({ poolInfo, amountA, ... }) ist die entsprechende Off-Chain-Vorschau.
outAmount von Null client-seitig ab, und das Programm wird zurückgewiesen, wenn sich die Kurve so weit bewegt hat, dass die Quote-Anforderung maxBuyAmount überschreitet.
Verkauf
Quelle:src/launchpad/sell.ts
Der Builder ist sellToken (sellTokenExactOut für die exakte-Quote-raus-Variante), mit sellAmount und einem optionalen minAmountB. Curve.sellExactIn({ poolInfo, amountA, ... }) zeigt eine Vorschau.
real_a um sellAmount gibt quote_out zurück, das der integrierten Fläche unter der Kurve zwischen real_a − sellAmount und real_a entspricht, minus der Verkaufsgebühr. sellAmount muss größer als Null sein — der Builder lehnt Null client-seitig ab.
Graduation
Diese Wallets werden von Raydium’s Graduation-Crank betrieben, daher landet die Migration in der Praxis Sekunden nach Überschreitung des Schwellwerts, unabhängig davon, wer den letzten Kauf getätigt hat. Von der Integrator-Seite ist das Einzige, was zu tun ist, die Statusübergang als schnelles Ereignis zu behandeln: Fragen SiegetRpcPoolInfo ab (oder abonnieren Sie über gRPC, unten) und wechseln Sie Ihre UI von der Kurve zum resultierenden CPMM-Pool, wenn sich status ändert.
Siehe products/launchlab/instructions für die Kontolisten, die Migrationsgebühr und wie LP bei Graduation aufgeteilt wird.
Creator-Gebühren sammeln
Quelle:src/launchpad/claimCreatorFee.ts (einzelner Mint) und collectAllCreatorFees.ts (Batch)
Die Methode ist claimCreatorFee (und claimMultipleCreatorFee für die Batch-Form). Sie wird nach dem Quote-Mint indiziert, nicht nach einem Launch — ein Aufruf fegt die aufgelaufenen Creator-Gebühren des Unterzeichners in diesem Mint über ihre Launches:
claimPlatformFee / claimAllPlatformFee / claimVaultPlatformFee Builder.
Einen Launch durch seinen Lebenszyklus verfolgen
Alles zusammen könnte ein Überwachungsskript so aussehen:getRpcPoolInfo auf einem 10-Sekunden-Timer ist für einen einzelnen Launch in Ordnung. Für einen Indexer verwenden Sie stattdessen das gRPC-Abonnement unten — getRpcPoolsInfo({ poolIdList }) Batches, aber das Abfragen von Hunderten von Pools verbrennt immer noch RPC-Guthaben ohne Nutzen.
Configs und Pools über gRPC überwachen
Quelle:src/grpc/launchpadPoolInfo.ts
Abonniert das LaunchLab-Programm über Yellowstone gRPC und protokolliert jedes GlobalConfig und PoolState Update mit dem Tokenprogramm jedes Mint. Zwei datasize Filter auf einem accounts Abonnement trennen die beiden Kontotypen, daher deckt ein einzelner Stream beide ab.
Die Demo ist die kürzeste korrekte Referenz zum Klassifizieren der Mints eines Launch, was die Token-2022 Quote-Mint-Veröffentlichung notwendig macht:
- Pools werden direkt aus
PoolState.token_program_flagklassifiziert, dekodieren Bit0 für den Basis-Mint und Bit1 für den Quote-Mint ohne Mint-Abruf überhaupt. Das Testen des ganzen Bytes gegen0— was ausreichend war, während Quote-Mints nur Legacy waren — missinterpretiert einen Legacy-Basis-Mint als Token-2022, wenn der Quote-Mint Token-2022 ist. - Configs können auf diese Weise nicht klassifiziert werden: Eine
GlobalConfigspeichert die Adresse ihres Quote-Mint und kein Programmflag, daher liest die Demo das Owner des Mint-Kontos einmal und cached es pro Mint.
create versus update aus den eigenen Caches der Demo abgeleitet wird, die beim Start aus getProgramAccounts gesät werden; mit dieser Aussaat deaktiviert, lesen Sie „create” als „zuerst auf diesem Stream gesehen”.
gRPC-Zugriff ist nicht Teil der öffentlichen RPC-Oberfläche — siehe die src/grpc/README.md des Demo-Repos.
Rust CPI
Das Aufrufen von LaunchLab aus Ihrem eigenen Anchor-Programm ist selten (die meisten Launch-Integrationen sind nur TS-seitig). Wenn Sie es tun:- Die Crate ist
raydium-launchpad(lib nameraydium_launchpad), Version0.2.0, und sie stellt eincpiFeature bereit. Es gibt keinraydium_launchlab. - Es ist nicht auf crates.io veröffentlicht — hängen Sie davon nach Git-Revision ab, auf die gleiche Weise wie die anderen Raydium-Programm-Crates.
- Die CPI-Einstiegspunkte sind nach den On-Chain-Anweisungen benannt, nicht nach den SDK-TypeScript-Methoden:
buy_exact_in,buy_exact_out,sell_exact_in,sell_exact_out,claim_creator_fee,create_vesting_account,claim_vested_token.migrate_to_amm/migrate_to_cpswapsind Unterzeichner-gated zu denGlobalConfigMigrations-Wallets und können nicht von einem Integrator-Programm aufgerufen werden.
sdk-api/rust-cpi für die Crate-Pinning-Regeln — insbesondere die Anchor-Versions-Aufteilung, die entscheidet, ob eine Crate sowohl in LaunchLab als auch in CLMM CPI kann.
Fallstricke
- Verwechslung von On-Chain-Anweisungsnamen mit SDK-Methodennamen. Das Programm hat
buy_exact_in/sell_exact_in; das SDK hatbuyToken/sellToken.buyExactInundsellExactInexistieren nur als statische Methoden aufCurve, und sie berechnen ein Quote — sie erstellen keine Transaktion. - Vergessen von
extraSigners.createLaunchpaderstellt den Basis-Mint aus einem Keypair, das Sie generieren, daher muss dieser Keypair signieren. Lassen SieextraSigners: [pair]weg und die Transaktion schlägt bei der Signaturverifizierung fehl. - Nicht den Quote-Mint wählen. Sie übergeben keinen. Der Quote-Mint ist eine Eigenschaft der
GlobalConfig, die Sie überconfigIdbinden —getPdaLaunchpadConfigId(programId, quoteMint, curveType, index). Um gegen einen anderen Quote-Mint zu starten, binden Sie eine andere Config;raydium.api.fetchLaunchConfigs()listet die verfügbaren mit ihren Standard-Parametern auf. - Metadaten-Größe. Lange
uriStrings drücken die Metaplex CPI über das Budget. Halten Sieuriunter ~200 Zeichen — die meisten CDN-gehosteten JSON-Metadaten passen leicht.symbolist hart auf 10 Zeichen begrenzt. - Graduation als Rennen behandeln, in das Sie eintreten können. Das ist es nicht — siehe die Warnung oben. Ihre UI sollte
statusÜbergänge immer noch als schnelle Ereignisse behandeln, da Raydium’s Crank die Migration innerhalb von Sekunden nach Überschreitung des Schwellwerts landet.
Nächste Schritte
products/launchlab/bonding-curve— Kurvenmathematik.products/cpmm/code-demos— was mit dem resultierenden Pool zu tun ist.user-flows/launch-token-launchlab— der End-to-End-Launch-a-Token-Leitfaden, einschließlich Off-Chain-Schritte.
- Raydium SDK v2
- Raydium LaunchLab Programmquellcode

