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
| 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). |
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
| # | 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 |
- 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.
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ı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
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. |
CreatePool ile aynı. enable_dynamic_fee = false ise dynamic_fee_config yoksayılır.
Son koşullar
pool_state.fee_on, seçilenCollectFeeOnvaryantına ayarlanır.- Dinamik ücret etkinleştirildiyse:
pool_state.dynamic_fee_info, sağlananDynamicFeeConfig’den 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ş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
| # | 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). |
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 depool.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
InitTickArrayCPI aracılığıyla burada oluşturulmuş olmalıdır). - Kullanıcı, kaynak ATA’larında en az
amount_0_maxveamount_1_maxkadar token bulundurmalıdır.
personal_positionmevcut,liquidityayarlı,fee_growth_inside_lastanlık görüntü alınmış.tick_lowervetick_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.
InvalidTickIndex, NotApproved, ZeroAmountSpecified, TransactionTooLarge (çok fazla tick dizisi varsa).
IncreaseLiquidityV2
Halihazırda açık bir pozisyona likidite ekler.
Argümanlar
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.liquidityvepool_state.liquidity’yi (aralık içindeyse) ve buna göre uç nokta tickliquidity_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ızcaDecreaseLiquidityveyaCollectReward’da ödenir, artırmada değil.
DecreaseLiquidityV2
Bir pozisyondan likidite kaldırır.
Argümanlar
IncreaseLiquidity ile aynı yapı.
Etki
- Mevcut
sqrt_price_x64’e göre kaldırılanLiçin(amount_0, amount_1)’i hesaplar. - Son dokunuştan bu yana biriken ücret/ödülleri
IncreaseLiquidityile aynı şekilde dengeler. amount_0 + fees_owed_0veamount_1 + fees_owed_1’i vault’lardan 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 çı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.
- NFT’yi yakar.
- NFT mint hesabını ve
personal_positionhesabını kapatır, kira bedelinipayer’a iade eder.
SwapV2
Likidite eğrisini dolaşır; is_base_input’a bağlı olarak tam girdi veya tam çıktı.
Argümanlar
| # | 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. |
PoolUtils.computeAmountOutFormat veya API’nin fiyat teklifi uç noktası aracılığıyla hesaplar.
Ön koşullar
pool_state.statusswap’a izin veriyor olmalıdır.now >= open_time.sqrt_price_limit_x64, yön içinsqrt_price_x64’ün doğru tarafında olmalıdır.
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_infosı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/feesiçindeki filtre/bozunma kurallarıyla) veAmmConfig.trade_fee_rate’in üzerine birdynamic_fee_componentekler. 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çintick.unfilled_ratio_x64vetick.part_filled_orders_remaining’i günceller; emirlerin kendisi, sahibiSettleLimitOrder’ı çağırana kadar harcanmamış kalır. - Tek taraflı ücret yönlendirmesi —
pool.fee_on = Token0OnlyveyaToken1Onlyolduğ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ı − ücretalır); girdi olduğu yönler için davranışFromInputile eşleşir.PoolStateüzerindekiis_fee_on_input(zero_for_one)veis_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
| # | 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 |
tick_index % pool.tick_spacing == 0ve[MIN_TICK, MAX_TICK]aralığında olmalıdır.tick_index, seçilen yön içinpool.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).
limit_ordermevcut, açılış zamanındatick.order_phasevetick.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.OpenLimitOrderEventyayımlandı.
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
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çinDecreaseLimitOrderveyaSettleLimitOrder’ı çağırmalıdır.
amount’ı sahip ATA’sındaninput_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
| # | 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 |
- 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
amountkadarı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 bedeliniowner’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 |
(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_amountdolduruldu ve uzlaşıldı, ya da sahip daha önce emri sıfıra düşürüp kapatmayı unuttu).
limit_order’ı kapatır; kira bedelilimit_order.owner’a gönderilir.
CreateDynamicFeeConfig (yönetici)
Bir u16 indeksi altında yeniden kullanılabilir parametre seti oluşturur.
Argümanlar
| # | 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 |
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
| # | 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 |
- 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_stateuyarı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 |
- Ö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
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— eksiksiz CLMM Anchor hata tablosu.
raydium-io/raydium-clmm—programs/amm/src/instructions- Raydium SDK v2 —
@raydium-io/raydium-sdk-v2

