Zum Hauptinhalt springen

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 →
Maßgebliche Quelle. Die folgenden Tabellen werden aus der jeweiligen error.rs jedes Programms in den öffentlichen Raydium-Repositories neu generiert. Wenn ein Programm aktualisiert wird und eine neue Variante hinzukommt, führen Sie die Extraktion erneut aus (Link am Ende jeder Tabelle) und fügen Sie die neue Zeile an — anstatt die Tabelle umzusortieren. Anchor-Fehlercodes werden nach Quellreihenfolge vergeben, nicht nach Name; ein Umsortieren bricht das Fehler-Handling von Integratoren.

Wie Anchor-Fehlercodes funktionieren

Anchor weist jeder Variante des ErrorCode-Enums eines Programms einen numerischen Code ab 6000 zu. Bei einer fehlgeschlagenen Transaktion werden folgende Informationen ausgegeben:
  • Numerischer Fehlercode (z. B. 0x1771 = 6001) in den Transaktions-Logs.
  • Fehlername (z. B. InvalidOwner) aus dem IDL.
  • #[msg(...)]-String, den Anchor in log_messages ausgegeben hat.
Integratoren sollten auf den numerischen Code matchen, nicht auf den Meldungstext — der Text kann ohne Versionsänderung umformuliert werden.
// Example: detect the CPMM slippage error and surface a clean UX message.
const CPMM_EXCEEDED_SLIPPAGE = 6005;

try {
  await sdk.cpmm.swap({ ... });
} catch (err: any) {
  const code = err?.error?.errorCode?.number ?? err?.code;
  if (code === CPMM_EXCEEDED_SLIPPAGE) {
    showToast("Price moved past your slippage tolerance. Increase slippage or retry.");
    return;
  }
  throw err;
}

CPMM (Standard AMM) — Fehlercodes

Programm-ID: siehe Programmadressen. Quelle: raydium-cp-swap/programs/cp-swap/src/error.rs.
CodeVariante#[msg]-StringTypische UrsacheEmpfohlene UX-Meldung
6000NotApprovedNot approvedDer Aufrufer ist nicht die konfigurierte Autorität für eine Admin-Anweisung.„Nur der Pool-Admin kann diese Aktion ausführen.”
6001InvalidOwnerInput account owner is not the program addressEin übergebenes Konto gehört dem falschen Programm (oft ein falsches Token-Programm oder ein falscher PDA).„Intern: Konto-Eigentümer stimmt nicht überein — bitte neu laden und erneut versuchen.”
6002EmptySupplyInput token account emptyDas LP- oder Token-Konto-Guthaben ist null an einem Schritt, der einen positiven Betrag erfordert.„Nichts zum Abheben.”
6003InvalidInputInvalidInputGenerisches ungültiges Argument (Betrag außerhalb des gültigen Bereichs, falsches Flag).„Ungültige Eingabe — Beträge prüfen und erneut versuchen.”
6004IncorrectLpMintAddress of the provided lp token mint is incorrectDas übergebene LP-Mint-Konto stimmt nicht mit pool_state.lp_mint überein.„Intern: falscher LP-Mint — Pool-Daten neu laden.”
6005ExceededSlippageExceeds desired slippage limitDer ausgeführte Preis ist schlechter als das vom Nutzer angegebene minAmountOut / maxAmountIn.„Der Preis hat Ihre Slippage-Toleranz überschritten. Slippage erhöhen oder erneut versuchen.”
6006ZeroTradingTokensGiven pool token amount results in zero trading tokensDie Deposit- / Withdraw-Berechnung hat eine Seite auf null gerundet (Position zu klein).„Betrag liegt unter dem Minimum für diesen Pool.”
6007NotSupportMintNot support token_2022 mint extension (Grammatikfehler im Quellcode)Der Pool hat eine Token-2022-Extension, die nicht sicher verarbeitet werden kann (z. B. TransferHook, DefaultAccountState=Frozen).„Dieses Token hat eine Extension, die Raydium im CPMM nicht unterstützt.”
6008InvalidVaultinvaild vault (Tippfehler im Quellcode)Das übergebene Vault-Konto stimmt nicht mit dem in pool_state gespeicherten überein.„Intern: falsches Vault — neu laden und erneut versuchen.”
6009InitLpAmountTooLessInit lp amount is too less(Because 100 amount lp will be locked) (Grammatikfehler im Quellcode)Bei der Pool-Initialisierung liegt das berechnete LP-Angebot unter dem dauerhaft gesperrten Betrag.„Anfängliche Liquidität zu gering. Einzahlung erhöhen.”
6010TransferFeeCalculateNotMatchTransferFee calculate not matchDer beobachtete Post-Transfer-Betrag für einen Token-2022-Gebühr-Mint stimmte nicht mit der vorab berechneten Erwartung überein.„Token-Transfergebühr hat sich während der Transaktion geändert. Erneut versuchen.”
6011MathOverflowMath overflowEine Zwischenberechnung bei Swap / Deposit / Gebühren ist übergelaufen.„Betrag ist zu groß für diesen Pool.”
6012InsufficientVaultInsufficient vaultDas Pool-Vault-Guthaben reicht nicht aus, um den angeforderten Output zu decken.„Nicht genug Liquidität im Pool für diese Größe.”
6013InvalidFeeModelInvalid fee modelDer Admin hat eine AmmConfig-Parameterkombination gesetzt, die On-Chain abgelehnt wird.N/A — nur für Admins.
6014NoFeeCollectFee is zerocollect_protocol_fee / collect_fund_fee wurde aufgerufen, obwohl keine Gebühren eingesammelt werden können.N/A — Admin-Pfad; Tools sollten diesen Fehler ignorieren.
Extraktionsquelle: github.com/raydium-io/raydium-cp-swap — error.rs.

CLMM — Fehlercodes

Programm-ID: siehe Programmadressen. Quelle: raydium-clmm/programs/amm/src/error.rs.
CodeVariante#[msg]-StringTypische UrsacheEmpfohlene UX-Meldung
6000NotApprovedNot approvedDer Aufrufer ist nicht der konfigurierte Admin für diese Anweisung.„Nur der Pool-Admin kann diese Aktion ausführen.”
6001InvalidUpdateConfigFlaginvalid update amm config flagDer Admin hat einen nicht erkannten param-Wert an update_amm_config übergeben.N/A — nur für Admins.
6002AccountLackAccount lackEin erforderliches verbleibendes Konto fehlt in der Transaktion (typischerweise Tick-Array oder Oracle-Extension).„Intern: fehlendes Konto — Pool-Daten neu laden.”
6003ClosePositionErrRemove liquidity, collect fees owed and reward then you can close position accountEs wurde versucht, eine Position zu schließen, die noch Liquidität, nicht eingesammelte Gebühren oder nicht eingesammelte Rewards enthält.„Liquidität abheben und Gebühren/Rewards einsammeln, bevor die Position geschlossen wird.”
6004InvalidTickIndexTick out of rangetick_lower oder tick_upper liegt außerhalb von [-443636, 443636].„Preisbereich außerhalb der Grenzen für diesen Pool.”
6005TickInvalidOrderThe lower tick must be below the upper ticktick_lower >= tick_upper.„Der untere Preis muss unter dem oberen Preis liegen.”
6006TickLowerOverflowThe tick must be greater, or equal to the minimum tick(-443636)Unterer Tick unterschreitet den Mindestwert.„Unterer Preis zu niedrig.”
6007TickUpperOverflowThe tick must be lesser than, or equal to the maximum tick(443636)Oberer Tick überschreitet den Maximalwert.„Oberer Preis zu hoch.”
6008TickAndSpacingNotMatchtick % tick_spacing must be zeroDer übergebene Tick ist kein Vielfaches des tick_spacing des Pools.„Preis auf das nächste gültige Inkrement anpassen.”
6009InvalidTickArrayInvalid tick array accountFalscher PDA für einen Tick-Array-Slot übergeben.„Intern: falsches Tick-Array — Pool-Daten neu laden.”
6010InvalidTickArrayBoundaryInvalid tick array boundaryOff-by-one-Fehler bei der Tick-Array-Indizierung.„Intern: Tick-Array-Grenzfehler.”
6011SqrtPriceLimitOverflowSquare root price limit overflowVom Aufrufer angegebenes sqrt_price_limit außerhalb des gültigen Bereichs.„Preislimit außerhalb des gültigen Bereichs.”
6012SqrtPriceX64sqrt_price_x64 out of rangeDer aktuelle Sqrt-Preis des Pools ist während eines Swaps außerhalb des gültigen Bereichs geraten.„Swap erneut versuchen.”
6013LiquiditySubValueErrLiquidity sub delta L must be smaller than beforeInterne Invariantenverletzung beim Verringern der Liquidität.„Intern: Fehler in der Liquiditätsbuchhaltung.”
6014LiquidityAddValueErrLiquidity add delta L must be greater, or equal to beforeInterne Invariantenverletzung beim Erhöhen der Liquidität.„Intern: Fehler in der Liquiditätsbuchhaltung.”
6015ForbidBothZeroForSupplyLiquidityBoth token amount must not be zero while supply liquidityIncrease-Liquidity-Aufruf mit sowohl amount_0_max als auch amount_1_max gleich null.„Mindestens einen Token-Betrag angeben.”
6016LiquidityInsufficientLiquidity insufficientDie Position hat nicht genug Liquidität, um den Abhebungsbetrag zu erfüllen.„Abhebungsbetrag übersteigt die Liquidität der Position.”
6017PriceSlippageCheckPrice slippage checkDer Ausführungspreis hat die Slippage-Absicherung des Aufrufers nicht bestanden.„Der Preis hat Ihre Slippage-Toleranz überschritten. Slippage erhöhen oder erneut versuchen.”
6018TooLittleOutputReceivedToo little output receivedSwapBaseInput: Ausgabebetrag liegt unter other_amount_threshold.„Slippage überschritten — Mindestausgabe nicht erreicht.”
6019TooMuchInputPaidToo much input paidSwapBaseOutput: Eingabebetrag liegt über other_amount_threshold.„Slippage überschritten — maximale Eingabe überschritten.”
6020ZeroAmountSpecifiedSwap special amount can not be zeroamount in einer Swap-Anweisung ist null.„Einen Betrag größer als null eingeben.”
6021InvalidInputPoolVaultInput pool vault is invalidDas Input-Vault-Konto des Swaps stimmt nicht mit dem im Pool gespeicherten Vault überein.„Intern: falsches Input-Vault — Pool-Daten neu laden.”
6022TooSmallInputOrOutputAmountSwap input or output amount is too smallDie Swap-Berechnung hat auf null gerundet — typischerweise ein sehr kleiner Staubbetrag.„Betrag zu klein für einen Swap in diesem Pool.”
6023NotEnoughTickArrayAccountNot enough tick array accountNicht genug Tick-Array-Remaining-Accounts für den Swap-Bereich angegeben.„Intern: unzureichende Tick-Arrays — Pool-Daten neu laden.”
6024InvalidFirstTickArrayAccountInvalid first tick array accountDas erste übergebene Tick-Array-Konto deckt den aktuellen Tick nicht ab.„Intern: falsches erstes Tick-Array — Pool-Daten neu laden.”
6025InvalidRewardIndexInvalid reward indexreward_index außerhalb von [0, 2].N/A — Admin-Pfad.
6026FullRewardInfoThe init reward token reach to the maxDer Pool hat bereits die maximale Anzahl (3) an Reward-Mints konfiguriert.N/A — Admin-Pfad.
6027RewardTokenAlreadyInUseThe init reward token already in useReward-Mint dupliziert einen vorhandenen.N/A — Admin-Pfad.
6028ExceptRewardMintThe reward tokens must contain one of pool vault mint except the last rewardVor Slot 2 muss der Reward-Mint einem der Vault-Mints des Pools entsprechen.N/A — Admin-Pfad.
6029InvalidRewardInitParamInvalid reward init paramUngültige Emissions-Start-/Endzeit oder Rate pro Sekunde.N/A — Admin-Pfad.
6030InvalidRewardInputAccountNumberInvalid collect reward input account numberFalsche Anzahl verbleibender Accounts für CollectReward übergeben.„Intern: falsche Kontoanzahl — neu laden und erneut versuchen.”
6031InvalidRewardPeriodInvalid reward periodReward-Emissionszeitraum ungültig (end <= start, Dauer null).N/A — Admin-Pfad.
6032NotApproveUpdateRewardEmissionsModification of emissions is allowed within 72 hours from the end of the previous cycleDer Admin hat versucht, Emissionen außerhalb des 72-Stunden-Fensters um Zyklusgrenzen zu ändern.N/A — Admin-Pfad.
6033UnInitializedRewardInfouninitialized reward infoReward-Slot nicht initialisiert, aber referenziert.N/A — Admin-Pfad.
6034NotSupportMintNot support token_2022 mint extensionCLMM hat eine Token-2022-Extension angetroffen, die nicht verarbeitet werden kann.„Dieses Token hat eine Extension, die Raydium CLMM nicht unterstützt.”
6035MissingTickArrayBitmapExtensionAccountMissing tickarray bitmap extension accountDer Swap hat einen Tick-Bereich überquert, der nicht vom Basis-Bitmap abgedeckt wird; das Extension-Bitmap-Konto wird benötigt.„Intern: fehlende Tick-Array-Extension — Pool-Daten neu laden.”
6036InsufficientLiquidityForDirectionInsufficient liquidity for this directionIn der Swap-Richtung ist nicht genug Liquidität vorhanden.„Unzureichende Liquidität für diese Swap-Größe.”
6037MaxTokenOverflowMax token overflowEingabe-/Ausgabebetrag hat u64 überschritten.„Betrag zu groß für diesen Pool.”
6038CalculateOverflowCalculate overflowArithmetischer Überlauf bei Gebühren- / Liquiditätsberechnung.„Betrag zu groß für diesen Pool.”
6039TransferFeeCalculateNotMatchTransferFee calculate not matchDer beobachtete Token-2022-Transfergebührbetrag stimmte nicht mit dem erwarteten überein.„Token-Transfergebühr hat sich während der Transaktion geändert. Erneut versuchen.”
6040OrderAlreadyFilledOrder already fully filled, cannot modifyIncreaseLimitOrder / DecreaseLimitOrder wurde für eine Order aufgerufen, deren nicht gefüllter Anteil null ist.„Diese Limit-Order ist bereits vollständig ausgeführt — abwickeln, um den Output zu erhalten.”
6041InvalidOrderPhaseInvalid order phaseEine Order wird mutiert, deren FIFO-Kohortenphase nicht mehr mit der aktuellen Kohorte des Ticks übereinstimmt.„Diese Aktion kann im aktuellen Zustand der Order nicht durchgeführt werden.”
6042InvalidLimitOrderAmountInvalid limit order amountOrder-Eingabe liegt beim Öffnen / Erhöhen / Verringern unter dem Minimum des Pools (oder ist null).„Order-Größe liegt unter dem Minimum des Pools.”
6043OrderPhaseSaturatedTick order phase saturatedDer order_phase-Zähler der Kohorte am Tick ist ausgeschöpft; weitere Orders können an diesem Tick erst nach dem Abwickeln und Rollover bestehender Kohorten geöffnet werden.„Zu viele aktive Orders zu diesem Preis; einen benachbarten Tick versuchen oder auf die Abwicklung warten.”
6044InvalidDynamicFeeConfigParamsInvalid dynamic fee config paramsCreateDynamicFeeConfig / UpdateDynamicFeeConfig abgelehnt; oder CreateCustomizablePool hat dynamische Gebühren ohne gültige Konfiguration aktiviert.N/A auf Admin-Pfad; „Dynamische Gebührenkonfiguration ungültig” auf Nutzerpfad.
6045InvalidFeeOnInvalid fee on which token (must be 0, 1, or 2)CreateCustomizablePool hat einen collect_fee_on-Wert außerhalb von {0, 1, 2} übergeben.„Intern: ungültiger Gebührenmodus.”
6046ZeroSqrtPricesqrt_price_x64 must be greater than 0CreateCustomizablePool (oder ein anderer Pfad, der einen anpassbaren initialen Sqrt-Preis akzeptiert) wurde mit sqrt_price_x64 == 0 aufgerufen.„Der Anfangspreis muss größer als null sein.”
6047ZeroLiquidityliquidity must be greater than 0Ein Liquiditäts-bereitstellender Pfad wurde mit liquidity == 0 und ohne kompensierenden Betrag aufgerufen.„Liquiditätsbetrag muss größer als null sein.”
6048MissingBaseFlagbase_flag is required when liquidity is zeroEin Open-Position-by-Amount-Pfad hat liquidity == 0 berechnet, und der Aufrufer hat kein base_flag angegeben, um die Basisseite eindeutig zu bestimmen.„Entweder einen Liquiditätsbetrag größer null angeben oder das Basis-Token festlegen.”
6049MissingMintAccountMint account is required but not providedEin Token-2022-fähiger Pfad wurde ohne das Input-/Output-Mint-Konto aufgerufen, das zur Validierung von Extensions und Transfergebühren benötigt wird.„Intern: fehlendes Mint-Konto — Pool-Daten neu laden.”
6050MissingTokenProgram2022Token-2022 program is required but not providedWie oben, jedoch für das SPL-Token-2022-Programmkonto.„Intern: fehlendes Token-2022-Programm — neu laden und erneut versuchen.”
Hinweis zur Neunummerierung. Das ErrorCode-Enum des CLMM wurde in dieser Version neu nummeriert: Fünf veraltete Varianten (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) sowie mehrere Tippfehler (Liquitity, enought, emissiones) wurden entfernt oder korrigiert, und elf neue Varianten wurden angehängt. Da Anchor Fehler nach Quellreihenfolge nummeriert, hat sich jeder Code ab 6000 gegenüber Pre-Release-Builds verschoben. Clients, die numerische Codes gegen eine frühere Version fest kodiert haben, müssen ihre Zuordnungen aktualisieren.
Extraktionsquelle: github.com/raydium-io/raydium-clmm — error.rs.

AMM v4, Farm v3 / v5 / v6, LaunchLab — Fehlercodes

Diese Programme sind in ihren jeweiligen Kapiteln dokumentiert (siehe products/amm-v4/instructions, products/farm-staking/instructions, products/launchlab/instructions). Da diese Programme eine Mischung aus Anchor- und einfachen Solana-Fehlerausgaben verwenden, befinden sich ihre Fehlertabellen neben der jeweiligen Anweisungsreferenz und nicht hier. Die folgenden Codes sind für diese Kapitel reserviert:
ProgrammCodebereich (nur Anchor)Referenz
AMM v4Benutzerdefinierte u32-Codes, kein Anchor-Stilproducts/amm-v4/instructions
Farm v3 / v5Benutzerdefinierte u32-Codesproducts/farm-staking/instructions
Farm v66000+ (Anchor)products/farm-staking/instructions
LaunchLab6000+ (Anchor)products/launchlab/instructions

SDK-Fehler auf Programmfehler abbilden

Das offizielle TypeScript-SDK kapselt On-Chain-Fehler in SendTransactionError und für Anchor-Programme in AnchorError:
import { AnchorError } from "@coral-xyz/anchor";

try {
  await sdk.cpmm.swap({ ... });
} catch (err) {
  if (err instanceof AnchorError) {
    console.log(err.error.errorCode.number, err.error.errorCode.code, err.error.errorMessage);
    // 6005 ExceededSlippage "Exceeds desired slippage limit"
  } else {
    // Raw SendTransactionError — inspect err.logs for the "custom program error: 0x..." line.
  }
}
Wenn Sie keinen Anchor-Client verwenden, parsen Sie die Transaktions-Logs:
Program <ProgramID> invoke [1]
Program log: AnchorError caused by account: pool_state. Error Code: ExceededSlippage. Error Number: 6005. Error Message: Exceeds desired slippage limit.
Das Muster Error Number: (\d+) ist über alle Anchor-Versionen stabil und kann sicher gematcht werden.

Tabellen neu generieren

Wenn ein Programm aktualisiert wird und einen neuen Fehler hinzufügt, extrahieren Sie ihn aus dem Quellcode neu:
# Clone and grep the error enum in order.
git clone --depth=1 https://github.com/raydium-io/raydium-cp-swap
awk '/#\[msg\(/{ gsub(/^[ \t]*#\[msg\("|"\)\][ \t]*/,""); m=$0; getline; gsub(/,/,""); gsub(/^[ \t]+/,""); print "6000+++\t" $0 "\t" m }' \
  raydium-cp-swap/programs/cp-swap/src/error.rs
# Replace 6000+++ with monotonically-increasing 6000,6001,... Append new rows to the table above.
Aktualisieren Sie immer reference/changelog, wenn eine neue Variante hinzukommt, damit Integratoren beim SDK-Upgrade wissen, dass sie ihre Fehler-Handler aktualisieren müssen. Quellen: