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, 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
| Grup | Talimat | Notlar |
|---|
| Yönetici | CreateAmmConfig | Yeni bir ücret kademesi tanımlar. |
| Yönetici | UpdateAmmConfig | Mevcut bir kademedeki oranları değiştirir. |
| Yönetici | UpdatePoolStatus | Havuzdaki işlemleri duraklatır/devam ettirir. |
| Yönetici | CreateSupportMintAssociated | CLMM havuzlarında kullanılmak üzere bir Token-2022 mint uzantı yapılandırmasını izin listesine ekler. |
| Yönetici | CreateOperationAccount | Program düzeyindeki işlem hesabını başlatır (tek seferlik). |
| Yönetici | UpdateOperationAccount | İşlem hesabı beyaz listesini değiştirir. |
| Yönetici | CreateDynamicFeeConfig | u16 indeksi altında yeniden kullanılabilir bir dinamik ücret parametre seti oluşturur. |
| Yönetici | UpdateDynamicFeeConfig | Mevcut bir DynamicFeeConfig’i değiştirir. Daha önce bu yapılandırmayı anlık görüntü alan havuzlar etkilenmez. |
| Havuz | CreatePool | Bir AmmConfig’e bağlı CLMM havuzu başlatır. Standart, FromInput ücret yolu. CreateCustomizablePool ile bir arada kullanılabilir. |
| Havuz | CreateCustomizablePool | Yeni 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. |
| Pozisyon | OpenPosition / OpenPositionV2 / OpenPositionWithToken22Nft | Pozisyon 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. |
| Pozisyon | IncreaseLiquidity / IncreaseLiquidityV2 | Mevcut bir pozisyona likidite ekler. |
| Pozisyon | DecreaseLiquidity / DecreaseLiquidityV2 | Likiditeyi kaldırır; borçlu ücretleri tahsil eder. |
| Pozisyon | ClosePosition | NFT’yi yakar ve PersonalPositionState’i kapatır. |
| Pozisyon | CloseProtocolPosition | Yalnı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. |
| Swap | Swap / SwapV2 | Sabit 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). |
| Swap | SwapRouterBaseIn | Çok adımlı, yönlendirici tarafından kullanılır. |
| Limit emir | OpenLimitOrder | Bir tick’te satış emri verir. Doldurulmamış tokenlar tick üzerinde bekler; eşleştirme motoru, fiyat geçerken bunları doldurur. |
| Limit emir | IncreaseLimitOrder | Mevcut açık bir emre ekleme yapar. |
| Limit emir | DecreaseLimitOrder | Açık bir emri azaltır veya iptal eder; doldurulmamış kalanı artı önceden gerçekleşmiş çıktıyı öder. |
| Limit emir | SettleLimitOrder | Doldurulmuş çıktı tokenlarını emir sahibine gönderir. Sahibi veya operasyonel tutucu tarafından çağrılabilir. |
| Limit emir | CloseLimitOrder | Tamamen 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. |
| Ücretler | CollectProtocolFee | Protokol ücretlerinin yönetici tarafından taranması. |
| Ücretler | CollectFundFee | Fon ücretlerinin yönetici tarafından taranması. |
| Ödüller | InitializeReward | Bir havuza yeni bir ödül akışı ekler. |
| Ödüller | SetRewardParams | Mevcut bir ödülün emisyon hızını/bitiş zamanını değiştirir. |
| Ödüller | UpdateRewardInfos | Ödül büyümesini şimdiki zamana kadar dengeler (her swap / pozisyon değişikliğinde çağrılır). |
| Ödüller | TransferRewardOwner | Bir ödül akışını ayarlayabilen veya doldurabilecek yetkiyi devreder. |
| Ödüller | CollectRemainingRewards | Bir ödül akışının end_time’ından sonra, tahsis edilmemiş tokenları fon sağlayıcıya geri süpürür. |
| Yardımcı | InitTickArray | Bir 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)
| # | Ad | W | S | Notlar |
|---|
| 1 | pool_creator | W | S | |
| 2 | amm_config | | | Seçilen ücret kademesi. |
| 3 | pool_state | W | | Burada init. |
| 4 | token_mint_0 | | | Sıralı. |
| 5 | token_mint_1 | | | |
| 6 | token_vault_0 | W | | Burada init, havuz authority PDA’sına ait. |
| 7 | token_vault_1 | W | | |
| 8 | observation_state | W | | Burada init. |
| 9 | tick_array_bitmap_extension | W | | Burada init (V2). |
| 10 | token_program | | | |
| 11 | token_program_2022 | | | |
| 12 | system_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:
| # | Ad | W | S | Notlar |
|---|
| N | dynamic_fee_config | | | Anlık görüntü alınacak paylaşılan yapılandırma. Zaten mevcut olmalıdır. |
Ön koşullar — CreatePool 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)
| # | Ad | W | S | |
|---|
| 1 | payer | W | S | |
| 2 | position_nft_owner | | | |
| 3 | position_nft_mint | W | S (keypair) | |
| 4 | position_nft_account | W | | NFT için sahibin ATA’sı. |
| 5 | metadata_account | W | | Metaplex (isteğe bağlı, with_metadata ise). |
| 6 | pool_state | W | | |
| 7 | protocol_position | | | |
| 8 | tick_array_lower | W | | Başlatılmamışsa oluşturulur. |
| 9 | tick_array_upper | W | | Aynı şekilde. |
| 10 | personal_position | W | | Burada oluşturulur. |
| 11 | token_account_0, token_account_1 | W | | Kullanıcı kaynak ATA’ları. |
| 12 | token_vault_0, token_vault_1 | W | | |
| 13 | rent, system_program, token_program | | | |
| 14 | associated_token_program | | | |
| 15 | metadata_program | | | İsteğe bağlı. |
| 16 | token_program_2022 | | | V2. |
| 17 | vault_0_mint, vault_1_mint | | | V2. |
| 18 | tick_array_bitmap_extension | W | | V2 (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 hatalar — InvalidTickIndex, 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>
Hesaplar — OpenPosition 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
Hesaplar — IncreaseLiquidity 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.
Slippage — amount_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)
| # | Ad | W | S | Notlar |
|---|
| 1 | payer | | S | |
| 2 | amm_config | | | |
| 3 | pool_state | W | | |
| 4 | input_token_account | W | | |
| 5 | output_token_account | W | | |
| 6 | input_vault | W | | |
| 7 | output_vault | W | | |
| 8 | observation_state | W | | |
| 9 | token_program | | | |
| 10 | token_program_2022 | | | V2. |
| 11 | memo_program | | | V2 (bazı Token-2022 yolları için gerekli). |
| 12 | input_vault_mint, output_vault_mint | | | V2. |
| 13 | tick_array_bitmap_extension (isteğe bağlı) | W | | Swap genişletmeye girerse. |
| 14+ | tick_array (kalan) | W | | Beklenen 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 hatalar — ExceededSlippage, SqrtPriceLimitOverflow, TickArrayNotFound, LiquidityInsufficient.
Çağıranların bilmesi gereken SwapV2’nin dahili işlemleri (2025 sonrası sürüm):
- Dinamik ücret ek bedeli —
pool.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).
- 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.
- Tek taraflı ücret yönlendirmesi —
pool.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)
| # | Ad | W | S | Notlar |
|---|
| 1 | payer | W | S | Emir sahibi; kira öder. |
| 2 | pool_state | W | | |
| 3 | tick_array | W | | tick_index’i içeren tick dizisi. |
| 4 | limit_order_nonce | W | | PDA. init_if_needed — bu nonce_index altında kullanıcının ilk emrinde oluşturulur. |
| 5 | limit_order | W | | PDA. Burada init. |
| 6 | input_token_account | W | | Kullanıcının girdi ATA’sı. |
| 7 | input_vault | W | | Havuz girdi vault’u. |
| 8 | input_vault_mint | | | Token-2022 ücret işleme. |
| 9 | input_token_program | | | SPL veya Token-2022. |
| 10 | system_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 hatalar — InvalidLimitOrderAmount (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ı:
| # | Ad | W | S |
|---|
| 1 | owner | | S |
| 2 | pool_state | W | |
| 3 | tick_array | W | |
| 4 | limit_order | W | |
| 5 | input_token_account | W | |
| 6 | output_token_account | W | |
| 7 | input_vault | W | |
| 8 | output_vault | W | |
| 9 | input_vault_mint, output_vault_mint | | |
| 10 | token_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
| # | Ad | W | S | |
|---|
| 1 | signer | | S | sahip veya limit_order_admin |
| 2 | pool_state | | | |
| 3 | tick_array | | | |
| 4 | limit_order | W | | |
| 5 | output_token_account | W | | Sahibin çıktı ATA’sı. |
| 6 | output_vault | W | | Havuz çıktı vault’u. |
| 7 | output_vault_mint | | | |
| 8 | output_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ğıran — owner 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
| # | Ad | W | S | Notlar |
|---|
| 1 | owner | W | S | Sabit kodlanmış yönetici pubkey’i. |
| 2 | dynamic_fee_config | W | | PDA, burada init. |
| 3 | system_program | | | |
Yaygın hatalar — decay_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ü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 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
| # | Ad | W | S | |
|---|
| 1 | reward_funder | W | S | |
| 2 | funder_token_account | W | | |
| 3 | amm_config | | | |
| 4 | pool_state | W | | |
| 5 | operation_state | | | Ödül oluşturmayı kısıtlayan CLMM işlem durumu PDA’sı. |
| 6 | reward_token_mint | | | |
| 7 | reward_token_vault | W | | Burada init. |
| 8 | reward_token_program | | | |
| 9 | system_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
| # | Ad | W | S | |
|---|
| 1 | nft_owner | | S | |
| 2 | nft_account | | | Pozisyon NFT’sini tutan sahibin ATA’sı. |
| 3 | personal_position | W | | |
| 4 | pool_state | W | | |
| 5 | protocol_position | | | |
| 6 | reward_token_vault | W | | |
| 7 | recipient_token_account | W | | |
| 8 | token_program | | | |
| 9 | token_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
| Talimat | pool.liquidity | pool.fee_growth_global | pool.reward_growth_global | personal_position.liquidity | Tick dizisi |
|---|
CreatePool | 0 | 0 | — | — | — |
OpenPosition | aralık içindeyse + | — | — | yeni | liquidity_gross/net ekle |
IncreaseLiquidity | aralık içindeyse + | borçluyu dengele | borçluyu dengele | + | ayarla |
DecreaseLiquidity | aralık içindeyse − | borçluyu dengele | borçluyu dengele | − | ayarla |
ClosePosition | — | — | — | yok edildi | — |
SwapV2 | geçişlerde ± | + | — | — | geçiş ve dışarıyı çevir; limit emir kohortlarını eşleştir |
OpenLimitOrder | — | — | — | — | hedef tick’te orders_amount += amount |
IncreaseLimitOrder | — | — | — | — | orders_amount += amount |
DecreaseLimitOrder | — | — | — | — | orders_amount -=, kohortu kapatabilir |
SettleLimitOrder | — | — | — | — | — (tick’te salt okunur) |
CloseLimitOrder | — | — | — | — | — |
CreateCustomizablePool | 0 | 0 | — | — | — |
UpdateRewardInfos | — | — | + | — | — |
CollectReward | — | — | borçluyu dengele | — | — |
Sonraki adımlar
Kaynaklar: