Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Versionsbanner. Diese Seite dokumentiert
@raydium-io/raydium-sdk-v2@0.2.64-alpha, die Version, die alle Code-Demos auf dieser Website verwenden. Das SDK ist noch nicht 1.0 und die Typ-Oberfläche hat sich über Releases hinweg entwickelt — fixieren Sie Ihre Version.Die Version wurde am 2026-09-09 von 0.2.42-alpha auf 0.2.64-alpha angehoben, zusammen mit den Programm-Upgrades: 0.2.64-alpha ist die aktuelle SDK-Version. Das raydium-sdk-V2-demo-Repository, auf das die Code-Demo-Seiten verlinken, installiert 0.2.62-alpha, daher fixieren Sie eine dieser Versionen, wenn Sie eine Demo wörtlich befolgen. Die Demos auf diesen Seiten wurden zuletzt gegen 0.2.42-alpha (2026-04) ausgeführt; ihre Aufrufsignaturen wurden am 2026-09-09 gegen die 0.2.64-alpha-Quelle erneut überprüft, aber behandeln Sie jede Abweichung als Dokumentationsfehler und öffnen Sie ein Issue.Installation
.d.ts neben seinem JS-Artefakt ausgeliefert. Minimale Toolchain: Node 18+, TypeScript 5.0+, moduleResolution: "bundler" oder "node16".
Initialisierung
Der Einstiegspunkt istRaydium.load:
Raydium.load ist asynchron, weil es standardmäßig die Token-Liste (raydium.token.load()) von api-v3.raydium.io lädt. Übergeben Sie disableLoadToken: true, um diesen Abruf zu überspringen. Die Verfügbarkeits-Feature-Prüfung ist ein separater Aufruf von /v3/main/AvailabilityCheckAPI und wird bereits übersprungen, sofern Sie nicht explizit disableFeatureCheck: false übergeben. Gebührenkonfigurationen werden zur Ladezeit überhaupt nicht abgerufen — sie kommen bei der ersten Verwendung träge von raydium.api.getCpmmConfigs() / getClmmConfigs().
Die Modulfassaden
Nach dem Laden stellt dasraydium-Objekt zehn Modulfassaden plus einen API-Client bereit:
Transaktions-Builder
Jede mutierende Funktion gibt einen Builder zurück, anstatt sofort auszuführen:execute— eine Komfortfunktion, die signiert und sendet. Äquivalent zubuilder.execute.builder— dieTxBuilder-Instanz mit allen angesammelten Anweisungen und Unterzeichnern.builder.build()gibt einTxBuildDatazurück, dessentransactioneine einzelne Legacy-Transactionist;builder.buildV0()gibt einTxV0BuildDatamit einer einzelnenVersionedTransactionzurück. NurbuildMultiTx/buildMultiTxV0erzeugen ein Array.transaction— die gebauteTransaction/VersionedTransaction.instructionTypes/signers— die angesammelten Anweisungs-Labels und der Unterzeichner-Satz.extInfo— produktspezifische Extras. Beispielsweise gibtcpmm.createPoolextInfo.address.{poolId, lpMint, vaultA, vaultB}zurück;launchpad.createLaunchpadgibtextInfo.addresszurück (einLaunchpadPoolInfopluspoolId).
Es gibt kein Feld
innerTransactions im Rückgabetyp — es zu destrukturieren ist ein TypeScript-
Fehler. Builder, deren Rückgabetyp MakeMultiTxData ist (zum Beispiel
clmm.harvestAllRewards, farm.harvestAllRewards, tradeV2.swap,
launchpad.createLaunchpad), stellen stattdessen transactions bereit, und ihr execute erfordert
{ sequentially: boolean } und liefert { txIds } statt { txId }.txVersion steuert das Legacy- vs. V0-Transaktionsformat. V0 (Address Lookup Tables) ist die Standard-Empfehlung — es ermöglicht größere Swaps in einer einzelnen Transaktion.
Warum asynchrone Builder?
Fast jeder Builder ruft intern On-Chain-State ab: Pool-Informationen (für Quotes), Token-Programm-Eigentümerschaft (für Token-2022 vs. SPL-Routing), Account-Rent-Exemption (für ATA-Erstellung) usw. Das SDK speichert aggressiv, aber der erste Aufruf für einen neuen Pool beinhaltet RPC-Roundtrips. Behalten Sie eine langlebigeraydium-Instanz, um erneutes Abrufen zu vermeiden.
CLMM-Modul-Erweiterungen (neueste Version)
Die CLMM-Fassade erhielt Oberflächen für die neuen dynamischen Gebühren-, einseitigen Gebühren- und Limit-Order-Funktionen:raydium.clmm.createCustomizablePool— Obermenge voncreatePool, diecollectFeeOnunddynamicFeeConfig(denPublicKeydes Config-Kontos) akzeptiert. Das Übergeben vondynamicFeeConfigist es, was dynamische Gebühren aktiviert; es gibt kein separatesenableDynamicFee-Flag und keindynamicFeeConfigId. KlassischescreatePoolfunktioniert weiterhin für Pools mit Standardgebühren.raydium.clmm.openLimitOrder— öffnet eine Limit-Order mit einem einzelnen Tick. NimmtpoolInfo,baseIn(Richtung),orderTick,amountund optionaltickArrayBitmap,noneIndex,ownerInfo. Verwenden Sie den exportierten HelfergetOrderTick({ baseIn, mintADecimal, mintBDecimal, tickSpacing, price }), um den Tick zu quantisieren.raydium.clmm.increaseLimitOrder/decreaseLimitOrder— passen Sie den ungefüllten Teil einer bestehenden Order an. Beide nehmen{ poolInfo, limitOrder, amount };decreaseLimitOrderfügt ein optionalesslippagehinzu. Das Verringern wird bei einer vollständig gefüllten Order mitInvalidOrderPhasezurückgewiesen.raydium.clmm.settleLimitOrder/settleAllLimitOrder— fegen Sie gefüllte Ausgaben zur ATA des Eigentümers.settleLimitOrdernimmt nur{ limitOrder }— keinpoolInfo. Entweder der Eigentümer der Order oder derlimit_order_admin-Keeper des Programms können sie aufrufen.raydium.clmm.closeLimitOrder/closeAllLimitOrder— schließen Sie vollständig abgewickelte Orders, um Rent zurückzugewinnen.raydium.api.getClmmDynamicConfigs()— REST-Helfer, der den neuen/main/clmm-dynamic-config-Endpunkt trifft. (Es gibt keinen Limit-Order-Config-Helfer und keinen solchen Endpunkt: Limit-Orders werden über den Tick geschlüsselt, nicht über ein Config-Konto pro Pool.)
@raydium-io/raydium-sdk-v2/<anything> in keiner Schreibweise auf — importieren Sie alles aus dem Top-Level-Barrel. (Intern wurde src/raydium/clmm/utils/ in src/raydium/clmm/libraries/ umbenannt, aber das war nie ein öffentlicher Einstiegspunkt.)
End-to-End-TypeScript-Walkthroughs finden Sie in products/clmm/code-demos.
Häufige Fallstricke
1. Cluster-Mismatch
Die SDK-Startkonfiguration ist clusterspezifisch. Das Mischen voncluster: "mainnet" mit einer Devnet-Connection verursacht stille Fehlleitung: Das SDK quotiert gegen Mainnet-AmmConfig, sendet aber an Devnet. Übergeben Sie immer beide.
2. Vergessen, ATAs vorab zu erstellen
Bei der ersten Interaktion mit einem Mint existiert das Associated Token Account des Benutzers möglicherweise nicht. Das SDK stellt automatisch eineAssociatedTokenAccount::create-Anweisung voran, wenn es ein fehlendes ATA erkennt, was eine kleine Menge Rent kostet. Wenn Ihre Wallet wenig SOL hat, schlägt dies stillschweigend fehl. Überprüfen und finanzieren Sie vor dem erneuten Versuch.
3. Veraltete poolInfo
poolInfo ist ein gecachter Snapshot. Wenn sich der Pool-Status seit dem Abrufen geändert hat (ein großer Trade hat den Preis bewegt, sagen wir), kann die minAmountOut des Swaps gegen den alten Status berechnet werden und unter dem On-Chain-Amount-Out landen, was zu einer Rückweisung führt. Rufen Sie poolInfo unmittelbar vor dem Erstellen von Transaktionen mit hohem Wert erneut ab, oder verwenden Sie das SDK’s computeAmountOut, das Reserven erneut abfragt.
4. Prioritätsgebühren
Das SDK fügt standardmäßig keine Compute-Unit-Preise hinzu. In Hochlast-Fenster (neue Pool-Starts, Meme-Coin-Events) bedeutet dies, dass Ihre Transaktion mit vielen anderen konkurriert und möglicherweise nicht landet. Geben Sie eine explizitecomputeBudgetConfig an:
integration-guides/priority-fee-tuning für Größenanleitungen.
5. Slippage-Toleranz muss dem Pool-Typ entsprechen
CPMM und AMM v4 verwenden CPMM-Mathematik (niedriger Impact bei normalen Trades). CLMM ist stückweise (Impact springt bei Tick-Übergängen). Wenn Sie eine 0,5%-Slippage-Toleranz aus einem CPMM-Beispiel in einen CLMM-Swap kopieren, der mehrere Ticks kreuzt, wird die Transaktion wahrscheinlich zurückgewiesen. Das SDK’scomputeAmountOut gibt priceImpact zurück; dimensionieren Sie Ihre Toleranz darüber.
6. BN vs. number
Alle Betrag-Felder im SDK sind bn.js-BN-Instanzen — niemals JavaScript-number. Das Konvertieren von Betragswerten über .toNumber() schneidet stillschweigend bei 2^53 ab; für jeden Wert über etwa 9 Billiarden (nicht ungewöhnlich bei 9-dezimalen Mints) wird das falsche Ergebnis erzeugt. Behalten Sie alles in BN, bis zum finalen UI-Rendering.
Versionierungsrichtlinie
@raydium-io/raydium-sdk-v2ist das einzige SDK, das Raydium verwaltet. Alle Docs, Demos und Integrationsleitfäden zielen darauf ab.- Ein älteres v1-Paket (
@raydium-io/raydium-sdk) existiert auf npm aus historischen Gründen. Die Wartung endete, nachdem CPMM und LaunchLab ausgeliefert wurden (v1 erhielt niemals Unterstützung für eines davon), und es gab seit 2024 keine v1-Releases mehr. Behandeln Sie v1 als End-of-Life: Verwenden Sie es nicht für neuen Code und migrieren Sie alle verbleibenden v1-Integrationen zu v2. - SDK v2 ist vor 1.0. Breaking Changes zwischen 0.x Minor-Releases sind möglich; fixieren Sie die Version, die Sie überprüft haben, und überprüfen Sie die GitHub-Release-Notizen beim Upgrade.
Upgrade
Beim Upgrade zwischen SDK Minor-Versionen:- Überprüfen Sie erneut den Rückgabetyp jedes mutierenden Aufrufs — Formänderungen (z. B.
extInfo) landen häufig. - Regenerieren Sie
poolInfo-Abrufsignaturen — ein Feld könnte umbenannt worden sein. - Überprüfen Sie Ihre Slippage-Behandlung erneut; das SDK hat sich über Releases hinweg zwischen Auto-Bound- und Opt-In-Bound-Verhalten verschoben.
- Wenn Sie
raydium.tradeV2(Routing) verwenden, überprüfen Sie die Route-Form erneut — es ist der instabilste Teil der Oberfläche. Beachten Sie, dass die Fassade vontradeintradeV2umbenannt wurde; der alte Name existiert nicht mehr.
Hilfe erhalten
Für SDK- und API-Fragen:- GitHub Issues — reichen Sie ein bei github.com/raydium-io/raydium-sdk-V2/issues für Bugs und Feature-Anfragen. Das Raydium-Team überwacht aktiv.
- Discord —
#dev-support-Kanal bei discord.gg/raydium für synchrone Hilfe. - Telegram — Developer-Chat verlinkt von raydium.io (vermeiden Sie nicht verifizierte Telegram-Gruppen).
security/disclosure.
Verweise
sdk-api/rest-api— das HTTP-Komplement zum SDK.sdk-api/trade-api— vom Server erstellte Swap-Transaktionen.sdk-api/anchor-idl— Regenerieren von Clients direkt aus Programm-IDLs.sdk-api/python-integration— Python-Äquivalent übersolana-py.integration-guides/priority-fee-tuning— Dimensionierung voncomputeBudgetConfig.
- Raydium SDK v2 Quelle
- Raydium SDK Release Notes.

