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 →
Bu sayfa
products/clmm/accounts (hesaplar nedir) ve products/clmm/math (matematik nedir) ile birlikte kullanılır. Argümanlar ve hesap sıralaması için yetkilidir; belirli bayt düzenleri IDL’den gelir.Talimat envanteri
init-tick-array diye bir talimat yoktur ve gerekmez. Bir tick dizisi,
OpenPosition* /
IncreaseLiquidity* talimatlarının içinde, bedeli payer tarafından ödenerek
TickArrayState::get_or_create_tick_array ile oluşturulur. (Muhtemelen hâlâ başlatılmamış,
system’e ait) tick dizisi PDA’sını tick_array_lower / tick_array_upper olarak geçirin;
eksikse program onu ayırır. OpenLimitOrder da tek tick_array hesabı için aynısını yapar.CreateAmmConfig, UpdateAmmConfig, UpdatePoolStatus, CreateOperationAccount, UpdateOperationAccount, CloseProtocolPosition) programın sabit kodlanmış admin genel anahtarı tarafından kapılanır. CreatePermissionPda / ClosePermissionPda, admin genel anahtarını veya özel bir permission_pda_admin anahtarını kabul eder; CreateSupportMintAssociated / CloseSupportMintAssociated ise admin genel anahtarını veya özel bir destek-mint sahibi anahtarını kabul eder. Ödül akışı yönetici talimatları (TransferRewardOwner, CollectRemainingRewards) program yöneticisi değil, ödül fon sağlayıcısı tarafından kapılanır.
V2 soneki “Token-2022’yi kasa / NFT’de destekler, bitmap uzantı yuvası gerektirir” anlamına gelir. SDK yeni havuzlar için varsayılan olarak V2’yi seçer.
CreatePool
Argümanlar
Ön koşullar
token_mint_0 < token_mint_1bayt sırasına göre.amm_config.disable_create_pool == false.- Mint’ler Token-2022 uzantısı izin listesi tarafından reddedilmez.
pool_state.sqrt_price_x64 = sqrt_price_x64,tick_current = floor(log_{1.0001}(price)).pool_state.liquidity = 0(henüz pozisyon yok).pool_state.fee_on = FromInput(eski varsayılan).pool_state.dynamic_fee_infosıfırlanır (dinamik ücret devre dışı).
CreateCustomizablePool
Yeni havuzlar için önerilir. CreatePool ile aynı etki artı havuz başına ücret toplama modu ve isteğe bağlı dinamik ücret katılım bayrağı.
Argümanlar
CreatePool’un bildirilen 13 hesabı. dynamic_fee_config bildirilen bir hesap değildir.
Ön koşullar — CreatePool ile aynı. enable_dynamic_fee = false ise hiçbir remaining_account gerekmez ve geçirilen hesaplar yalnızca destek-mint kayıtları için taranır.
Son koşullar
pool_state.fee_onseçilenCollectFeeOnvaryantına ayarlanır.- Dinamik ücret etkinleştirilirse:
pool_state.dynamic_fee_infosağlananDynamicFeeConfigöğesinden başlatılır (beş kalibrasyon parametresi kopyalanır; durum alanları sıfırlanır). - Aksi takdirde:
pool_state.dynamic_fee_infosıfırlanır (= bu havuz için dinamik ücret sonsuza kadar etkin değil).
fee_on ve dinamik ücret etkinleştirme biti yalnızca havuz oluşturma sırasında ayarlanır. Yerinde yükseltme yoktur — eski CreatePool aracılığıyla oluşturulan havuzlar geriye dönük olarak dinamik ücret veya tek taraflı ücret kazanamaz. Yeni dağıtımlar varsayılan olarak bu talimata geçmelidir.
CreatePermissionedPool
Hem CreatePool hem de CreateCustomizablePool havuz PDA’sını ["pool", amm_config, token_mint_0, token_mint_1] öğesinden türetir, bu nedenle (config, mint0, mint1) üçlüsü başına tam olarak bir kanonik havuz adresi vardır — aynı seed’lerde ikinci bir init başarısız olur. CreatePermissionedPool istemci tarafından sağlanan seed_index: u16 öğesini havuz PDA seed’lerine katarak bu kısıtlamayı kaldırır; aynı çift ve ücret seviyesi için birden fazla havuza izin verir — her biri kendi adresinde. Keyfi bir havuz adresi ayrıcalıklı bir yetenek olduğundan, ödeyici bunu yetkilendiren bir Permission PDA’sı tutmalıdır.
Havuzun diğer her şeyi CreateCustomizablePool ile aynıdır: aynı CreateCustomizableParams öğesini alır ve tek taraflı ücret ve dinamik ücret katılımını destekler.
Argümanlar
CreateCustomizablePool ile aynı artı, başında:
pool_state PDA’sı ["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()] öğesinden türetilir.
Ön koşullar
seed_index != 0.0değerindekiseed_indexeski havuzlar için ayrılmıştır ve burada reddedilir;[0, 0]seed bileşeni, eski bir havuz adresinin klasik dört seed formuna çökmesini sağlayan şeydir.payeriçinpermissionPDA’sı var (yönetici tarafındanCreatePermissionPdaaracılığıyla oluşturulmuş).CreatePoolile aynı mint / izin listesi kuralları.
- Yeni bir
pool_stateseed_indextüretilmiş adresinde var;pool_state.seed_index = seed_index. - Diğer tüm son durum
CreateCustomizablePoolile eşleşir (ücret modu, isteğe bağlı dinamik ücret).
Bu talimat genel havuz oluşturma erişimini genişletmez — izinsiz oluşturma
CreatePool / CreateCustomizablePool aracılığıyla devam eder; bunlar çift başına bir havuz kalır. CreatePermissionedPool beyaz listeye alınan bir operatörün aynı çift için birden fazla havuza ihtiyaç duyduğu (örn. farklı başlangıç fiyatları veya başlatma kohortları) ve yönetici tarafından verilen Permission PDA’sı tuttuğu belirli durum için vardır.OpenPositionV2 / OpenPositionWithToken22Nft
Mevcut bir havuz içinde yeni bir pozisyon oluşturun.
Argümanlar
OpenPositionWithToken22Nft, aynı listenin metadata_account (5) ve metadata_program (19) kaldırılmış hâlidir — pozisyonun metadata’sını bunun yerine NFT mint’i üzerindeki Token-2022 metadata uzantısı aracılığıyla yazar — ve böylece 20 hesap eder. Onun position_nft_mint’i yalın bir Signer, position_nft_account’ı ise bir UncheckedAccount’tur.
Matematik — products/clmm/math öğesine bakın. base_flag verildiğinde, program liquidity veya (amount_0_max, amount_1_max) öğesini gerçek L ve tüketilen gerçek token tutarlarına çözer.
Ön koşullar
tick_lower < tick_upper, her ikisi depool.tick_spacingkatları,[MIN_TICK, MAX_TICK]içinde.- İki tick dizisi PDA’sı geçirilir. Bunların önceden var olması gerekmez —
get_or_create_tick_array, eksik olanı bu talimatın içindepayer’ın masrafıyla ayırır. Ayrı bir init-tick-array talimatı yoktur. - Kullanıcı kaynak ATA’larında en az
amount_0_maxveamount_1_maxbulundurur.
personal_positionvar,liquidityayarlanmış,fee_growth_inside_lastanlık görüntüsü alınmış.- Tick dizisi girdileri
tick_lowervetick_upperöğelerinde güncellenir (liquidity_gross += L,liquidity_net ± L, ücret büyümesi anlık görüntüleri korunur). pool_state.liquidity += Lpozisyon aralıkta ise (tick_lower ≤ tick_current < tick_upper).- Pozisyon NFT mint’i
pool_stateöğesini dondurma yetkilisi olarak kaydeder. Mint yetkilisi tek NFT basıldıktan sonra kaldırılır. Dondurma yetkilisini kaydetmek NFT token hesabının durumunu değiştirmez. - NFT token hesabı donmamış kalır; yalnızca talimat
OpenPositionV2ya daOpenPositionWithToken22Nftise ve kasa mint’lerinden herhangi birinin dondurma yetkilisi CLMM’nin kısıtlı yayıncı listesiyle eşleşiyorsa dondurulur. Yalnızca eşleşen bu V2 yolu hesabı dondurur.OpenPositionV1 dondurmaz.
TickInvalidOrder (tick_lower >= tick_upper), TickAndSpacingNotMatch (bir uç nokta tick_spacing’in katı değil), InvalidTickIndex ([MIN_TICK, MAX_TICK] dışında), MissingTickArrayBitmapExtensionAccount (aralık satır içi bitmap’in dışında ve uzantı eklenmemiş), NotApproved (pool_state.status açmayı engelliyor), ZeroAmountSpecified.
Pozisyon dondurma, bildirilen talimat hesaplarını veya argümanlarını eklemez. İstemciler bu pozisyonları mevcut V2 düzenleriyle açabilir. Davranış
vault_0_mint ve vault_1_mint öğesinden zincir üzerinde seçilir.IncreaseLiquidityV2
Zaten açık olan bir pozisyona likidite ekleyin.
Argümanlar
OpenPosition’dan türetilemez: rent yok, system_program yok, associated_token_program yok ve metadata hesabı yok.
Pozisyonun aralığı satır içi bitmap’in dışında olduğunda
TickArrayBitmapExtension PDA’sını remaining_accounts[0] olarak başa ekleyin.
Etki
amount_0_actual/amount_1_actualöğesini kullanıcıdan → kasalara aktarır.personal_position.liquidityvepool_state.liquidity(aralıkta ise) ile uç nokta tick’ininliquidity_gross/liquidity_netdeğerlerini buna göre artırır.- Son dokunuştan bu yana borçlu olunan ücretleri ve ödülleri toplar ve bunları
token_fees_owed_{0,1}/reward_amount_owedhesabına yazar. Bunlar yalnızcaDecreaseLiquidity/DecreaseLiquidityV2sırasında ödenir, artışta değil — bağımsız bir toplama talimatı yoktur.
DecreaseLiquidityV2
Bir pozisyondan likiditeyi kaldırın.
Argümanlar
IncreaseLiquidityV2 ile aynı şekle ya da sıraya sahip değil: personal_position ile pool_state yer değiştirmiştir, kasalar tick dizilerinden önce gelir, kullanıcı tarafındaki hesaplar recipient_token_account_* olarak adlandırılır ve fazladan bir memo_program vardır.
Kalan hesaplar — toplanan her etkin ödül için üç tane;
reward_token_vault(W), recipient_token_account(W), reward_vault_mint sırasıyla. Pozisyonun aralığı satır içi bitmap’in dışında olduğunda TickArrayBitmapExtension PDA’sını başa ekleyin.
Bu aynı zamanda ücret ve ödül toplamanın tek yoludur. Pozisyonu değiştirmeden toplamak için
bunu
liquidity = 0, amount_0_min = 0, amount_1_min = 0 ile çağırın.- Geçerli
sqrt_price_x64verilen kaldırılanLiçin(amount_0, amount_1)öğesini hesaplar. - Son dokunuştan bu yana tahakkuk eden ücretleri/ödülleri kapatır;
IncreaseLiquidityile aynı. amount_0 + fees_owed_0veamount_1 + fees_owed_1öğesini kasalardan kullanıcıya aktarır.- Likidite sayaçlarını azaltır; yeni
personal_position.liquidity == 0ise, pozisyonClosePositioniçin uygun hale gelir.
amount_0_min ve amount_1_min kullanıcının çıktı tarafında Token-2022 transfer ücretleri net olarak kabul ettiği minimumlar.
ClosePosition
Pozisyon NFT’sini yakın ve PersonalPositionState öğesini kapatın.
Bildirilen hesaplar
Kalan hesaplar
- Donmuş olmayan NFT: hiçbiri gerekli değil; ekstra havuz hesabı zararsızdır çünkü işleyici onu okumaz.
- Donmuş NFT:
personal_position.pool_idöğesini ilk kalan hesap olarak ekleyin. Program bunuPoolStateolarak yükler ve çözmek için PDA seed’lerini kullanır.
personal_position.liquidity == 0.tokens_fees_owed_{0,1} == 0.- Tüm ödül sayaçları
reward_amount_owed == 0.
- NFT token hesabı donmuşsa, ilk kalan hesabın
personal_position.pool_idöğesine eşit olduğunu doğrular, sonra havuz PDA’sı ile çözer. - NFT’yi yakar.
- NFT token hesabını ve
personal_positionöğesini kapatır; kirayınft_owneröğesine geri verir. Pozisyon NFT’si Token-2022 kullanıyorsa, NFT mint’ini de kapatır; klasik SPL Token mint’leri kapatılamaz ve sıfır arzla kalır.
AccountLack ile başarısız olur. Her kapatma için havuzu geçmek en basit uyumlu stratejidir.
SwapV2
Likidite eğrisini yürüyün; is_base_input öğesine bağlı olarak tam giriş veya tam çıkış.
Argümanlar
Arayanlar beklenen swap yürüyüşünü kapsayan sıralanmış bir tick dizileri listesi geçer; program ihtiyaç duyduğu kadarını kullanır. SDK bu listeyi
PoolUtils.computeAmountOutFormat veya API’nin alıntı uç noktası aracılığıyla hesaplar.
Ön koşullar
pool_state.statusswapa izin verir.now >= open_time.sqrt_price_limit_x64yön içinsqrt_price_x64öğesinin doğru tarafında.
TooLittleOutputReceived (tam-giriş kayması), TooMuchInputPaid (tam-çıkış kayması), SqrtPriceLimitOverflow, NotEnoughTickArrayAccount, InvalidFirstTickArrayAccount, MissingTickArrayBitmapExtensionAccount, LiquidityInsufficient, NotApproved (pool_state.status üzerinde swap biti ayarlı). CLMM’de ExceededSlippage varyantı yoktur — o ad CPMM’ye aittir — ve TickArrayNotFound da yoktur.
SwapV2 öğesinin arayanların bilmesi gereken dahili olarak yaptığı şey (2025 sonrası sürüm):
- Dinamik ücret ek ücreti —
pool.dynamic_fee_infosıfır değilse, program son swaptan bu yana geçilen tick mesafesini kullanarak oynaklık biriktiricisini günceller (filtre/bozunma kurallarıproducts/clmm/feesöğesinden) veAmmConfig.trade_fee_rateöğesinin üzerinedynamic_fee_componentekler. Toplam ücret %10 ile sınırlandırılır (MAX_FEE_RATE_NUMERATOR / 1_000_000). - Limit emri eşleştirmesi — fiyat yürüyüşü açık limit emirleri tutan bir tick’i geçtiğinde, program önce o tick’te mevcut limit emri likiditeyi doldurur (FIFO
order_phaseöğesine göre), sonra LP likidite eğrisi boyunca ilerler. Doldurulmuş tutarlartick.unfilled_ratio_x64vetick.part_filled_orders_remainingöğesini daha sonraki kapatma için günceller; emirler kendileri sahibiSettleLimitOrderçağırana kadar harcı olmaz. - Tek taraflı ücret yönlendirmesi —
pool.fee_on = Token0OnlyveyaToken1Onlyolduğunda, swap adımı yine de aynı giriş-çıkış ticaretini hesaplar; ücret daha sonra yapılandırılan tarafa yönlendirilir. Yapılandırılan ücret tarafının çıkış olduğu yönler için, ücret swap çıkışından düşülür (kullanıcıout − feealır); yapılandırılan tarafın giriş olduğu yönler için davranışFromInputile eşleşir.PoolStateöğesindeis_fee_on_input(zero_for_one)veis_fee_on_token0(zero_for_one)öğesine bakın.
Swap (V1) SwapV2 ile aynı dinamik ücret, tek taraflı ücret yönlendirmesi ve limit emri eşleştirmesini uygular; eksik olduğu tek özellik Token-2022 desteğidir — her iki kasa da klasik SPL Token olmalıdır. Herhangi bir Token-2022 mint’i olan havuzlar SwapV2 aracılığıyla değiştirilmelidir. Toplayıcı ve SDK zaten her CLMM bacağı için V2’yi tercih eder, bu nedenle arayanlar mint türüne göre dallanmak zorunda değildir.
OpenLimitOrder
Belirli bir tick’te satış emri verin. Emir, tick başına FIFO kohortunda oturur ve fiyat geçtikçe doldurulur.
Argümanlar
Kalan hesaplar —
[0] tick_array_bitmap_extension, yalnızca başlangıç indeksi havuzun satır içi bitmap’inin dışına düşen bir tick dizisi başlatılırken gereklidir. Aksi hâlde hiçbir şey geçirmeyin.
Hesap listesi değişikliği (2026-07 sürümü).
OpenLimitOrder artık giriş tarafına ek olarak çıkış tarafı hesaplarını da alır — output_token_account, output_vault ve output_vault_mint. Bunlar yalnızca doğrulama için kullanılır: program sahibinin giriş veya çıkış token hesabı donmuşsa emri reddeder. Bu, doldurmanın gerçekten sahibinin çıkış ATA’sına kapatılabileceğini garanti eder; bu, izin listesi / varsayılan donmuş Token-2022 mint’leri (örn. izinli tokenler) için önemlidir; burada bir hesap henüz çözülmemiş olabilir. Eski tek taraflı hesap listesine karşı oluşturulan istemciler üç çıkış hesabını eklemelidir.- Ne
input_token_accountne deoutput_token_accountdonmuş değildir (aksi takdirdeNotApproved). pool_state.statushem swap (bit 4) hem de limit emri (bit 5) işlemlerine izin verir (aksi takdirdeNotApproved).tick_index % pool.tick_spacing == 0ve[MIN_TICK, MAX_TICK]içinde.tick_indexseçilen yön içinpool.tick_currentöğesinin sağ tarafında (token0 satışı → tick geçerli olmalıdır, ve tersi). Zaten geçilmiş bir tick’te satış hemen eşleştirilir ve reddedilir.
limit_ordervar; açılış zamanındatick.order_phasevetick.unfilled_ratio_x64anlık görüntüsü alınmış.tick.orders_amount += amount(geçerli kohortunda).limit_order_nonce.order_nonce += 1.OpenLimitOrderEventyayınlandı.
NotApproved (giriş veya çıkış token hesabı donmuş ya da havuzda swap / limit emri devre dışı), ZeroAmountSpecified (giriş tarafı transfer ücretinden sonra amount == 0), InvalidLimitOrderAmount (miktar, o tick’te 1 taban biriminin altında bir çıktı üretir veya u64 taşar), InvalidTickIndex ([MIN_TICK, MAX_TICK] dışında veya seçilen yön için tick_current öğesinin yanlış tarafında), TickAndSpacingNotMatch (tick_index % pool.tick_spacing != 0), OrderPhaseSaturated.
IncreaseLimitOrder
Mevcut açık emre ekleyin. Yalnızca emrin owner öğesi tarafından çağrılabilir.
Argümanlar
system_program’ı düşürür.
Ön koşullar
limit_order.owner == signer.- Emir hala aynı kohortda (
tick.order_phase == limit_order.order_phase). Kohort zaten doldurulmaya başlamışsa, emir kısmen kapatılmıştır — çağıran önceDecreaseLimitOrderveyaSettleLimitOrderçağırmalıdır.
amountöğesini sahibi ATA’sındaninput_vaultöğesine aktarır.limit_order.total_amount += amount;tick.orders_amount += amount.
DecreaseLimitOrder
Açık emri azaltın veya tamamen iptal edin. Doldurulmayan kalanı sahibine geri ödeyin, artı geçmiş kısmi doldurmalar tarafından zaten kapatılan çıktı.
Argümanlar
Etki
- Emrin doldurulmuş tutarını açılıştan bu yana kohortun
unfilled_ratio_x64öğesinden yeniden hesaplar. - Doldurulmuş çıktıyı
output_token_accountöğesine gönderir. amountdoldurulmayan girişiinput_token_accountöğesine geri gönderir.limit_orderöğesini buna göre günceller. Yeni doldurulmayan kalan sıfırsa, program hesabı kapatır ve kirayıowneröğesine geri verir.
SettleLimitOrder
Emrin doldurulmayan kalanını değiştirmeden doldurulmuş çıktı tokenlerini sahibine gönderin. auto_withdraw görevlileri uzun süreli kısmi doldurmalar damla ödemek istediğinde kullanışlıdır.
Çağıran — emrin owner öğesi veya programın limit_order_admin öğesi (otomatik görevli döngüsü çalıştıran çevrimdışı operasyonel sıcak cüzdan). Görevlinin başka yetkilisi yoktur — kullanıcı fonlarını doldurulmuş çıktıyı emrin owner ATA’sına göndermek dışında hareket ettiremez.
Hesaplar
Etki
(limit_order.unfilled_ratio_x64, tick.unfilled_ratio_x64)kullanarak borçlu olunan kümülatif çıktıyı hesaplar.- Deltayı
output_token_accountöğesine aktarır. limit_order.settled_outputöğesini günceller.- Emri kapatmaz; kalan giriş karşısında hala açıktır.
CloseLimitOrder
Tamamen tüketilmiş emir hesabını kapatın. Kira kim imzalarsa imzasın her zaman limit_order.owner öğesine döner.
Çağıran — owner veya limit_order_admin.
Ön koşullar
- Emrin sıfır doldurulmayan kalanı var (
amount == total_amountdoldurulmuş ve kapatılmış veya sahibi daha önce emri sıfıra azaltmış ve kapatmayı unutmuş).
limit_orderöğesini kapatır; kiralimit_order.owneröğesine gönderilir.
CreateDynamicFeeConfig (yönetici)
u16 dizini altında yeniden kullanılabilir parametre seti oluşturun.
Argümanlar
Yaygın hatalar —
InvalidDynamicFeeConfigParams decay_period <= filter_period ise veya herhangi bir 0 değerli alan sınırların dışında ise.
UpdateDynamicFeeConfig (yönetici)
Mevcut DynamicFeeConfig öğesini değiştirin. Oluşturma zamanında yapılandırmayı zaten anlık görüntü alan havuzlar geriye dönük olarak güncellenmez; yalnızca bu yapılandırmaya başvuran yeni oluşturulan havuzlar yeni değerleri alacaktır.
Argümanlar — CreateDynamicFeeConfig ile aynı beş kalibrasyon alanı (filter_period, decay_period, reduction_factor, dynamic_fee_control, max_volatility_accumulator); index oluşturma zamanında sabitlenir ve burada yeniden geçilmez.
CollectProtocolFee / CollectFundFee
Havuzun kasalarından tahakkuk eden protokol/fon ücretlerini bir alıcıya süpürür ve ilgili PoolState.protocol_fees_* / fund_fees_* alanlarını sıfırlar. Bu, CPMM’nin düzeni değildir — CLMM’de authority hesabı yoktur ve alıcı alanları recipient_token_{0,1}_account değil, recipient_token_account_{0,1} olarak adlandırılır.
Argümanlar — amount_0_requested: u64, amount_1_requested: u64.
InitializeReward
Havuza yeni bir ödül akışı ekleyin. Aynı anda en fazla 3 akış etkin olabilir.
Argümanlar — tek bir param yapısı, yani param: InitializeRewardParam:
param nesnesi geçirmelidir.
Hesaplar
Ön koşullar
- Havuzda şu anda 3’ten az akış etkin.
- Fon sağlayıcı bu talimatın bir parçası olarak
total_emission = emissions_per_second × (end_time − open_time)değerinde ödül tokenini kasaya yatırır. operation_statebaşına beyaz listeye alınan ödül mint’i.
SetRewardParams
Mevcut bir ödül akışını uzatın, doldurabilir veya emisyon oranını değiştirin. Tipik olarak havuz oluşturucu veya Raydium multisig tarafından çağrılır. Kısıtlamalar zincir üzerinde yaşar: genellikle end_time öğesini uzatabilir veya emisyonları artırabilir, geriye dönük olarak küçültemezsiniz. operation_state öğesinin sahibi listesini kontrol edin.
UpdateRewardInfos
Saf muhasebe — reward_growth_global_x64 öğesini geçerli zamana kapatır; emissions_per_second × Δt / liquidity öğesini çarparak. Her likidite dokunuşu talimatı tarafından dahili olarak çağrılır. Harici aktörlerin (UI’ler, kranklar) bunu tetiklemek istediği için bağımsız talimat olarak açığa çıkarılır.
Collecting rewards
Bir pozisyona borçlu olunan ödüllerDecreaseLiquidity / DecreaseLiquidityV2 tarafından ödenir.
Pozisyonu değiştirmeden toplamak için bunu liquidity = 0, amount_0_min = 0, amount_1_min = 0
ile çağırın. Ödül kasaları ve alıcı hesapları, etkin ödül başına üçerli gruplar hâlinde
remaining_accounts içine, reward_token_vault(W), recipient_token_account(W),
reward_vault_mint sırasıyla girer.
CollectRemainingRewards farklı bir şeydir: bir akışın end_time değerinden sonra ödül fon
sağlayıcısının, hiçbir pozisyona ayrılmamış tokenları süpürmesine izin verir.
Durum değişikliği matrisi
Sonraki adım
products/clmm/code-demos— çalıştırılabilir TypeScript örnekleri.products/clmm/fees— ücret ve ödül tahakkuku hakkında ayrıntılar.reference/error-codes— kapsamlı CLMM Anchor hata tablosu.
raydium-io/raydium-clmm—programs/amm/src/instructions- Raydium SDK v2 —
@raydium-io/raydium-sdk-v2

