Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →

Voraussetzungen

Jedes Beispiel auf dieser Seite entspricht einer Datei in raydium-sdk-V2-demo/src/cpmm; der GitHub-Link befindet sich neben jedem Abschnitt. Die Bootstrap-Initialisierung folgt der Datei config.ts.template des Demo-Repositories (Quelle):
Die Raydium-Instanz ist die Fassade des SDK — jedes Beispiel unten verwendet sie. Sie lädt Token-Listen und Gebührenkonfigurationen lazy von api-v3.raydium.io ab; Sie können sie in Offline-Umgebungen mit eigenen Daten vorinitialisieren.

Erstellen eines CPMM-Pools

Quelle: src/cpmm/createCpmmPool.ts
Einige Dinge, die das SDK stillschweigend übernimmt:
  • Mints in Token0/Token1-Reihenfolge sortieren, bevor das PDA abgeleitet wird.
  • Die einmalige create_pool_fee an poolFeeAccount zahlen.
  • Die zugehörigen Token-Konten des Aufrufers erstellen, falls fehlend.
  • Das richtige Token-Programm (SPL Token vs. Token-2022) pro Seite auswählen.
Nach der Bestätigung können Sie den Live-Pool-Status abrufen mit:

Swap (Basis-Input)

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

Swap (Basis-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 anhand der aktuellen Pool-Reserven, bläst jeden um 1 + slippage für die maximum_*-Argumente der Anweisung auf und erstellt die ATA-Kreationen 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 Diese Anweisungen sind Admin- oder Creator-gated und werden typischerweise von einem Signer aufgerufen, der vom Raydium-Multisig oder dem Pool-Creator gehalten wird. Das SDK stellt sie als rohe Builder bereit:
Off-Chain können Sie aufgelaufene Gebühren direkt aus PoolState lesen:

Rust-CPI-Grundgerüst

Wenn Sie CPMM aus Ihrem eigenen Anchor-Programm aufrufen möchten — beispielsweise ein Vault, das im Namen seiner Depositors swapped — sieht der CPI-Kontext wie folgt aus. Die Kontenreihenfolge folgt products/cpmm/instructions.
Wenn Ihr CPI als PDA signiert (z. B. Sie verwalten einen Vault im Namen von Depositors), swappen Sie CpiContext::new gegen CpiContext::new_with_signer und übergeben Sie Ihre Seeds.

Häufige Fallstricke

Eine kurze Checkliste, bevor Sie ein Support-Ticket öffnen:
  • Sortierte Mints. Wenn Ihr abgeleitetes poolState-PDA nicht mit dem On-Chain-Pool übereinstimmt, haben Sie die Mints wahrscheinlich nicht sortiert.
  • Veraltetes API-Quote. Übergeben Sie niemals einen Reservewert von api-v3.raydium.io an CurveCalculator.swap. Rufen Sie den RPC auf.
  • Falsches Token-Programm. Der Vault eines Token-2022-Mints wird von dem 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 ausgedrückt sein, was der Benutzer tatsächlich erhält, nicht in dem, was der Vault sendet.
  • NotApproved bei einem Swap. Überprüfen Sie PoolState.status — der Admin kann die Swaps auf diesem Pool pausiert haben. Siehe products/cpmm/instructions für die Status-Bitmaske.

Wo geht es als Nächstes hin?

Quellen: