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:- İşlem ücreti —
AmmConfig.trade_fee_rateoranı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_ownertarafındanCollectProtocolFeearacılığıyla temizlenir. - Fon payı —
PoolState.fund_fees_token*hesabına birikir;fund_ownertarafındanCollectFundFeearacılığıyla temizlenir.
- LP payı — vault’ta kalır ve
- Yaratıcı ücreti (isteğe bağlı, havuz başına) —
AmmConfig.creator_fee_rateoranında alınır ve işlem ücretinden bağımsız olarakPoolState.creator_fees_token*hesabına birikir. Yaratıcı bunuCollectCreatorFeearacılığıyla temizleyebilir veya herhangi bir ödeyiciCollectCreatorFeePermissionlessyolunu tetikleyebilir. Yalnızca havuzenable_creator_fee = trueile 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ı.
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 oranlaru64 türündedir ve 1 / FEE_RATE_DENOMINATOR birimlerinde gösterilir; burada FEE_RATE_DENOMINATOR = 1_000_000.
trade_fee_rateswap 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_rateswap hacminin bir kesridir, işlem ücretinden ayrı olarak alınır.1000⇒ ilgili tarafın %0,10’u.protocol_fee_ratevefund_fee_ratehacimden değil, işlem ücretinin kesirleridir.120_000⇒ işlem ücretinin %12’si.creator_fee_share_ratehacimden ve işlem ücretinden değil, birikmiş yaratıcı ücretinin bir kesridir.200_000⇒ koleksiyon sırasındacreator_fees_token*hesabında ne varsa onun %20’si.0(varsayılan) tüm yaratıcı ücretini yaratıcıyla bırakır.
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
- 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ı aslatrade_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şınacreator_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 ilgiliCollect* talimatı çağrılana kadar. Ancak eğrinin vault bakiyesi görüşünden hariç tutulurlar.
Bir swap’tan sonra somut bir resim:
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 veyaSwapBaseInput/ API aracılığıyla simüle edin. CollectProtocolFeefiyatı hareket ettirmez. Token’ları vault’tan çıkarır veprotocol_fees_token*sayaçlarını sıfırlar, böylececurve_xvecurve_ydeğ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
Withdrawaracılığıyla) kullanılır —CollectLpFeeyoktur.
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 veCollect* 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:
- Giriş mint’inin
amount_inüzerindeki transfer ücreti (mint’in ücret yetkilisine). - Havuzun kalan kısım üzerindeki
trade_fee’si (yukarıda bölüştürüldüğü gibi). - Çıkış mint’inin
amount_outüzerindeki transfer ücreti (mint’in ücret yetkilisine).
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. OranAmmConfig.creator_fee_rate üzerinde yaşar; etkinleştirme bayrağı ve taraf (creator_fee_on) PoolState üzerinde yaşar:
- Havuz oluşturmada etkinleştirilir.
Initializevarsayılan olarakenable_creator_fee = falseayarlar;InitializeWithPermissionaracılığıyla oluşturulan havuzlar (LaunchLab mezuniyetleri ve diğer kapılı yollar tarafından kullanılır)enable_creator_fee = truegeçebilir vecreator_fee_onseç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 = falseolduğunda, havuzun etkili yaratıcı-ücret oranı config değerinden bağımsız olarak sıfırdır (kaynaktaPoolState::adjust_creator_fee_ratebö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.
CollectCreatorFeeveyaCollectCreatorFeePermissionlessaracılığıyla temizlenir. Orijinal yolPoolState.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 = falseile başlatılan bir havuz asla yaratıcı ücreti ücretlendirmez; belirli bircreator_fee_onile başlatılan bir havuz taraf değiştiremez.
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 halacreator_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:CreatorFeeSharePDA — tohumlar["creator_fee_share", creator, amm_config]. Bu hesap var olduğunda ve CPMM tarafından sahiplenildiğinde, onunshare_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.AmmConfig.creator_fee_share_rate— o ücret katmanındaki her yaratıcı için varsayılan. PDA var olmadığında kullanılır.
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 sahibiCollectProtocolFeeile 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.
- Yuvarlama yaratıcıyı tercih eder. Protokol payı tabanlar, böylece toz yaratıcıyla kalır —
protocol_feevefund_feeile aynı yön, bunlar da zaten birikmiş bir ücretin payını oyarlar. - Değer korunur.
creator_amount + shared_amount == creator_feeher oran ve her ücret için,u64::MAXdahil. share_rate = 0bir no-op’tür. Hem varsayılan config değeri hem deCreatorFeeSharePDA’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öylececurve_xvecurve_ykoleksiyon arasında hareket etmez.kdokunulmaz. 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ızcatrade_fee × protocol_fee_ratedeğ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ındanUpdateAmmConfig 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_ownerimzalayan 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
DecreaseLiquidityveyaCollectFeesaracılığıyla talep edilir.
Sonraki adım
products/cpmm/math— işlem-ücret kesintisinin eğriye nasıl takıldığı.products/cpmm/instructions—Collect*talimat hesap listeleri, her iki yaratıcı yolunun artık gerektirdiğicreator_fee_sharehesabı dahil.algorithms/token-2022-transfer-fees— havuz işlem ücretini mint transfer ücreti ile doğru şekilde nasıl birleştireceğiniz.

