Documentation Index
Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
Use this file to discover all available pages before exploring further.
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Dies ist der Changelog der Dokumentation — das Protokoll der Aktualisierungen dieser Seiten ab dem Go-Live des Projekts. Die eigene historische Zeitleiste des Protokolls finden Sie unter
introduction/history-and-milestones. Jeder Eintrag enthält ein Datum, eine Liste betroffener Kapitel, den Auslöser und ein Verifizierungsdatum, das angibt, wann On-Chain-Zustand und Programmquellcode zuletzt mit dem geschriebenen Inhalt abgeglichen wurden.Unveröffentlicht — CLMM: Limit Orders, einseitige Gebühr, dynamische Gebühr
Das nächste CLMM-Release fügt drei Pool-Funktionen hinzu. Sie sind bei der Pool-Erstellung optional aktivierbar und rückwärtskompatibel mit bestehenden Pools und Positionen.TL;DR für Integratoren
- Limit Orders sind jetzt erstklassige CLMM-Primitive. LPs können eine Single-Tick-Order in einem Pool eröffnen, der diese unterstützt; die Order wird FIFO befüllt, wenn ein Swap den Tick kreuzt, und ein Off-Chain-Keeper (
limit_order_admin) kann den gefüllten Output abrechnen, ohne dass der Eigentümer online sein muss. Sieben neue SDK-Methoden (openLimitOrder,increaseLimitOrder,decreaseLimitOrder,settleLimitOrder,closeLimitOrder,closeAllLimitOrder,settleAllLimitOrder) und drei neue Temp-API-Endpunkte unter/limit-order/(aktive Orders, Verlauf pro Nutzer, Ereignisprotokoll pro PDA) decken den gesamten Ablauf ab. - Einseitige Gebühr (
CollectFeeOn) ermöglicht es einem Pool, Swap-Gebühren von der Eingabeseite zu erheben (Legacy, Modus0), immer vontoken_0(Modus1) oder immer vontoken_1(Modus2). Nützlich, wenn eine Seite des Paares das kanonische Buchungstoken ist. - Dynamische Gebühr ermöglicht es einem Pool, einen volatilitätsverfolgenden Aufschlag zu aktivieren, der mit schneller Tick-Bewegung steigt und über die Zeit abklingt, kalibriert durch eine
DynamicFeeConfigpro Tier und eineDynamicFeeInfopro Pool. Der neue Endpunkt/main/clmm-dynamic-configliefert die Tier-Liste. - Eine neue Instruktion,
CreateCustomizablePool, macht alle drei Parameter bei der Pool-Erstellung zugänglich. Das klassischeCreatePoolfunktioniert weiterhin für Pools mit Standard-Gebühren ohne Limit Orders. - Breaking Change für Indexer: Die richtungsbezogenen Volumen-Zähler (
swap_in_amount_token_{0,1},swap_out_amount_token_{0,1}) und die lebenslangen Gebühren-Zähler (total_fees_token_{0,1},total_fees_claimed_token_{0,1}) inPoolStatewurden in Padding überführt, um Platz fürfee_onunddynamic_fee_infozu schaffen. Indexer, die diese Felder direkt lesen, müssen auf den On-Chain-Observation-Ring oder die API migrieren.
Warum das wichtig ist (für Trader, LPs und Integratoren)
- Trader erhalten engere Quotes bei Long-Tail- und ereignisgetriebenen Paaren: Die dynamische Gebühr ermöglicht es dem Pool, Volatilitätsaufschläge vom Taker zu absorbieren, ohne dass LPs ihre Ranges aktiv ausweiten müssen, und Limit-Order-Leitern vertiefen On-Chain-Liquidität zu bestimmten Preisen, ohne kapitalintensive Range-weite Positionen einzugehen.
- LPs erhalten eine dritte Strategie neben konzentrierten Ranges und Full-Range-Positionen: exakte Preisorders parken, bei Preisbesuch gefüllt werden, in das Quote-Token abrechnen. Kein aktives Rebalancing für den gefüllten Anteil erforderlich.
- Integratoren können Pools mit dynamischer Gebühr deterministisch modellieren — Algorithmus und Parameter sind vollständig On-Chain, die Kalibrierungs-Tiers sind abfragbar, und der Swap-Pfad ist in seiner Form unverändert (nur die Gebühr pro Schritt variiert).
Was sich im Programm geändert hat
Neue Accounts
DynamicFeeConfig— Kalibrierungsdatensatz pro Tier (Filterperiode, Abklingperiode, Reduktionsfaktor, Dynamische-Gebühr-Steuerung, maximaler Volatilitätsakkumulator). Erstellt durchCreateDynamicFeeConfig(Admin), referenziert durchCreateCustomizablePoolbei aktivierter dynamischer Gebühr.LimitOrderState— Account pro Order (PDA-Seeds:[owner, limit_order_nonce, order_nonce]), der Pool, Tick, Seite, Eingabebetrag, ungefülltes Verhältnis, FIFO-Kohortephase und Buchungs-Snapshots enthält. Der Lebenszyklus ist implizit (filled_amountvs.total_amountplus Account-Existenz):Open → Filled → Settled → Closed.LimitOrderNonce— monoton steigender Zähler pro (Owner, Nonce-Index), der die Limit-Order-PDA-Seeds erhält. Dernonce_index: u8erlaubt es demselben Owner, Orders in bis zu 256 unabhängige Nonce-Streams zu partitionieren.
PoolState-Umstrukturierung
| Feldgruppe | Altes Layout | Neues Layout |
|---|---|---|
| Richtungsbezogene Volumen-Zähler | swap_in_amount_token_0, swap_out_amount_token_0, swap_in_amount_token_1, swap_out_amount_token_1 | In padding5: [u128; 4] überführt |
| Lebenslange Gebühren-Zähler | total_fees_token_0, total_fees_claimed_token_0, total_fees_token_1, total_fees_claimed_token_1 | In padding6: [u64; 4] überführt |
| Einseitige Gebühr | — | fee_on: u8 (0 = FromInput, 1 = Token0Only, 2 = Token1Only) |
| Dynamische Gebühr | — | dynamic_fee_info: DynamicFeeInfo (eingebettet) |
PoolState auf den Observation-Ring oder die API um. Die zurückgezogenen Zähler werden bei bestehenden Pools nicht auf null gesetzt (sie behalten den zuletzt gespeicherten Wert), daher liefert ein erneutes Lesen nach dem Upgrade veraltete Daten.
TickState-Ergänzungen (kein Breaking Change)
Am Ende von TickState werden vier neue Felder hinzugefügt, die einen Teil des Tail-Paddings ersetzen:
order_phase: u64— Zähler zur Unterscheidung von Limit-Order-Kohorten an diesem Tick.orders_amount: u64— Gesamter Eingabebetrag aller offenen Orders an diesem Tick (nicht alle davon sind vollständig ungefüllt).part_filled_orders_remaining: u64— Noch ungefüllter Eingabebetrag in der Kohorte, die gerade von Swaps konsumiert wird.unfilled_ratio_x64: u128— Q64.64-Verhältnis zur Berechnung des Füllungsanteils jeder Order.
Neue Instruktionen
CreateDynamicFeeConfig(Admin) — Erstellt einen kalibriertenDynamicFeeConfig-Tier. Berechtigung: dasselbe Treasury-Multisig wieCreateAmmConfig.UpdateDynamicFeeConfig(Admin) — Aktualisiert die Parameter eines bestehenden Tiers.CreateCustomizablePool— Pool-Erstellungs-Einstiegspunkt, dercollect_fee_on,enable_dynamic_feeunddynamic_fee_configexponiert. Koexistiert mitCreatePool; wir empfehlenCreateCustomizablePoolfür jeden neuen Pool, der die neuen Parameter benötigt.OpenLimitOrder— Eröffnet eine Single-Tick-Limit-Order. ErhöhtLimitOrderNonce, allokiertLimitOrderState, fügt die Order in die FIFO-Kohorte am Tick ein.IncreaseLimitOrder/DecreaseLimitOrder— Passt den ungefüllten Anteil einer Order an. Gibt bei einer vollständig gefüllten OrderInvalidOrderPhasezurück.SettleLimitOrder— Überweist gefüllten Output in das ATA des Eigentümers. Der Aufrufer kann der Eigentümer oder derlimit_order_admin-Keeper des Pools sein.CloseLimitOrder— Schließt eine vollständig abgerechnete Order, um die Miete zurückzufordern.
Verhaltensänderungen bei SwapV2
Der Swap-Pfad selbst ist in seiner Form unverändert, aber drei Dinge passieren nun auf dem Weg:
- Dynamische Gebühr (wenn aktiviert): Die
DynamicFeeInfodes Pools wird bei jedem Schritt aktualisiert (Abklingen → Akkumulieren → Begrenzen), und der resultierende Aufschlag wird zusätzlich zur Basisgebühr für diesen Schritt addiert. - Limit-Order-Matching (wenn der Schritt einen initialisierten Tick mit offenen Orders kreuzt): Ein Teil des Swap-Inputs wird FIFO verbraucht, um die Kohorte an diesem Tick zu füllen, wobei
unfilled_ratio_x64atomar aktualisiert wird. - Einseitiges Gebühren-Routing (wenn
fee_on != 0): Die Gebühr wird unabhängig von der Swap-Richtung vontoken_0odertoken_1erhoben, anstatt immer von der Eingabeseite.
Neue Fehlercodes
DasErrorCode-Enum wurde in diesem Release neu nummeriert: Fünf veraltete Varianten (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) wurden entfernt und elf neue Varianten angehängt. Da Anchor Fehler per Enum-Reihenfolge ab 6000 nummeriert, hat sich jeder Fehlercode an oder nach den entfernten Positionen verschoben — Clients, die numerische Codes fest kodiert haben, müssen eine Neuzuordnung vornehmen.
Die neuen Codes lauten:
6040OrderAlreadyFilled6041InvalidOrderPhase6042InvalidLimitOrderAmount6043OrderPhaseSaturated6044InvalidDynamicFeeConfigParams6045InvalidFeeOn6046ZeroSqrtPrice6047ZeroLiquidity6048MissingBaseFlag6049MissingMintAccount6050MissingTokenProgram2022
Was sich im SDK geändert hat (@raydium-io/raydium-sdk-v2)
- Neue Methoden auf
raydium.clmm:createCustomizablePool,openLimitOrder,increaseLimitOrder,decreaseLimitOrder,settleLimitOrder,settleAllLimitOrder,closeLimitOrder,closeAllLimitOrder. - Neue REST-Hilfsmethoden auf
raydium.api:getClmmDynamicConfigs,getClmmLimitOrderConfigs. - Neue Typen:
CollectFeeOn-Enum,DynamicFeeConfig,DynamicFeeInfo,LimitOrderState,LimitOrderConfig. - Interne Umstrukturierung:
utils/wurde nachlibraries/verschoben. Der Paket-Barrel ist unverändert; nur tiefe Imports unter@raydium-io/raydium-sdk-v2/utils/...müssen auf…/libraries/...aktualisiert werden.
products/clmm/code-demos.
Was sich in den APIs geändert hat
api-v3— zwei neue Endpunkte unter/main/:GET /main/clmm-dynamic-config— Liste derDynamicFeeConfig-Tiers.GET /main/clmm-limit-order-config— Limit-Order-Konfiguration pro Pool.
temp-api-v1— drei neue Endpunkte unter/limit-order/:GET /limit-order/order/list?wallet=…— Aktuell geparkter Orders einer Wallet (offen und teilweise gefüllt, aus dem Redis-Cache des Indexers geliefert; derselbe Payload deckt beide Phasen übertotalAmount/filledAmount/pendingSettleab).GET /limit-order/history/order/list-by-user?wallet=…— Historische Limit Orders einer Wallet. Optionale Filter:poolId,mint1,mint2,hideCancel. Cursor-paginiert übernextPageId/size(max. 100).GET /limit-order/history/event/list-by-pda?pda=…— Ereignisprotokoll pro PDA (open/increase/decrease/settle/close) für eine oder mehrere kommagetrennte Limit-Order-PDAs. Cursor-paginiert übernextPageId/size(max. 100).
Berechtigungsumfang
Derlimit_order_admin ist ein Off-Chain-Betriebskeeper, kein Multisig. Er kann nur SettleLimitOrder und CloseLimitOrder für bestehende Orders aufrufen, und der Output einer Abrechnung landet immer im ATA des Eigentümers. Er kann keine Pool-Felder mutieren, Orders eröffnen oder ändern oder für irgendetwas anderes signieren. Siehe Admin-Schlüssel und Multisig → CLMM.
Aktualisierte Seiten
products/clmm/overview— neuer Abschnitt „Was ist neu” und aktualisierte Verweise auf nächste Schritte.products/clmm/accounts— drei neue Accounts,PoolState-Umstrukturierung mit Migrationswarnung,TickState-Ergänzungen, neue PDA-Hilfsfunktionen.products/clmm/instructions— sieben neue Instruktionen,SwapV2-Verhaltensanhang, aktualisierte Zustandsänderungsmatrix.products/clmm/fees— Abschnitt zur einseitigen Gebühr, Abschnitt zur dynamischen Gebühr mit Parametertabelle.products/clmm/math— Limit-Order-Matching-Pseudocode, Herleitung der dynamischen Gebühr.products/clmm/code-demos—createCustomizablePool-Demo, vollständiger Limit-Order-Walkthrough, neue Fallstricke.algorithms/clmm-math— Querverweise auf Limit-Order-Matching und dynamische Gebühr in der Multi-Tick-Swap-Schleife.sdk-api/typescript-sdk— Abschnitt zu CLMM-Modul-Ergänzungen, Migrationshinweisutils/→libraries/.api-reference/openapi/api-v3.yaml— zwei neue Endpunkte mit Response-Schemas.api-reference/openapi/temp-api-v1.yaml— drei neue Limit-Order-Endpunkte (/limit-order/order/list,/limit-order/history/order/list-by-user,/limit-order/history/event/list-by-pda) mit ihren Request- und Response-Schemas.api-reference/api-v3/overview— Hinweis auf die neuen CLMM-Konfigurations-Endpunkte.api-reference/temp-api-v1/overview— Hinweis auf die neuen Endpunkte für aktive Orders, Verlauf nach Nutzer und Ereignisse nach PDA.reference/error-codes— elf neue CLMM-Fehlercodes (6040–6050) sowie fünf entfernte Legacy-Codes; numerische Codes nach den Entfernungspunkten haben sich verschoben.security/admin-and-multisig— neue Admin-Zeile fürDynamicFeeConfigund Keeper-Zeile fürlimit_order_adminmit Erläuterung des begrenzten Berechtigungsumfangs.
raydium-clmm-Quellcode.@raydium-io/raydium-sdk-v2-Quellcode.api-v3- undtemp-api-v1-Quellcode.
2026-04-26 — Erstveröffentlichung
Erste öffentliche Version des Raydium-Dokumentationssatzes. Verifiziert gegen:- Live-Programmdeployments auf Solana Mainnet-Beta.
@raydium-io/raydium-sdk-v2@0.2.42-alpha.- Öffentliche Raydium-Dokumentation und On-Chain-Referenzen bis April 2026.
Dokumentationskonventionen
- Versionierung: Diese Dokumentation verwendet kalenderbasierte Versionierung (JJJJ-MM-TT). Jede Aktualisierung erzeugt einen neuen Eintrag am Anfang der Datei.
- Verifizierungsdatum: Jeder Eintrag gibt an, wann der Inhalt zuletzt gegen den On-Chain-/API-Zustand und den Programmquellcode abgeglichen wurde. Ist kein Datum angegeben, gilt das Hauptdatum des Eintrags.
- Breaking Changes: Auf betroffenen Seiten in einer hervorgehobenen Warnung ausgewiesen und im jeweiligen Eintrag gekennzeichnet.
- Abdeckung: Dieser Changelog bezieht sich auf den Dokumentationssatz selbst. Die eigene historische Zeitleiste des Protokolls befindet sich unter
introduction/history-and-milestonesund ist die maßgebliche Quelle dafür, „wann X auf Raydium passiert ist”.
Korrekturen
Falls Sie einen Fehler in dieser Dokumentation finden, öffnen Sie bitte ein Issue oder einen Pull Request im Dokumentations-Repository. Korrekturen werden in diesem Changelog protokolliert.Verweise
introduction/history-and-milestones— die eigene Zeitleiste des Protokolls.security/audits— Audit-Verlauf.ray/protocol-fees— Aufteilung der Protokollgebühren.reference/program-addresses— maßgebliche Quelle für Programm-IDs.


