Ana içeriğe atla

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.

Bu sayfa yapay zekâ tarafından otomatik olarak çevrilmiştir. İngilizce sürüm esas alınır.İngilizce sürümü görüntüle →
Birincil kaynak. Aşağıdaki tablolar, Raydium’un herkese açık depolarındaki her programın error.rs dosyasından yeniden oluşturulmaktadır. Bir program yükseltilip yeni bir varyant eklendiğinde, çıkarma komutunu (her tablonun altındaki bağlantı) yeniden çalıştırın ve satırları yeniden sıralamak yerine tablonun sonuna ekleyin — Anchor hata kodları kaynak sırasına göre atanır, isme göre değil; bu nedenle sırayı değiştirmek entegratörlerin hata işleyicilerini bozar.

Anchor hata kodları nasıl çalışır?

Anchor, bir programın ErrorCode enum’undaki her varyanta 6000’den başlayarak sayısal bir kod atar. Başarısız bir işlem şunları ortaya çıkarır:
  • Sayısal hata kodu (ör. 0x1771 = 6001) işlem günlüklerinde.
  • Hata adı (ör. InvalidOwner) IDL’den.
  • #[msg(...)] dizisi Anchor’ın log_messages içinde yaydığı.
Entegratörler mesaj dizisi yerine sayısal koda göre eşleştirme yapmalıdır (dize, sürüm değiştirilmeden yeniden ifade edilebilir).
// Örnek: CPMM slippage hatasını tespit edip temiz bir UX mesajı gösterin.
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 (Standart AMM) hataları

Program ID: bkz. reference/program-addresses. Kaynak: raydium-cp-swap/programs/cp-swap/src/error.rs.
KodVaryant#[msg] dizisiTipik nedenÖnerilen UX
6000NotApprovedNot approvedÇağıran, bir yönetici talimatı için yapılandırılmış yetkili değil.”Bu işlemi yalnızca pool yöneticisi gerçekleştirebilir.”
6001InvalidOwnerInput account owner is not the program addressAktarılan bir hesap yanlış program tarafından sahiplenilmiş (çoğunlukla yanlış token programı veya yanlış programa ait PDA).”Dahili: hesap sahibi uyuşmuyor — yenileyin ve tekrar deneyin.”
6002EmptySupplyInput token account emptyPozitif bir miktar gerektiren bir adımda LP veya token hesap bakiyesi sıfır.”Çekilecek bir şey yok.”
6003InvalidInputInvalidInputGenel hatalı argüman (aralık dışı miktar, yanlış bayrak).”Geçersiz girdi — miktarları kontrol edip tekrar deneyin.”
6004IncorrectLpMintAddress of the provided lp token mint is incorrectAktarılan LP mint hesabı pool_state.lp_mint ile eşleşmiyor.”Dahili: yanlış LP mint — pool verilerini yenileyin.”
6005ExceededSlippageExceeds desired slippage limitGerçekleşen fiyat, kullanıcının minAmountOut / maxAmountIn değerinden daha kötü.”Fiyat slippage toleransınızı aştı. Slippage’ı artırın veya tekrar deneyin.”
6006ZeroTradingTokensGiven pool token amount results in zero trading tokensYatırma / çekme işleminin matematiği bir tarafı sıfıra yuvarladı (pozisyon çok küçük).”Miktar bu pool için minimumdur.”
6007NotSupportMintNot support token_2022 mint extension (kaynak kodundaki dilbilgisi hatası)Pool, güvenli şekilde işleyemeyeceği bir Token-2022 uzantısıyla karşılaştı (ör. TransferHook, DefaultAccountState=Frozen).”Bu tokenin CPMM’nin desteklemediği bir uzantısı var.”
6008InvalidVaultinvaild vault (kaynak kodundaki yazım hatası)Aktarılan vault hesabı pool_state’e kayıtlı olanla eşleşmiyor.”Dahili: yanlış vault — yenileyin ve tekrar deneyin.”
6009InitLpAmountTooLessInit lp amount is too less(Because 100 amount lp will be locked) (kaynak kodundaki dilbilgisi hatası)Pool başlatılırken hesaplanan LP arzı kalıcı kilit miktarının altında.”Başlangıç likiditesi çok düşük. Yatırım miktarını artırın.”
6010TransferFeeCalculateNotMatchTransferFee calculate not matchToken-2022 ücretli mint için gözlemlenen transfer sonrası miktar, önceden hesaplanan beklentiyle eşleşmedi.”Token transfer ücreti işlem ortasında değişti. Tekrar deneyin.”
6011MathOverflowMath overflowAra swap / yatırma / ücret hesaplaması taştı.”Miktar bu pool için çok büyük.”
6012InsufficientVaultInsufficient vaultPool vault bakiyesi talep edilen çıktıyı karşılamak için çok düşük.”Pool’da bu büyüklük için yeterli likidite yok.”
6013InvalidFeeModelInvalid fee modelYönetici, zincir üstünde reddedilen bir AmmConfig parametre kombinasyonu belirledi.N/A — yalnızca yönetici yolu.
6014NoFeeCollectFee is zeroToplanabilir ücret sıfırken collect_protocol_fee / collect_fund_fee çağrıldı.N/A — yönetici yolu; araçlar bu hatayı sessizce geçmeli.
Yeniden oluşturma kaynağı: github.com/raydium-io/raydium-cp-swap — error.rs.

CLMM hataları

Program ID: bkz. reference/program-addresses. Kaynak: raydium-clmm/programs/amm/src/error.rs.
KodVaryant#[msg] dizisiTipik nedenÖnerilen UX
6000NotApprovedNot approvedÇağıran, bu talimat için yapılandırılmış yönetici değil.”Bu işlemi yalnızca pool yöneticisi gerçekleştirebilir.”
6001InvalidUpdateConfigFlaginvalid update amm config flagYönetici, update_amm_config’e tanınmayan bir param değeri iletti.N/A — yalnızca yönetici yolu.
6002AccountLackAccount lackİşlemde gerekli bir kalan hesap eksik (genellikle tick dizisi veya oracle uzantısı).”Dahili: eksik hesap — pool verilerini yenileyin.”
6003ClosePositionErrRemove liquidity, collect fees owed and reward then you can close position accountLikidite, toplanmamış ücret veya toplanmamış ödülleri olan bir pozisyonu kapatmaya çalışıldı.”Pozisyonu kapatmadan önce tüm likiditeli çekin ve ücretleri/ödülleri talep edin.”
6004InvalidTickIndexTick out of rangetick_lower veya tick_upper, [-443636, 443636] aralığının dışında.”Bu pool için fiyat aralığı sınır dışı.”
6005TickInvalidOrderThe lower tick must be below the upper ticktick_lower >= tick_upper.”Alt fiyat, üst fiyatın altında olmalıdır.”
6006TickLowerOverflowThe tick must be greater, or equal to the minimum tick(-443636)Alt tick alt sınırı aştı.”Alt fiyat çok düşük.”
6007TickUpperOverflowThe tick must be lesser than, or equal to the maximum tick(443636)Üst tick üst sınırı aştı.”Üst fiyat çok yüksek.”
6008TickAndSpacingNotMatchtick % tick_spacing must be zeroGönderilen tick, pool’un tick_spacing’inin katı değil.”Fiyatı en yakın geçerli artışa hizalayın.”
6009InvalidTickArrayInvalid tick array accountBir tick dizisi yuvası için yanlış PDA iletildi.”Dahili: yanlış tick dizisi — pool verilerini yenileyin.”
6010InvalidTickArrayBoundaryInvalid tick array boundaryTick dizisi indekslemesinde sınır hatası.”Dahili: tick dizisi sınır hatası.”
6011SqrtPriceLimitOverflowSquare root price limit overflowÇağıran tarafından sağlanan sqrt_price_limit geçerli aralık dışında.”Fiyat limiti aralık dışı.”
6012SqrtPriceX64sqrt_price_x64 out of rangePool’un mevcut sqrt fiyatı swap ortasında aralık dışına çıktı.”Swap’ı tekrar deneyin.”
6013LiquiditySubValueErrLiquidity sub delta L must be smaller than beforeLikidite azaltma işleminde dahili değişmez ihlali.”Dahili: likidite muhasebe hatası.”
6014LiquidityAddValueErrLiquidity add delta L must be greater, or equal to beforeLikidite artırma işleminde dahili değişmez ihlali.”Dahili: likidite muhasebe hatası.”
6015ForbidBothZeroForSupplyLiquidityBoth token amount must not be zero while supply liquidityLikidite artırma çağrısında hem amount_0_max hem de amount_1_max sıfır.”En az bir token sağlayın.”
6016LiquidityInsufficientLiquidity insufficientPozisyonda çekimi karşılayacak yeterli likidite yok.”Çekim miktarı pozisyon likiditesini aşıyor.”
6017PriceSlippageCheckPrice slippage checkGerçekleşen fiyat, çağıranın slippage korumasından geçemedi.”Fiyat slippage toleransınızı aştı. Slippage’ı artırın veya tekrar deneyin.”
6018TooLittleOutputReceivedToo little output receivedSwapBaseInput: çıkış miktarı other_amount_threshold’un altında.”Slippage aşıldı — minimum çıkış karşılanmadı.”
6019TooMuchInputPaidToo much input paidSwapBaseOutput: giriş miktarı other_amount_threshold’un üstünde.”Slippage aşıldı — maksimum giriş aşıldı.”
6020ZeroAmountSpecifiedSwap special amount can not be zeroSwap talimatında amount sıfır.”Sıfırdan büyük bir miktar girin.”
6021InvalidInputPoolVaultInput pool vault is invalidSwap’ın giriş vault hesabı, pool’a kayıtlı vault ile eşleşmiyor.”Dahili: yanlış giriş vault’u — pool verilerini yenileyin.”
6022TooSmallInputOrOutputAmountSwap input or output amount is too smallSwap matematiği sıfıra yuvarlandı; genellikle çok küçük toz miktarlar.”Miktar bu pool’da swap için çok küçük.”
6023NotEnoughTickArrayAccountNot enough tick array accountSwap aralığı için yeterli sayıda tick dizisi kalan hesabı sağlanmadı.”Dahili: yetersiz tick dizisi — pool verilerini yenileyin.”
6024InvalidFirstTickArrayAccountInvalid first tick array accountİletilen ilk tick dizisi hesabı mevcut tick’i kapsamıyor.”Dahili: yanlış ilk tick dizisi — pool verilerini yenileyin.”
6025InvalidRewardIndexInvalid reward indexreward_index, [0, 2] aralığının dışında.N/A — yönetici yolu.
6026FullRewardInfoThe init reward token reach to the maxPool’da zaten maksimum (3) ödül mint’i yapılandırılmış.N/A — yönetici yolu.
6027RewardTokenAlreadyInUseThe init reward token already in useÖdül mint’i mevcut bir mint’i kopyalıyor.N/A — yönetici yolu.
6028ExceptRewardMintThe reward tokens must contain one of pool vault mint except the last reward2. yuva öncesinde ödül mint’i, pool’un vault mint’lerinden biri olmalıdır.N/A — yönetici yolu.
6029InvalidRewardInitParamInvalid reward init paramHatalı emisyon başlangıç/bitiş zamanı veya saniye başına oran.N/A — yönetici yolu.
6030InvalidRewardInputAccountNumberInvalid collect reward input account numberCollectReward’a iletilen kalan hesap sayısı yanlış.”Dahili: yanlış hesap sayısı — yenileyin ve tekrar deneyin.”
6031InvalidRewardPeriodInvalid reward periodÖdül emisyon dönemi geçersiz (end <= start, sıfır süre).N/A — yönetici yolu.
6032NotApproveUpdateRewardEmissionsModification of emissions is allowed within 72 hours from the end of the previous cycleYönetici, döngü sınırları etrafındaki 72 saatlik pencere dışında emisyonları değiştirmeye çalıştı.N/A — yönetici yolu.
6033UnInitializedRewardInfouninitialized reward infoÖdül yuvası başlatılmamış fakat referans alınmış.N/A — yönetici yolu.
6034NotSupportMintNot support token_2022 mint extensionCLMM, işleyemeyeceği bir Token-2022 uzantısıyla karşılaştı.”Bu tokenin Raydium CLMM’nin desteklemediği bir uzantısı var.”
6035MissingTickArrayBitmapExtensionAccountMissing tickarray bitmap extension accountSwap, temel bitmap’in kapsamadığı bir tick aralığını geçti; uzantı bitmap hesabı gerekli.”Dahili: eksik tick dizisi uzantısı — pool verilerini yenileyin.”
6036InsufficientLiquidityForDirectionInsufficient liquidity for this directionSwap yönünde yeterli likidite yok.”Bu swap büyüklüğü için yetersiz likidite.”
6037MaxTokenOverflowMax token overflowGiriş/çıkış miktarı u64’ü aştı.”Miktar bu pool için çok büyük.”
6038CalculateOverflowCalculate overflowÜcret / likidite aritmetik taşması.”Miktar bu pool için çok büyük.”
6039TransferFeeCalculateNotMatchTransferFee calculate not matchToken-2022 transfer ücreti gözlemlenen miktarı beklenenle eşleşmedi.”Token transfer ücreti işlem ortasında değişti. Tekrar deneyin.”
6040OrderAlreadyFilledOrder already fully filled, cannot modifyDoldurulmamış kısmı sıfır olan bir emir üzerinde IncreaseLimitOrder / DecreaseLimitOrder çağrıldı.”Bu limit emri zaten doldu — çıktıyı almak için uzlaştırın.”
6041InvalidOrderPhaseInvalid order phaseBir emrin FIFO kohort aşaması artık tick’in mevcut kohortuyla eşleşmiyorken mutasyon yapıldı.”Bu işlem emrin mevcut durumunda gerçekleştirilemez.”
6042InvalidLimitOrderAmountInvalid limit order amountEmir girişi, açma / artırma / azaltma sırasında pool’un minimumunun (veya sıfırın) altında.”Emir büyüklüğü pool’un minimumunun altında.”
6043OrderPhaseSaturatedTick order phase saturatedTick üzerindeki kohorttaki order_phase sayacı doyuma ulaştı; mevcut kohortlar uzlaşıp devrilene kadar o tick’te başka emir açılamaz.”Bu fiyatta çok fazla aktif emir var; yakın bir tick deneyin veya emirlerin uzlaşmasını bekleyin.”
6044InvalidDynamicFeeConfigParamsInvalid dynamic fee config paramsCreateDynamicFeeConfig / UpdateDynamicFeeConfig reddedildi; veya CreateCustomizablePool geçerli bir yapılandırma olmadan dinamik ücret etkinleştirdi.Yönetici yolunda N/A; kullanıcı yolunda “Dinamik ücret yapılandırması geçersiz.”
6045InvalidFeeOnInvalid fee on which token (must be 0, 1, or 2)CreateCustomizablePool, {0, 1, 2} dışında bir collect_fee_on değeri iletti.”Dahili: geçersiz ücret modu.”
6046ZeroSqrtPricesqrt_price_x64 must be greater than 0CreateCustomizablePool (veya özelleştirilebilir bir başlangıç sqrt fiyatı kabul eden başka bir yol), sqrt_price_x64 == 0 ile çağrıldı.”Başlangıç fiyatı sıfırdan büyük olmalıdır.”
6047ZeroLiquidityliquidity must be greater than 0Likidite sağlayan bir yol, liquidity == 0 ve telafi edici miktar olmadan çağrıldı.”Likidite miktarı sıfırdan büyük olmalıdır.”
6048MissingBaseFlagbase_flag is required when liquidity is zeroMiktar bazlı pozisyon açma yolu, liquidity == 0 hesapladı ve çağıran hangi tarafın baz olduğunu belirtmek için base_flag sağlamadı.”Sıfır olmayan bir likidite girin veya hangi tokenin baz olduğunu belirtin.”
6049MissingMintAccountMint account is required but not providedToken-2022 farkında bir yol, uzantıları ve transfer ücretlerini doğrulamak için gerekli giriş/çıkış mint hesabı olmadan çağrıldı.”Dahili: eksik mint hesabı — pool verilerini yenileyin.”
6050MissingTokenProgram2022Token-2022 program is required but not providedSPL-Token-2022 program hesabı için yukarıdakiyle aynı durum.”Dahili: Token-2022 programı eksik — yenileyin ve tekrar deneyin.”
Yeniden numaralandırma notu. CLMM ErrorCode enum’u bu sürümde yeniden numaralandırıldı: beş eski varyant (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) ve çeşitli yazım hataları (Liquitity, enought, emissiones) kaldırıldı/düzeltildi; on bir yeni varyant eklendi. Anchor hataları kaynak sırasına göre numaralandırdığı için 6000 ve sonrasındaki her kod, sürüm öncesi yapılara göre kaymıştır. Daha önceki bir sürüme karşı sayısal kodları sabit kodlayan istemcilerin eşlemeyi güncellemesi gerekir.
Yeniden oluşturma kaynağı: github.com/raydium-io/raydium-clmm — error.rs.

AMM v4, Farm v3 / v5 / v6, LaunchLab hataları

Bu programlar kendi ilgili bölümlerinde belgelenmiştir (bkz. products/amm-v4/instructions, products/farm-staking/instructions, products/launchlab/instructions). Bu programlar Anchor ve düz Solana hata yüzeylerini karışık kullandığından hata tabloları burada değil, talimat referansının yanında yer alır. Aşağıdaki kodlar o bölümler tarafından rezerve edilmiştir:
ProgramKod aralığı (yalnızca Anchor)Referans
AMM v4Özel u32 kodları, Anchor stili değilproducts/amm-v4/instructions
Farm v3 / v5Özel u32 kodlarıproducts/farm-staking/instructions
Farm v66000+ (Anchor)products/farm-staking/instructions
LaunchLab6000+ (Anchor)products/launchlab/instructions

SDK hatalarını program hatalarıyla eşleştirme

Resmi TypeScript SDK, zincir üstü hataları SendTransactionError’a ve Anchor programları için AnchorError’a sarar:
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 {
    // Ham SendTransactionError — "custom program error: 0x..." satırı için err.logs'u inceleyin.
  }
}
Anchor istemci tarafı kullanmıyorsanız işlem günlüklerini ayrıştırın:
Program <ProgramID> invoke [1]
Program log: AnchorError caused by account: pool_state. Error Code: ExceededSlippage. Error Number: 6005. Error Message: Exceeds desired slippage limit.
Error Number: (\d+) deseni Anchor sürümleri arasında kararlıdır ve eşleştirme için güvenlidir.

Bu tabloları yeniden oluşturma

Bir program yükseltilip yeni bir hata eklendiğinde kaynaktan yeniden çıkarın:
# 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.
Yeni bir varyant eklendiğinde entegratörler SDK’yı yükseltirken hata işleyicilerini yenilemeleri gerektiğini bilsin diye her zaman reference/changelog’u güncelleyin. Kaynaklar: