Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Versionsbanner. Alle TypeScript-Demos zielen auf @raydium-io/raydium-sdk-v2@0.2.42-alpha gegen Solana mainnet-beta ab, verifiziert 2026-04. Das Rust-CPI-Skelett zielt auf raydium-cp-swap im master-Branch, Anchor 0.30.x. Program-IDs werden über Konstanten aus reference/program-addresses bezogen.

Voraussetzungen

Jedes Demo auf dieser Seite spiegelt eine Datei in raydium-sdk-V2-demo/src/cpmm; der GitHub-Link befindet sich neben jedem Abschnitt. Das Bootstrap folgt der config.ts.template des Demo-Repos (Quelle):
Die Raydium-Instanz ist die Fassade des SDK — jedes Demo unten nutzt sie. Sie lädt Token-Listen und Fee-Konfigurationen träge von api-v3.raydium.io; Sie können sie in Offline-Umgebungen mit eigenen Daten vorbelegen.

CPMM-Pool erstellen

Quelle: src/cpmm/createCpmmPool.ts
Ein paar Dinge, die das SDK stillschweigend übernimmt:
  • Sortieren der Mints in token0/token1-Reihenfolge vor der PDA-Ableitung.
  • Zahlen der einmaligen create_pool_fee an poolFeeAccount.
  • Erstellen der zugehörigen Token-Konten des Aufrufers, falls fehlend.
  • Auswahl des richtigen Token-Programms (SPL Token vs. Token-2022) pro Seite.
Nach der Bestätigung können Sie den Live-Pool-Status abrufen mit:

Swap (Base-Input)

Quelle: src/cpmm/swap.ts
Hinweis: Das SDK ruft immer den Pool-Status von einem RPC innerhalb von getPoolInfoFromRpc ab. Zitieren Sie nicht von api-v3.raydium.io für eine Transaktion, die Sie gerade signieren werden — ein Zitat, das einen Block alt ist, kann bei der Landung in ExceededSlippage rutschen.

Swap (Base-Output)

Quelle: src/cpmm/swapBaseOut.ts

Liquidität einzahlen

Quelle: src/cpmm/deposit.ts
Das SDK konvertiert lpAmount in needed_token_0 und needed_token_1 unter Verwendung der aktuellen Reserven des Pools, erhöht jede um 1 + slippage für die maximum_*-Argumente der Anweisung und erstellt die ATA-Erstellungen bei Bedarf.

Liquidität abheben

Quelle: src/cpmm/withdraw.ts

Protokoll-/Fonds-/Creator-Gebühren einziehen

Quelle: src/cpmm/collectCreatorFee.ts, src/cpmm/collectAllCreatorFee.ts Protokoll- und Fondserfassung bleiben behördengesteuert. Creator-Gebühren haben zwei Pfade: die bestehende, von Creator signierte CollectCreatorFee und die additive CollectCreatorFeePermissionless, die jeder Zahler aufrufen kann, aber nur an die kanonischen ATAs des Creators übertragen kann. Das angeheftete SDK stellt die bestehenden Raw-Builder bereit:
@raydium-io/raydium-sdk-v2@0.2.42-alpha stellt noch keinen Builder für CollectCreatorFeePermissionless bereit. Bis eine SDK-Version dies hinzufügt, erstellen Sie aus dem aktualisierten CPMM-IDL oder rufen Sie das Programm direkt auf. Verwenden Sie nicht makeCollectCreatorFeeInstruction erneut: Die neue Anweisung hat einen anderen Diskriminator und ersetzt die Creator-Signer-/amm_config-Positionen durch separate payer- und nicht signierte creator-Konten.
Off-Chain können Sie aufgelaufene Gebühren direkt aus PoolState lesen:

Rust-CPI-Skelett

Wenn Sie CPMM von Ihrem eigenen Anchor-Programm aus aufrufen möchten — beispielsweise einen Tresor, der im Namen seiner Einzahler Swaps durchführt — sieht der CPI-Kontext so aus. Die Kontenreihenfolge folgt products/cpmm/instructions.
Wenn Ihr CPI als PDA signiert (z. B. verwalten Sie einen Tresor im Namen von Einzahlern), tauschen Sie CpiContext::new gegen CpiContext::new_with_signer aus und übergeben Sie Ihre Seeds.

Häufige Fallstricke

Eine kurze Checkliste, bevor Sie ein Support-Ticket öffnen:
  • Sortierte Mints. Wenn Ihre abgeleitete poolState-PDA nicht mit dem On-Chain-Pool übereinstimmt, haben Sie wahrscheinlich vergessen, die Mints zu sortieren.
  • Veraltetes API-Zitat. Übergeben Sie niemals einen Reservewert von api-v3.raydium.io an CurveCalculator.swap. Rufen Sie von einem RPC ab.
  • Falsches Token-Programm. Der Tresor eines Token-2022-Mints wird vom Token-2022-Programm besessen, nicht von SPL Token. Verwenden Sie immer die Felder token_0_program / token_1_program des Pools.
  • Slippage unter-denominiert für Transfer-Fee-Mints. Wenn eine Seite des Pools ein Token-2022-Transfer-Fee-Mint ist, muss Ihr minimum_amount_out in dem denominiert sein, was der Benutzer tatsächlich erhält, nicht in dem, was der Tresor sendet.
  • NotApproved bei einem Swap. Überprüfen Sie PoolState.status — der Admin hat möglicherweise Swaps auf diesem Pool pausiert. Siehe products/cpmm/instructions für die Status-Bitmaske.

Nächste Schritte

Quellen: