Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Was dies bewirkt. Erstellt einen neuen CLMM-Pool in der Gebührenebene Ihrer Wahl und öffnet dann eine anfängliche konzentrierte Position. Zwei Transaktionen, ein Skript. Der Code stammt aus den offiziellen Demos in raydium-sdk-V2-demo/src/clmm und wurde auf eine einzelne Node-ausführbare Datei angepasst.

Setup

Stellen Sie sicher, dass Sie die Quick-start-Voraussetzungen gelesen haben und RPC_URL, KEYPAIR sowie die Abhängigkeiten installiert sind. Die CLMM-Pool-Erstellung hat eine einmalige Gebühr plus Tick-Array-Miete für die anfängliche Position. Sie benötigen auch beide Seed-Mints in Ihrer Brieftasche — das Öffnen einer Position, wenn der Preis innerhalb des gewählten Bereichs liegt, erfordert Liquidität auf beiden Seiten.

Schritt 1 — config.ts

Speichern Sie als config.ts. Dies hat die gleiche Form wie das src/config.ts.template des Demo-Repos — disableFeatureCheck wird auf true gesetzt (empfohlen für jede nicht-triviale Integration, damit das SDK sich beim Start nicht auf dem Feature-Detect-Aufruf blockiert):

Schritt 2 — createPool.ts

Speichern Sie neben config.ts. Quelle: src/clmm/createPool.ts.

Schritt 3 — createPosition.ts

Quelle: src/clmm/createPosition.ts.

Schritt 4 — utils.ts

Quelle: src/clmm/utils.ts.

Ausführung

Was ist gerade passiert

Transaktion 1 — raydium.clmm.createPool hat initialisiert:
  • den Pool-Status auf der kanonischen PDA für (mint1, mint2, ammConfig),
  • token_0_vault und token_1_vault (sortiert nach Mint-Byteordnung),
  • den observation-Ringpuffer,
  • die Inline-Tick-Array-Bitmap,
und hat die anfängliche sqrt_price_x64 von Ihrer initialPrice gesetzt. Transaktion 2 — raydium.clmm.openPositionFromBase öffnete eine konzentrierte Position:
  • mintete ein Positions-NFT in Ihre Brieftasche (das NFT ist die Position; das Übertragen überträgt die Position),
  • ordnete Tick-Arrays an den unteren und oberen Grenzen zu (einmalige Miete bei der ersten Position in diesen Bereichen; Tick-Arrays werden vom Programm nie geschlossen, daher zahlen nachfolgende Positionen in denselben Arrays keine zusätzliche Miete),
  • zahlte inputAmount von mint1 und den entsprechenden Pairbetrag von mint2 ein (berechnet durch PoolUtils.getLiquidityAmountOutFromAmountIn),
  • gutschrieb die Position mit Liquidität proportional zur Bereichsbreite.
Je enger der Bereich, desto höher die Kapitaleffizienz pro Dollar TVL — und desto schmerzhafter der impermanente Verlust, wenn der Preis außerhalb des Bereichs abweicht. Der oben verwendete Bereich ([0.000001, 100000]) ist praktisch vollständig; enge ihn, um Gebühren nahe dem aktuellen Kurs zu konzentrieren.

Auswahl einer Gebührenebene

clmmConfigs[0] ist die niedrigste Gebührenebene. Der gesamte Satz wird unter GET https://api-v3.raydium.io/main/clmm-config veröffentlicht: Siehe user-flows/choosing-a-pool-type für eine vollständige Entscheidungsmatrix.

Häufige Fehler

  • Pool already exists for this config — Ein CLMM-Pool existiert bereits für dieses (mint1, mint2, ammConfig)-Tripel. Schlagen Sie die vorhandene Pool-ID nach und überspringen Sie Schritt 2.
  • Insufficient funds for amount B — Ihre Brieftasche hat den angeforderten Betrag von mintA, aber nicht den entsprechenden mintB. Das Öffnen einer Position, wenn der Preis innerhalb des Bereichs liegt, erfordert Liquidität auf beiden Seiten.
  • Tick out of range — Ihr lowerPrice oder upperPrice liegt außerhalb des darstellbaren Preisbereichs. Verwenden Sie einen realistischeren Bereich relativ zum aktuellen Preis.
  • Veralteter Preis — Ein Angebot von der API kann 5–60 Sekunden veraltet sein. Wenn executePosition bei Slippage fehlschlägt, entfernen Sie die Kommentierung des getRpcClmmPoolInfo-Blocks in createPosition.ts, um den Live-Preis unmittelbar vor dem Signieren erneut abzurufen.

Vorbehalte

  • Positions-NFT ist Ihr einziger Handle. Verlieren Sie das NFT oder übertragen Sie es, verlieren Sie den Zugriff auf die Position. Behandeln Sie es wie einen Schlüssel.
  • Außerhalb des Bereichs liegende Positionen verdienen keine Gebühren. Wenn der Preis außerhalb von [lowerPrice, upperPrice] liegt, wird Ihre Position vollständig in einem Asset geparkt und verdient nichts, bis Sie sie neu ausbalancieren.
  • Tick-Array-Miete ist einseitig. Die erste Position, die ein nie initialisiertes Tick-Array berührt, zahlt seine Miete; das Programm stellt keinen Weg zur Verfügung, um Tick-Arrays zu schließen, daher ist diese Miete dauerhaft. Nachfolgende Positionen im gleichen Array sind kostenlos.

Nächste Schritte

Quellen: