Skip to main content
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 →

İki bağımsız ücret, dört hedef

CPMM her swap’ta iki ayrı oranlı ücret alır:
  1. İşlem ücreti — AmmConfig.trade_fee_rate oranında alınır ve üç hedefe bölüştürülür:
    • LP payı — vault’ta kalır ve k’yı büyütür. LP token’larını yakarak örtülü olarak talep edilir.
    • Protokol payı — PoolState.protocol_fees_token* hesabına birikir; protocol_owner tarafından CollectProtocolFee aracılığıyla temizlenir.
    • Fon payı — PoolState.fund_fees_token* hesabına birikir; fund_owner tarafından CollectFundFee aracılığıyla temizlenir.
  2. Yaratıcı ücreti (isteğe bağlı, havuz başına) — AmmConfig.creator_fee_rate oranında alınır ve işlem ücretinden bağımsız olarak PoolState.creator_fees_token* hesabına birikir. Yaratıcı bunu CollectCreatorFee aracılığıyla temizleyebilir veya herhangi bir ödeyici CollectCreatorFeePermissionless yolunu tetikleyebilir. Yalnızca havuz enable_creator_fee = true ile oluşturulduğunda etkindir. 2026-09-19 yükseltmesinden bu yana birikmiş yaratıcı ücreti koleksiyon sırasında bir kez daha bölüştürülür: yapılandırılabilir bir pay havuzun protokol hesabına taşınır ve yalnızca kalan kısım yaratıcıya ulaşır — bkz. Yaratıcı ücretinin protokol payı.
Yaratıcı ücreti işlem ücretinin bir dilimi değildir. İki oran swap girdisinde ücret alınırken toplanır, ancak her biri kendi hesabı olarak kalır — swap’ta alınan protokol ve fon payları her zaman yalnızca trade_fee’den türetilir, asla creator_fee’den değil. creator_fee_rate = 1000 (0,10%) ve trade_fee_rate = 2500 (0,25%) olan bir havuz, yaratıcı-ücret-girdisi swap’ında girdinin birleşik %0,35’ini alır; bunun %0,10’u yaratıcı hesabına ve %0,25’i işlem-ücret hesabına gider. Yaratıcı ücretinin protokol payı ters yönde çalışır ve yukarıdakiyle karıştırılması kolaydır: işlem ücretinden değil, yaratıcı hesabından oyulur ve swap’ta değil, CollectCreatorFee veya CollectCreatorFeePermissionless birikmiş bakiyeyi kapatırken uygulanır. Swap matematiği bundan etkilenmez. İşlem-ücret oranları (trade_fee_rate, protocol_fee_rate, fund_fee_rate), creator_fee_rate ve varsayılan creator_fee_share_rate hepsi AmmConfig üzerinde yaşar. Havuz başına enable_creator_fee bayrağı ve creator_fee_on modu (yaratıcı ücretinin trade’in hangi tarafından alındığı) PoolState üzerinde yaşar. Yaratıcı başına pay oranı geçersiz kılması kendi CreatorFeeShare PDA’sında yaşar. Bkz. products/cpmm/accounts.

Oranlar ve birimler

Tüm oranlar u64 türündedir ve 1 / FEE_RATE_DENOMINATOR birimlerinde gösterilir; burada FEE_RATE_DENOMINATOR = 1_000_000.
  • trade_fee_rate swap hacminin bir kesridir. 2500 ⇒ ilgili tarafın %0,25’i (giriş veya çıkış, creator_fee_on’a bağlı olarak — aşağıdaki “Ücretlerin trade’in hangi tarafından alındığı” bölümüne bakın).
  • creator_fee_rate swap hacminin bir kesridir, işlem ücretinden ayrı olarak alınır. 1000 ⇒ ilgili tarafın %0,10’u.
  • protocol_fee_rate ve fund_fee_rate hacimden değil, işlem ücretinin kesirleridir. 120_000 ⇒ işlem ücretinin %12’si.
  • creator_fee_share_rate hacimden ve işlem ücretinden değil, birikmiş yaratıcı ücretinin bir kesridir. 200_000 ⇒ koleksiyon sırasında creator_fees_token* hesabında ne varsa onun %20’si. 0 (varsayılan) tüm yaratıcı ücretini yaratıcıyla bırakır.
Mainnet’te AmmConfig[index=0] (standart %0,25 havuz) için varsayılan parametreler, referans için: Yani AmmConfig[0] karşısında $1.000 swap’ta enable_creator_fee = false ile: toplam $2,50 işlem ücreti, bunun $2,10’u LP’lerle kalır, $0,30 protokole, $0,10 fona gider. Yaratıcı ücreti devre dışı bırakıldığı için yaratıcı hesabı 0’dır. Aynı havuzun enable_creator_fee = true ve creator_fee_rate = 1000 (%0,10%) olması durumunda, kullanıcı yaratıcı hesabına ek $1,00 öder — creator_fee_on tarafından yapılandırılan trade’in aynı tarafından alınır — toplam $3,50 ücret için. İşlem-ücret hesabı ve onun protokol/fon bölüşümü değişmez. Geçerli mainnet değerlerini GET https://api-v3.raydium.io/main/cpmm-config karşısında doğrulayın — oranlar yönetici tarafından değiştirilebilir ve sabit kodlanmak yerine taze okunmalıdır.

Bölüşüm, kodda

Notlar:
  • Giriş üzerindeki toplam ücret yukarı yuvarlanır, böylece havuz asla eksik ücret almaz.
  • trade_fee’nin alt bölüşümleri (protokol, fon) aşağı yuvarlanır, böylece toplamları asla trade_fee’yi aşmaz; kalan LP payıdır.
  • lp_share = trade_fee − protocol_fee − fund_fee (creator_fee burada çıkarılmaz çünkü kendi hesabıdır).
  • Yaratıcı ücreti PoolState.creator_fee_on’a bağlı olarak giriş veya çıkıştan alınır (sonraki bölüme bakın). Oran her iki şekilde de değişmez.

Ücretlerin trade’in hangi tarafından alındığı

CPMM’nin havuz başına creator_fee_on ayarı (BothToken / OnlyToken0 / OnlyToken1) vardır; bu, yaratıcı ücretinin belirli bir swap’ın giriş tarafından mı yoksa çıkış tarafından mı alındığını belirler. Çalışma zamanı yardımcısı is_creator_fee_on_input(direction) bunu swap başına bir boole’ye daraltır: Yaratıcı ücreti giriş tarafında olduğunda, hem işlem ücreti hem de yaratıcı ücreti eğri çalışmadan önce amount_in’den düşülür. Fiyat hesaplama: birleşik trade_rate + creator_rate’i girdiden alın. Yaratıcı ücreti çıkış tarafında olduğunda, yalnızca işlem ücreti amount_in’den düşülür; eğri ücretlenmemiş bir çıkış üretir, sonra yaratıcı ücreti bu çıkıştan düşülür. Fiyat hesaplama: trade_rate’i girdiden alın; creator_rate’i çıkıştan alın. İşlem ücreti kendisi her zaman giriş tarafından alınır (standart Uniswap-V2 deseni). Yalnızca yaratıcı ücreti çıkışta yer alabilir.

”Birikmiş” ücretlerin eğri ile etkileşimi

Önemli bir incelik: protokol, fon ve yaratıcı ücretleri fiziksel olarak vault’ta kalır ilgili Collect* talimatı çağrılana kadar. Ancak eğrinin vault bakiyesi görüşünden hariç tutulurlar. Bir swap’tan sonra somut bir resim:
Program k' ≥ k uygulanırken curve_x (ve benzer curve_y) kullanır. Bu, LP olmayan ücretlerin LP payını şişirmeden hedeflerine nasıl ulaştığıdır. Etrafında tasarlamanız gereken sonuçlar:
  • Ham bakiyelerden fiyat hesaplamak yanlıştır. getTokenAccountBalance üzerinden bir fiyat hesaplayıcı oluşturursanız, havuzun onurlandıracağı fiyatı tutarlı olarak abartacaksınız. Her zaman birikmiş ücretleri çıkarın veya SwapBaseInput / API aracılığıyla simüle edin.
  • CollectProtocolFee fiyatı hareket ettirmez. Token’ları vault’tan çıkarır ve protocol_fees_token* sayaçlarını sıfırlar, böylece curve_x ve curve_y değişmez.
  • LP ücretleri sayaca birikir. Bunlar vault bakiyesinde örtülüdür. LP’nin birikmiş LP ücretlerine hakkı LP token’larını yakarak (yani Withdraw aracılığıyla) kullanılır — CollectLpFee yoktur.

Token-2022 transfer ücretleri ile etkileşim

Token-2022 transfer ücretleri mint tarafından uygulanır, CPMM tarafından değil. Bunlar her token transferinde uygulanır — swap, yatırma, çekme ve Collect* temizlemeleri. CPMM’nin işlem-ücret matematiği vault’ta gerçekten inen miktara karşı hesaplanır, yani giriş mint’inin transfer ücretinin net’i (varsa). Yani en kötü durumda bir kullanıcı giriş-tam swap’ta üç ayrı vergi öder:
  1. Giriş mint’inin amount_in üzerindeki transfer ücreti (mint’in ücret yetkilisine).
  2. Havuzun kalan kısım üzerindeki trade_fee’si (yukarıda bölüştürüldüğü gibi).
  3. Çıkış mint’inin amount_out üzerindeki transfer ücreti (mint’in ücret yetkilisine).
SDK’nın fiyat hesaplayıcısı üçünü de hesaba katarken minimum_amount_out kullanıcının gerçekten aldığı şeyde gösterilir. Kendi fiyat hesaplayıcınızı yazıyorsanız, bu davranışı yansıtın, aksi takdirde slippage kontrolleri sistematik olarak çok cömert olacaktır. Ayrıntılı türetme için bkz. algorithms/token-2022-transfer-fees.

Yaratıcı ücreti

Yaratıcı ücreti isteğe bağlı ve havuz başınadır. Oran AmmConfig.creator_fee_rate üzerinde yaşar; etkinleştirme bayrağı ve taraf (creator_fee_on) PoolState üzerinde yaşar:
  • Havuz oluşturmada etkinleştirilir. Initialize varsayılan olarak enable_creator_fee = false ayarlar; InitializeWithPermission aracılığıyla oluşturulan havuzlar (LaunchLab mezuniyetleri ve diğer kapılı yollar tarafından kullanılır) enable_creator_fee = true geçebilir ve creator_fee_on seçebilir.
  • Oran ücret katmanı ile paylaşılır. Oran kendisi AmmConfig.creator_fee_rate’dir, o config’e bağlı her havuz arasında aynı değer. Her havuz daha sonra bunu ücretlendirip ücretlendirmeyeceğine (enable_creator_fee) ve swap’ın hangi tarafında ücretlendireceğine (creator_fee_on) karar verir. enable_creator_fee = false olduğunda, havuzun etkili yaratıcı-ücret oranı config değerinden bağımsız olarak sıfırdır (kaynakta PoolState::adjust_creator_fee_rate bölümüne bakın).
  • İşlem ücretinden bağımsız. Yaratıcı ücreti asla LP / protokol / fon paylarını azaltmaz — kendi oranıdır, ayrı olarak uygulanır, kendi sayaçlarında birikir.
  • CollectCreatorFee veya CollectCreatorFeePermissionless aracılığıyla temizlenir. Orijinal yol PoolState.pool_creator’ün imzalamasını gerektirir. İzinsiz yol herhangi bir ödeyicinin koleksiyonu tetiklemesine izin verir ancak her iki hedefi de yaratıcının kanonik ATA’larına sabitler. Her iki yol da protokolün payını önce kapatır — sonraki bölüme bakın.
  • Oluşturmadan sonra yeniden etkinleştirilemez veya yeniden yönlendirilemez. enable_creator_fee = false ile başlatılan bir havuz asla yaratıcı ücreti ücretlendirmez; belirli bir creator_fee_on ile başlatılan bir havuz taraf değiştiremez.
Yaratıcı ücretleri Raydium’un “Burn & Earn” deseni arkasındaki mekanizmadır: LP token’ları LP Lock programı altında kilitlenir, böylece yaratıcı likiditeyi çekemez, ancak birikmiş yaratıcı ücretleri süresiz olarak toplanabilir.

Yaratıcı ücretinin protokol payı

2026-09-19 yükseltmesinden bu yana protokol yaratıcı ücretinin yapılandırılabilir bir payını tutabilir. Swap’ta hiçbir şey değişmez: yaratıcı ücreti hala creator_fee_rate oranında alınır ve hala tam olarak creator_fees_token{0,1} hesabına birikir. Bölüşüm bir kez, koleksiyon sırasında, CollectCreatorFee ve CollectCreatorFeePermissionless içinde gerçekleşir.

Oran nereden gelir

İki kaynak, öncelik sırasında:
  1. CreatorFeeShare PDA — tohumlar ["creator_fee_share", creator, amm_config]. Bu hesap var olduğunda ve CPMM tarafından sahiplenildiğinde, onun share_rate’i kazanır. Protokolün tier’ı kendisi dokunmadan belirli bir yaratıcı üzerinde belirli bir ücret katmanı için oran müzakere etmesine izin verir.
  2. AmmConfig.creator_fee_share_rate — o ücret katmanındaki her yaratıcı için varsayılan. PDA var olmadığında kullanılır.
Her ikisi de aynı FEE_RATE_DENOMINATOR = 1_000_000 üzerinde u64’tür ve her ikisi de paydaya sınırlandırılır. Koleksiyon talimatları her zaman creator_fee_share hesabını alır, hiçbir zaman oluşturulmamış olsa bile — program bunun boş olup olmadığını kontrol eder ve varsayılana geri döner. Yanlış adres geçmek geri dönüşü değil, PDA kısıtlamasını başarısız kılar.

Bölüşüm ne yapar

creator_fees_token_0 ve creator_fees_token_1’e bağımsız olarak uygulanır, sonra:
  • creator_amount_{0,1} vault’lardan yaratıcının token hesaplarına aktarılır.
  • shared_amount_{0,1} protocol_fees_token_{0,1} hesabına eklenir ve protokol sahibi CollectProtocolFee ile temizleyene kadar vault’ta kalır. Ayrı bir talimat ve ayrı bir sayaç yoktur.
  • creator_fees_token_{0,1} sıfırlanır, tam olarak önceki gibi.
Güvenebileceğiniz üç özellik:
  • Yuvarlama yaratıcıyı tercih eder. Protokol payı tabanlar, böylece toz yaratıcıyla kalır — protocol_fee ve fund_fee ile aynı yön, bunlar da zaten birikmiş bir ücretin payını oyarlar.
  • Değer korunur. creator_amount + shared_amount == creator_fee her oran ve her ücret için, u64::MAX dahil.
  • share_rate = 0 bir no-op’tür. Hem varsayılan config değeri hem de CreatorFeeShare PDA’sının yokluğu tüm yaratıcı ücretini yaratıcıyla bırakır, bu da yükseltme öncesi davranıştır.

Entegratörler için ne anlama gelir

  • LP’ler ve fiyat hesaplama etkilenmez. Paylaşılan miktar her ikisi de zaten eğrinin vault görüşünden hariç tutulan iki sayaç arasında hareket eder (vault_amount_without_fee), böylece curve_x ve curve_y koleksiyon arasında hareket etmez. k dokunulmaz.
  • creator_fees_token* okuyan bir yaratıcı-ücret tahmincisi artık ödemeyi abartır. O (creator, amm_config) çifti için gerçekten geçerli olan oranı kullanarak (1 − share_rate / 1_000_000) ile çarpın, config varsayılanını değil.
  • protocol_fees_token* swap’ların dışında büyür. Protokol birikimini swap hacmine karşı uzlaştıran bir monitör her yaratıcı-ücret koleksiyonunda sıçramalar görecektir. Protokol birikimi artık yalnızca trade_fee × protocol_fee_rate değildir.
  • Oran birikme ve koleksiyon arasında değişebilir. Koleksiyon sırasında okunur, böylece bir oran altında birikmiş ücretler birisi Collect* çağırdığında yürürlükte olan oran ile kapatılır.
CreatorFeeShare hesabı yönetici veya adanmış yaratıcı-ücret-payı yetkilisi tarafından CreateCreatorFeeShare / CloseCreatorFeeShare aracılığıyla oluşturulur ve kapatılır; kapatmak çifti AmmConfig.creator_fee_share_rate’e döndürür. Hesap düzeni products/cpmm/accounts içinde, adresler reference/program-addresses içinde.

Koleksiyon operasyonel akışı

Protokol ve fon sahipleri mainnet’te Raydium multisig’idir; bkz. security/admin-and-multisig. Orijinal yaratıcı-yalnızca yolunda, yaratıcı imzalayan PoolState içinde kaydedilen hesaptır. İzinsiz yolda, çağıran eksik yaratıcı ATA’sını oluşturmak için öder. Program creator’ü pool_state.pool_creator ile kısıtlar ve her hedefi o yaratıcı artı karşılık gelen vault mint’i ve token programından türetir, böylece çağıran fonları yeniden yönlendiremez.

Ücret katmanını değiştirme

Ücret oranları yönetici tarafından UpdateAmmConfig aracılığıyla değiştirilebilir (bkz. products/cpmm/instructions). Değişiklikler o AmmConfig’e bağlı her havuz için sonraki swap’ta yürürlüğe girer — geçiş yoktur, çünkü havuzlar her swap’ta config’i yükler. Yöneticinin yapamadığı şeyler:
  • Bir havuzu bir AmmConfig’den diğerine taşımak.
  • Zaten birikmiş ücretleri geriye dönük olarak yeniden fiyatlandırmak.
  • protocol_owner / fund_owner imzalayan olmadan ücretleri toplamak.

Çalışan bir havuzdan ücretleri okuma

Pay oranını zincir üzerinde çözün, önbelleğe alınmış config’den değil. creator_fee_share_rate yeni eklenen bir AmmConfig alanıdır, bu nedenle REST config yükünün bunu taşıdığını varsaymak yerine hesaptan okuyun ve ["creator_fee_share", creator, ammConfig] adresinde bir CreatorFeeShare PDA’sının var olup olmadığını kontrol edin. Yaratıcıya ödeme fiyatı hesaplamadan önce. Eksik PDA yaygın durumdur ve config varsayılanının geçerli olduğu anlamına gelir.

CLMM ve AMM v4 ile karşılaştırma

Yan yana matris için bkz. reference/fee-comparison. Özet:
  • AMM v4 sabit %0,25 işlem ücreti, farklı LP/protokol bölüşümü ve fon ücreti olmadan kullanır.
  • CLMM ücretleri tick-aralığı katmanı başınadır, havuz başına değil konum başına birikir ve DecreaseLiquidity veya CollectFees aracılığıyla talep edilir.

Sonraki adım

Kaynaklar: