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 →
Bu sayfa, products/clmm/accounts (hesapların ne olduğu) ve products/clmm/math (matematiğin ne olduğu) sayfalarıyla birlikte kullanılır. Argümanlar ve hesap sıralaması için yetkili kaynaktır; belirli bayt düzenleri IDL’den alınır.

Talimat envanteri

GrupTalimatNotlar
YöneticiCreateAmmConfigYeni bir ücret kademesi tanımlar.
YöneticiUpdateAmmConfigMevcut bir kademedeki oranları değiştirir.
YöneticiUpdatePoolStatusHavuzdaki işlemleri duraklatır/devam ettirir.
YöneticiCreateSupportMintAssociatedCLMM havuzlarında kullanılmak üzere bir Token-2022 mint uzantı yapılandırmasını izin listesine ekler.
YöneticiCreateOperationAccountProgram düzeyindeki işlem hesabını başlatır (tek seferlik).
YöneticiUpdateOperationAccountİşlem hesabı beyaz listesini değiştirir.
YöneticiCreateDynamicFeeConfigu16 indeksi altında yeniden kullanılabilir bir dinamik ücret parametre seti oluşturur.
YöneticiUpdateDynamicFeeConfigMevcut bir DynamicFeeConfig’i değiştirir. Daha önce bu yapılandırmayı anlık görüntü alan havuzlar etkilenmez.
HavuzCreatePoolBir AmmConfig’e bağlı CLMM havuzu başlatır. Standart, FromInput ücret yolu. CreateCustomizablePool ile bir arada kullanılabilir.
HavuzCreateCustomizablePoolYeni havuzlar için önerilir. CreatePool ile aynı yapıya ek olarak collect_fee_on ve isteğe bağlı enable_dynamic_fee bayrağını içerir.
PozisyonOpenPosition / OpenPositionV2 / OpenPositionWithToken22NftPozisyon NFT’si basar. OpenPositionV2, V1’in yerini almıştır (bitmap genişletme yuvası ile yeni hesap düzeni); OpenPositionWithToken22Nft, pozisyon NFT’sini SPL Token yerine Token-2022 olarak çıkarır. Yeni kodlar V2 veya Token-2022 varyantını kullanmalıdır.
PozisyonIncreaseLiquidity / IncreaseLiquidityV2Mevcut bir pozisyona likidite ekler.
PozisyonDecreaseLiquidity / DecreaseLiquidityV2Likiditeyi kaldırır; borçlu ücretleri tahsil eder.
PozisyonClosePositionNFT’yi yakar ve PersonalPositionState’i kapatır.
PozisyonCloseProtocolPositionYalnızca yönetici: eski ProtocolPositionState PDA’ları için tarama işlemi. Mevcut program ProtocolPositionState oluşturmuyor veya okumuyor — bu talimat yalnızca eski program sürümlerinin oluşturduğu hesaplardaki kira bedelini geri almak için vardır.
SwapSwap / SwapV2Sabit likidite swap’ı. Her iki varyant da dinamik ücret, tek taraflı ücret yönlendirmesi ve limit emir eşleştirmeyi uygular; tek fark, SwapV2’nin Token-2022 mint’lerini kabul etmesidir (V1 varyantı her iki vault’un klasik SPL Token olmasını gerektirir).
SwapSwapRouterBaseInÇok adımlı, yönlendirici tarafından kullanılır.
Limit emirOpenLimitOrderBir tick’te satış emri verir. Doldurulmamış tokenlar tick üzerinde bekler; eşleştirme motoru, fiyat geçerken bunları doldurur.
Limit emirIncreaseLimitOrderMevcut açık bir emre ekleme yapar.
Limit emirDecreaseLimitOrderAçık bir emri azaltır veya iptal eder; doldurulmamış kalanı artı önceden gerçekleşmiş çıktıyı öder.
Limit emirSettleLimitOrderDoldurulmuş çıktı tokenlarını emir sahibine gönderir. Sahibi veya operasyonel tutucu tarafından çağrılabilir.
Limit emirCloseLimitOrderTamamen tüketilmiş bir emir hesabını kapatır. Kira bedeli her zaman emrin owner’ına iade edilir. Sahibi veya tutucu tarafından çağrılabilir.
ÜcretlerCollectProtocolFeeProtokol ücretlerinin yönetici tarafından taranması.
ÜcretlerCollectFundFeeFon ücretlerinin yönetici tarafından taranması.
ÖdüllerInitializeRewardBir havuza yeni bir ödül akışı ekler.
ÖdüllerSetRewardParamsMevcut bir ödülün emisyon hızını/bitiş zamanını değiştirir.
ÖdüllerUpdateRewardInfosÖdül büyümesini şimdiki zamana kadar dengeler (her swap / pozisyon değişikliğinde çağrılır).
ÖdüllerTransferRewardOwnerBir ödül akışını ayarlayabilen veya doldurabilecek yetkiyi devreder.
ÖdüllerCollectRemainingRewardsBir ödül akışının end_time’ından sonra, tahsis edilmemiş tokenları fon sağlayıcıya geri süpürür.
YardımcıInitTickArrayBir tick-array hesabı başlatır (genellikle OpenPosition ile paketlenir).
Çoğu yalnızca-yönetici talimatı (CreateAmmConfig, UpdateAmmConfig, UpdatePoolStatus, CreateSupportMintAssociated, CreateOperationAccount, UpdateOperationAccount, CloseProtocolPosition), programın sabit kodlanmış admin pubkey’i tarafından kısıtlanmıştır. Ödül akışı yönetici talimatları (TransferRewardOwner, CollectRemainingRewards) ise program yöneticisi değil, ödül fon sağlayıcısı tarafından kısıtlanmıştır. V2 son eki “vault’larda / NFT’de Token-2022’yi destekler, bitmap genişletme yuvası gerektirir” anlamına gelir. SDK, yeni havuzlar için varsayılan olarak V2’yi seçer.

CreatePool

Argümanlar
sqrt_price_x64: u128           // başlangıç fiyatı
open_time:      u64            // bu zamandan önce swap'lar reddedilir
Hesaplar (özet)
#AdWSNotlar
1pool_creatorWS
2amm_configSeçilen ücret kademesi.
3pool_stateWBurada init.
4token_mint_0Sıralı.
5token_mint_1
6token_vault_0WBurada init, havuz authority PDA’sına ait.
7token_vault_1W
8observation_stateWBurada init.
9tick_array_bitmap_extensionWBurada init (V2).
10token_program
11token_program_2022
12system_program, rent
Ön koşullar
  • Bayt sırasına göre token_mint_0 < token_mint_1.
  • amm_config.disable_create_pool == false.
  • Mint’ler Token-2022 uzantı izin listesi tarafından reddedilmemiş olmalıdır.
Son koşullar
  • 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_info sıfırlanmış (dinamik ücret devre dışı).

CreateCustomizablePool

Yeni havuzlar için önerilir. CreatePool ile aynı etkiyi sağlar; ek olarak havuz başına ücret toplama modu ve isteğe bağlı dinamik ücret katılım seçeneği sunar. Argümanlar
pub struct CreateCustomizableParams {
    pub sqrt_price_x64:    u128,
    pub collect_fee_on:    CollectFeeOn,   // FromInput | Token0Only | Token1Only
    pub enable_dynamic_fee: bool,
}
Hesaplar (özet)CreatePool ile aynı; enable_dynamic_fee = true olduğunda ek olarak:
#AdWSNotlar
Ndynamic_fee_configAnlık görüntü alınacak paylaşılan yapılandırma. Zaten mevcut olmalıdır.
Ön koşullarCreatePool ile aynı. enable_dynamic_fee = false ise dynamic_fee_config yoksayılır. Son koşullar
  • pool_state.fee_on, seçilen CollectFeeOn varyantına ayarlanır.
  • Dinamik ücret etkinleştirildiyse: pool_state.dynamic_fee_info, sağlanan DynamicFeeConfig’den başlatılır (beş kalibrasyon parametresi kopyalanır; durum alanları sıfırlanır).
  • Aksi takdirde: pool_state.dynamic_fee_info sı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şturulurken ayarlanır. Yerinde yükseltme mevcut değildir — eski CreatePool aracılığıyla oluşturulan havuzlar geriye dönük olarak dinamik ücret veya tek taraflı ücret kazanamaz. Yeni dağıtımlar bu talimatı varsayılan olarak kullanmalıdır.

OpenPositionV2 / OpenPositionWithToken22Nft

Mevcut bir havuz içinde yeni bir pozisyon oluşturur. Argümanlar
tick_lower_index: i32
tick_upper_index: i32
tick_array_lower_start_index: i32
tick_array_upper_start_index: i32
liquidity:  u128              // istenen L (veya aşağıdaki miktarları kullanmak için 0)
amount_0_max: u64
amount_1_max: u64
with_metadata: bool           // NFT meta verilerini yaz (Metaplex)
base_flag: Option<bool>       // true = amount0'a göre ayarla; false = amount1'e göre ayarla
Hesaplar (özet)
#AdWS
1payerWS
2position_nft_owner
3position_nft_mintWS (keypair)
4position_nft_accountWNFT için sahibin ATA’sı.
5metadata_accountWMetaplex (isteğe bağlı, with_metadata ise).
6pool_stateW
7protocol_position
8tick_array_lowerWBaşlatılmamışsa oluşturulur.
9tick_array_upperWAynı şekilde.
10personal_positionWBurada oluşturulur.
11token_account_0, token_account_1WKullanıcı kaynak ATA’ları.
12token_vault_0, token_vault_1W
13rent, system_program, token_program
14associated_token_program
15metadata_programİsteğe bağlı.
16token_program_2022V2.
17vault_0_mint, vault_1_mintV2.
18tick_array_bitmap_extensionWV2 (dokunulduysa).
Matematik — bkz. products/clmm/math. base_flag’e göre program, liquidity’yi veya (amount_0_max, amount_1_max)’ı gerçek L’ye ve tüketilen gerçek token miktarlarına dönüştürür. Ön koşullar
  • tick_lower < tick_upper, her ikisi de pool.tick_spacing’in katları olmalı ve [MIN_TICK, MAX_TICK] aralığında olmalıdır.
  • Gerekli tick dizileri iletilmiş ve başlatılmış olmalıdır (veya işlem içinde InitTickArray CPI aracılığıyla burada oluşturulmuş olmalıdır).
  • Kullanıcı, kaynak ATA’larında en az amount_0_max ve amount_1_max kadar token bulundurmalıdır.
Son koşullar
  • personal_position mevcut, liquidity ayarlı, fee_growth_inside_last anlık görüntü alınmış.
  • tick_lower ve tick_upper’daki tick-array girişleri güncellendi (liquidity_gross += L, liquidity_net ± L, ücret büyüme anlık görüntüleri korunuyor).
  • Pozisyon aralık içindeyse (tick_lower ≤ tick_current < tick_upper) pool_state.liquidity += L.
Yaygın hatalarInvalidTickIndex, NotApproved, ZeroAmountSpecified, TransactionTooLarge (çok fazla tick dizisi varsa).

IncreaseLiquidityV2

Halihazırda açık bir pozisyona likidite ekler. Argümanlar
liquidity: u128
amount_0_max: u64
amount_1_max: u64
base_flag: Option<bool>
HesaplarOpenPosition gibi, NFT mint’i olmadan (pozisyon zaten mevcut; NFT, 1 token tutan sahibin ATA’sı olarak iletilir). Etki
  • amount_0_actual / amount_1_actual’ı kullanıcıdan vault’lara aktarır.
  • personal_position.liquidity ve pool_state.liquidity’yi (aralık içindeyse) ve buna göre uç nokta tick liquidity_gross / liquidity_net’i artırır.
  • Son dokunuştan bu yana biriken ücret ve ödülleri dengeler ve bunları tokens_fees_owed_{0,1} / reward_amount_owed’a yazar. Bunlar yalnızca DecreaseLiquidity veya CollectReward’da ödenir, artırmada değil.

DecreaseLiquidityV2

Bir pozisyondan likidite kaldırır. Argümanlar
liquidity: u128
amount_0_min: u64
amount_1_min: u64
HesaplarIncreaseLiquidity ile aynı yapı. Etki
  • Mevcut sqrt_price_x64’e göre kaldırılan L için (amount_0, amount_1)’i hesaplar.
  • Son dokunuştan bu yana biriken ücret/ödülleri IncreaseLiquidity ile aynı şekilde dengeler.
  • amount_0 + fees_owed_0 ve amount_1 + fees_owed_1’i vault’lardan kullanıcıya aktarır.
  • Likidite sayaçlarını azaltır; yeni personal_position.liquidity == 0 ise pozisyon ClosePosition için uygun hale gelir.
Slippageamount_0_min ve amount_1_min, kullanıcının çıkış tarafındaki Token-2022 transfer ücretleri net olarak kabul edeceği minimum miktarlardır.

ClosePosition

Pozisyon NFT’sini yakar ve PersonalPositionState’i kapatır. Ön koşullar
  • personal_position.liquidity == 0.
  • tokens_fees_owed_{0,1} == 0.
  • Tüm ödül sayaçları reward_amount_owed == 0.
(Yani önce her şeyi toplayın ve sıfıra kadar azaltın.) Etki
  • NFT’yi yakar.
  • NFT mint hesabını ve personal_position hesabını kapatır, kira bedelini payer’a iade eder.

SwapV2

Likidite eğrisini dolaşır; is_base_input’a bağlı olarak tam girdi veya tam çıktı. Argümanlar
amount: u64                  // is_base_input=true ise girdi, aksi takdirde çıktı
other_amount_threshold: u64  // minimum çıktı veya maksimum girdi
sqrt_price_limit_x64: u128   // sabit sınır; 0 ⇒ sınırsız
is_base_input: bool
Hesaplar (özet)
#AdWSNotlar
1payerS
2amm_config
3pool_stateW
4input_token_accountW
5output_token_accountW
6input_vaultW
7output_vaultW
8observation_stateW
9token_program
10token_program_2022V2.
11memo_programV2 (bazı Token-2022 yolları için gerekli).
12input_vault_mint, output_vault_mintV2.
13tick_array_bitmap_extension (isteğe bağlı)WSwap genişletmeye girerse.
14+tick_array (kalan)WBeklenen yürüyüş aralığını kapsayacak kadar dizi.
Çağıranlar, beklenen swap yürüyüşünü kapsayan sıralı bir tick dizisi listesi iletir; program ihtiyaç duyduğu kadarını kullanır. SDK bu listeyi PoolUtils.computeAmountOutFormat veya API’nin fiyat teklifi uç noktası aracılığıyla hesaplar. Ön koşullar
  • pool_state.status swap’a izin veriyor olmalıdır.
  • now >= open_time.
  • sqrt_price_limit_x64, yön için sqrt_price_x64’ün doğru tarafında olmalıdır.
Yaygın hatalarExceededSlippage, SqrtPriceLimitOverflow, TickArrayNotFound, LiquidityInsufficient. Çağıranların bilmesi gereken SwapV2’nin dahili işlemleri (2025 sonrası sürüm):
  1. Dinamik ücret ek bedelipool.dynamic_fee_info sıfır değilse, program son swap’tan bu yana kat edilen tick mesafesini kullanarak volatilite akümülatörünü günceller (products/clmm/fees içindeki filtre/bozunma kurallarıyla) ve AmmConfig.trade_fee_rate’in üzerine bir dynamic_fee_component ekler. Toplam ücret %10 ile sınırlıdır (MAX_FEE_RATE_NUMERATOR / 1_000_000).
  2. Limit emir eşleştirme — fiyat yürüyüşü açık limit emirleri barındıran bir tick’i geçtiğinde, program önce o tick’teki mevcut limit emri likiditesini (order_phase’e göre FIFO) doldurur, ardından LP likidite eğrisi boyunca devam eder. Doldurulan miktarlar, sonraki uzlaşma için tick.unfilled_ratio_x64 ve tick.part_filled_orders_remaining’i günceller; emirlerin kendisi, sahibi SettleLimitOrder’ı çağırana kadar harcanmamış kalır.
  3. Tek taraflı ücret yönlendirmesipool.fee_on = Token0Only veya Token1Only olduğunda, swap adımı aynı girdi-çıktı ticaretini hesaplar; ücret daha sonra yapılandırılmış tarafa yönlendirilir. Yapılandırılmış ücret tarafının çıktı olduğu yönler için ücret, swap çıktısından düşülür (kullanıcı çıktı − ücret alır); girdi olduğu yönler için davranış FromInput ile eşleşir. PoolState üzerindeki is_fee_on_input(zero_for_one) ve is_fee_on_token0(zero_for_one) yöntemlerine bakın.
Swap (V1), SwapV2 ile aynı dinamik ücret, tek taraflı ücret yönlendirmesi ve limit emir eşleştirmeyi uygular; tek eksik özelliği Token-2022 desteğidir — her iki vault da klasik SPL Token olmalıdır. Herhangi bir Token-2022 mint’i olan havuzlar SwapV2 aracılığıyla swap yapılmalıdır. Toplayıcı ve SDK, her CLMM bacağı için zaten V2’yi tercih ettiğinden çağıranların mint türüne göre dallanması gerekmez.

OpenLimitOrder

Belirli bir tick’te satış emri verir. Emir, tick başına FIFO kohortunda oturur ve fiyat geçtikçe dolduruluir. Argümanlar
nonce_index:    u8       // kullanıcının seçtiği nonce-account indeksi (cüzdan başına 0..255)
zero_for_one:   bool     // true: token0'ı token1 için sat; false: token1'i token0 için sat
tick_index:     i32      // pool.tick_spacing'in katı olmalıdır
amount:         u64      // girdi token miktarı
Hesaplar (özet)
#AdWSNotlar
1payerWSEmir sahibi; kira öder.
2pool_stateW
3tick_arrayWtick_index’i içeren tick dizisi.
4limit_order_nonceWPDA. init_if_needed — bu nonce_index altında kullanıcının ilk emrinde oluşturulur.
5limit_orderWPDA. Burada init.
6input_token_accountWKullanıcının girdi ATA’sı.
7input_vaultWHavuz girdi vault’u.
8input_vault_mintToken-2022 ücret işleme.
9input_token_programSPL veya Token-2022.
10system_program, rent
Ön koşullar
  • tick_index % pool.tick_spacing == 0 ve [MIN_TICK, MAX_TICK] aralığında olmalıdır.
  • tick_index, seçilen yön için pool.tick_current’ın doğru tarafında olmalıdır (token0 satışı → tick mevcut tick’in üzerinde olmalı, tersi de geçerli). Zaten geçilmiş bir tick’te satış yapmak anında eşleşmeye yol açacağından reddedilir.
  • pool_state.status, limit emir işlemine izin veriyor olmalıdır (bit 5).
Son koşullar
  • limit_order mevcut, açılış zamanında tick.order_phase ve tick.unfilled_ratio_x64’ün anlık görüntüsünü alıyor.
  • tick.orders_amount += amount (mevcut kohortta).
  • limit_order_nonce.order_nonce += 1.
  • OpenLimitOrderEvent yayımlandı.
Yaygın hatalarInvalidLimitOrderAmount (sıfır veya havuzun minimumunun altında), InvalidTickIndex ([MIN_TICK, MAX_TICK] dışında veya seçilen yön için tick_current’ın yanlış tarafında), TickAndSpacingNotMatch (tick_index % pool.tick_spacing != 0), OrderPhaseSaturated.

IncreaseLimitOrder

Mevcut açık bir emre ekleme yapar. Yalnızca emrin owner’ı tarafından çağrılabilir. Argümanlar
amount: u64    // ek girdi token miktarı
Hesaplar — nonce hesabı olmadan OpenLimitOrder gibi; limit_order PDA’sı doğrudan iletilir. Ön koşullar
  • limit_order.owner == signer.
  • Emir hâlâ aynı kohortta (tick.order_phase == limit_order.order_phase). Kohort doldurmaya başlamışsa, emir kısmen uzlaşılmıştır — çağıran önce ilerlemek için DecreaseLimitOrder veya SettleLimitOrder’ı çağırmalıdır.
Etki
  • amount’ı sahip ATA’sından input_vault’a aktarır.
  • limit_order.total_amount += amount; tick.orders_amount += amount.

DecreaseLimitOrder

Açık bir emri azaltır veya tamamen iptal eder. Doldurulmamış kalanı sahibe iade eder; geçmiş kısmi dolgularla önceden uzlaşılmış çıktıları da öder. Argümanlar
amount:     u64    // geri çekilecek girdi token miktarı (maksimum = doldurulmamış kalan)
amount_min: u64    // girdi tarafı geri çekimi için slippage tabanı
Hesaplar — hem girdi hem de çıktı token tarafları:
#AdWS
1ownerS
2pool_stateW
3tick_arrayW
4limit_orderW
5input_token_accountW
6output_token_accountW
7input_vaultW
8output_vaultW
9input_vault_mint, output_vault_mint
10token_program, token_program_2022
Etki
  • Açılıştan bu yana kohortun unfilled_ratio_x64’ünden emrin doldurulan miktarını yeniden hesaplar.
  • Doldurulan çıktıyı output_token_account’a gönderir.
  • Doldurulmamış girdiden amount kadarını input_token_account’a geri gönderir.
  • limit_order’ı buna göre günceller. Yeni doldurulmamış kalan sıfırsa, program hesabı kapatır ve kira bedelini owner’a iade eder.

SettleLimitOrder

Doldurulan çıktı tokenlarını, emrin doldurulmamış kalanını değiştirmeden sahibe gönderir. auto_withdraw tutucularının uzun süreli kısmi dolguları damlatarak ödemek istediğinde kullanışlıdır. Çağıran — emrin owner’ı veya programın limit_order_admin’i (otomatik tutucu döngüsü çalıştıran, çevrimdışı bir operasyonel sıcak cüzdan). Tutucunun başka yetkisi yoktur — kullanıcı fonlarını yalnızca doldurulan çıktıyı emrin owner ATA’sına itmek dışında hareket ettiremez. Hesaplar
#AdWS
1signerSsahip veya limit_order_admin
2pool_state
3tick_array
4limit_orderW
5output_token_accountWSahibin çıktı ATA’sı.
6output_vaultWHavuz çıktı vault’u.
7output_vault_mint
8output_token_program
Etki
  • (limit_order.unfilled_ratio_x64, tick.unfilled_ratio_x64) kullanılarak borçlu birikimli çıktıyı hesaplar.
  • Deltayı output_token_account’a aktarır.
  • limit_order.settled_output’u günceller.
  • Emri kapatmaz; kalan girdi için hâlâ açıktır.

CloseLimitOrder

Tamamen tüketilmiş bir emir hesabını kapatır. Kira bedeli, imzalayanından bağımsız olarak her zaman limit_order.owner’a iade edilir. Çağıranowner veya limit_order_admin. Ön koşullar
  • Emrin doldurulmamış kalanı sıfırdır (ya amount == total_amount dolduruldu ve uzlaşıldı, ya da sahip daha önce emri sıfıra düşürüp kapatmayı unuttu).
Etki
  • limit_order’ı kapatır; kira bedeli limit_order.owner’a gönderilir.

CreateDynamicFeeConfig (yönetici)

Bir u16 indeksi altında yeniden kullanılabilir parametre seti oluşturur. Argümanlar
index:                       u16
filter_period:               u16   // saniye; örn. 30
decay_period:                u16   // saniye; örn. 600. filter_period'dan büyük olmalıdır
reduction_factor:            u16   // 1..10_000; örn. 5_000 = bozunma penceresi başına %50 saklama
dynamic_fee_control:         u32   // 1..100_000; volatilite-ücret eğrisindeki kazanım
max_volatility_accumulator:  u32   // tavan
Hesaplar
#AdWSNotlar
1ownerWSSabit kodlanmış yönetici pubkey’i.
2dynamic_fee_configWPDA, burada init.
3system_program
Yaygın hatalardecay_period <= filter_period ise veya herhangi bir sınır dışı 0 değerli alan varsa InvalidDynamicFeeConfigParams.

UpdateDynamicFeeConfig (yönetici)

Mevcut bir DynamicFeeConfig’i değiştirir. Oluşturma zamanında yapılandırmayı anlık görüntü almış havuzlar geriye dönük olarak güncellenmez; yalnızca bu yapılandırmaya başvuran yeni oluşturulan havuzlar yeni değerleri alır. ArgümanlarCreateDynamicFeeConfig 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 iletilmez.

CollectProtocolFee / CollectFundFee

CPMM’nin CollectProtocolFee / CollectFundFee’siyle özdeş yapı. İmzalayan AmmConfig.owner / AmmConfig.fund_owner ile eşleşmelidir. Havuzun vault’larından alıcıya birikmiş protokol/fon ücretlerini süpürür, ilgili PoolState.protocol_fees_* / fund_fees_* alanlarını sıfırlar.

InitializeReward

Bir havuza yeni bir ödül akışı ekler. Aynı anda en fazla 3 akış aktif olabilir. Argümanlar
open_time:     u64
end_time:      u64
emissions_per_second_x64: u128   // Q64.64
Hesaplar
#AdWS
1reward_funderWS
2funder_token_accountW
3amm_config
4pool_stateW
5operation_stateÖdül oluşturmayı kısıtlayan CLMM işlem durumu PDA’sı.
6reward_token_mint
7reward_token_vaultWBurada init.
8reward_token_program
9system_program, rent
Ön koşullar
  • Havuzda şu anda 3’ten az aktif akış var.
  • Fon sağlayıcı, bu talimatın bir parçası olarak vault’a total_emission = emissions_per_second × (end_time − open_time) değerinde ödül tokeni yatırır.
  • operation_state uyarınca beyaz listedeki ödül mint’i.

SetRewardParams

Mevcut bir ödül akışını uzatır, doldurur veya emisyon oranını değiştirir. Genellikle bir havuz oluşturucu veya Raydium çoklu imzası tarafından çağrılır. Kısıtlamalar zincir üzerindedir: genellikle end_time’ı uzatabilir veya emisyonları artırabilirsiniz, geriye dönük olarak azaltamazsınız. operation_state’in sahip listesini kontrol edin.

UpdateRewardInfos

Saf muhasebe — reward_growth_global_x64’ü emissions_per_second × Δt / liquidity çarparak şimdiki zamana dengeler. Her likiditeye dokunan talimat tarafından dahili olarak çağrılır. Harici aktörlerin (kullanıcı arayüzleri, krank’lar) bazen tetiklemek istediği için bağımsız bir talimat olarak sunulur.

CollectReward

Pozisyon sahibi borçlu ödül tokenlarını talep eder. Hesaplar
#AdWS
1nft_ownerS
2nft_accountPozisyon NFT’sini tutan sahibin ATA’sı.
3personal_positionW
4pool_stateW
5protocol_position
6reward_token_vaultW
7recipient_token_accountW
8token_program
9token_program_2022
Etki
  • Ödül büyümesini dengeler (ücretlerle aynı model).
  • Borçlu miktarı alıcı ATA’sına aktarır, reward_amount_owed[i]’yi sıfırlar.

Durum değişikliği matrisi

Talimatpool.liquiditypool.fee_growth_globalpool.reward_growth_globalpersonal_position.liquidityTick dizisi
CreatePool00
OpenPositionaralık içindeyse +yeniliquidity_gross/net ekle
IncreaseLiquidityaralık içindeyse +borçluyu dengeleborçluyu dengele+ayarla
DecreaseLiquidityaralık içindeyse −borçluyu dengeleborçluyu dengeleayarla
ClosePositionyok edildi
SwapV2geçişlerde ±+geçiş ve dışarıyı çevir; limit emir kohortlarını eşleştir
OpenLimitOrderhedef tick’te orders_amount += amount
IncreaseLimitOrderorders_amount += amount
DecreaseLimitOrderorders_amount -=, kohortu kapatabilir
SettleLimitOrder— (tick’te salt okunur)
CloseLimitOrder
CreateCustomizablePool00
UpdateRewardInfos+
CollectRewardborçluyu dengele

Sonraki adımlar

Kaynaklar: