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 işleminde iki ayrı oranlı ücret alır:- İşlem ücreti —
AmmConfig.trade_fee_rateoranında alınır ve üç hedefe bölünür:- LP payı — vault’ta kalır ve
k’yi büyütür. LP token’larını yakarak örtülü olarak talep edilir. - Protokol payı —
PoolState.protocol_fees_token*hesabına tahakkuk eder;protocol_ownertarafındanCollectProtocolFeearacılığıyla toplanır. - Fon payı —
PoolState.fund_fees_token*hesabına tahakkuk eder;fund_ownertarafındanCollectFundFeearacılığıyla toplanır.
- LP payı — vault’ta kalır ve
- Yaratıcı ücreti (isteğe bağlı, havuz başına) —
AmmConfig.creator_fee_rateoranında işlem ücretinden bağımsız olarak alınır vePoolState.creator_fees_token*hesabına tahakkuk eder. Yaratıcı bunuCollectCreatorFeearacılığıyla toplayabilir veya herhangi bir ödeyici hedef kısıtlıCollectCreatorFeePermissionlessyolunu tetikleyebilir. Yalnızca havuzenable_creator_fee = trueile oluşturulduğunda etkindir.
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’inde girdinin birleşik %0,35’ini alır; bunun %0,10’unu yaratıcı tutar ve %0,25’i işlem-ücreti hesabına gider.
İşlem-ücreti oranları (trade_fee_rate, protocol_fee_rate, fund_fee_rate) ve creator_fee_rate hepsi AmmConfig üzerinde bulunur. Havuz başına enable_creator_fee bayrağı ve creator_fee_on modu (yaratıcı ücretinin hangi tarafından alındığı) PoolState üzerinde bulunur. Bkz. products/cpmm/accounts.
Oranlar ve birimler
Tüm oranlaru64 türündedir ve 1 / FEE_RATE_DENOMINATOR biriminde 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 alındığı taraf” 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_ratehacmin değil, işlem ücretinin kesirleridir.120_000⇒ işlem ücretinin %12’si.
AmmConfig[index=0] (standart %0,25 havuz) için varsayılan parametreler, referans için:
Yani
AmmConfig[0] ile enable_creator_fee = false olan bir $1.000 swap’inde: $2,50 toplam işlem ücreti, bunun $2,10’u LP’lerde kalır, $0,30 protokole gider, $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 aynı taraftan alınır — toplam $3,50 ücret için. İşlem-ücreti hesabı ve onun protokol/fon bölünüşü değişmez.
Geçerli mainnet değerlerini GET https://api-v3.raydium.io/main/cpmm-config ile doğrulayın — oranlar yönetici tarafından değiştirilebilir ve sabit kodlanmak yerine taze okunmalıdır.
Bölünüş, kodda
- Giriş tarafındaki toplam ücret yukarı yuvarlanır, böylece havuz asla eksik ücret almaz.
trade_fee’nin alt bölünüşleri (protokol, fon) aşağı yuvarlanır, böylece toplamlarıtrade_fee’yi aşmaz; kalan LP payıdır.lp_share = trade_fee − protocol_fee − fund_fee(creator_fee kendi hesabı olduğu için çıkarılmaz).- Yaratıcı ücreti
PoolState.creator_fee_on’a bağlı olarak giriş veya çıkış tarafından alınır (sonraki bölüme bakın). Oran her iki şekilde de değişmez.
Ücretlerin alındığı taraf
CPMM’nin havuz başınacreator_fee_on ayarı (BothToken / OnlyToken0 / OnlyToken1) vardır; bu, yaratıcı ücretinin belirli bir swap’in giriş tarafından mı yoksa çıkış tarafından mı alındığını belirler. Runtime 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: girdiden birleşik trade_rate + creator_rate’i alın.
Yaratıcı ücreti çıkış tarafında olduğunda, yalnızca işlem ücreti amount_in’den düşülür; eğri ücretlendirilmemiş bir çıkış üretir, sonra yaratıcı ücreti bu çıkıştan düşülür. Fiyat hesaplama: girdiden trade_rate’i alın; çıkıştan creator_rate’i alın.
İşlem ücreti kendisi her zaman giriş tarafından alınır (standart Uniswap-V2 deseni). Yalnızca yaratıcı ücreti çıkışta olabilir.
”Tahakkuk eden” ücretlerin eğri ile etkileşimi
Önemli bir incelik: protokol, fon ve yaratıcı ücretleri vault’ta fiziksel olarak kalır ilgiliCollect* talimatı çağrılana kadar. Ancak eğrinin vault bakiyesi görüşünden hariç tutulurlar.
Bir swap’ten 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 ulaşmasıdır.
Tasarlarken dikkate alınması gereken sonuçlar:
- Ham bakiyelerden fiyat hesaplamak yanlıştır.
getTokenAccountBalanceüzerinden bir fiyat hesaplayıcı oluşturursanız, havuzun onayladığı fiyatı tutarlı olarak abartacaksınız. Her zaman tahakkuk eden ü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 tahakkuk etmez. 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 CPMM tarafından değil, mint tarafından uygulanır. Her token transferinde — swap, yatırma, çekme veCollect* toplamaları — etki ederler. CPMM’nin işlem-ücreti hesaplaması 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’inde üç ayrı vergi öder:
- Giriş mint’inin
amount_inüzerindeki transfer ücreti (mint’in ücret yetkilisine). - Havuzun
trade_fee’si kalana karşı (yukarıda bölünmüş). - Çı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 algorithms/token-2022-transfer-fees bölümüne bakın.
Yaratıcı ücreti
Yaratıcı ücreti isteğe bağlı ve havuz başına. OranAmmConfig.creator_fee_rate üzerinde bulunur; etkinleştirme bayrağı ve taraf (creator_fee_on) PoolState üzerinde bulunur:
- 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çirebilir 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 alıp almayacağına (enable_creator_fee) ve swap’in hangi tarafından alacağına (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 tahakkuk eder.
CollectCreatorFeeveyaCollectCreatorFeePermissionlessaracılığıyla toplanır. 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.- Oluşturulduktan sonra yeniden etkinleştirilemez veya yeniden yönlendirilmez.
enable_creator_fee = falseile başlatılan bir havuz asla yaratıcı ücreti almayacak; belirli bircreator_fee_onile başlatılan bir havuz taraf değiştiremez.
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 ödeme yapar. Program creator’ü pool_state.pool_creator ile kısıtlar ve her hedefi o yaratıcı artı ilgili 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’te etkili olur — geçiş yoktur, çünkü havuzlar her swap’te config’i yükler.
Yöneticinin yapamadığı şeyler:
- Bir havuzu bir
AmmConfig’den diğerine taşımak. - Zaten tahakkuk eden ücretleri geriye dönük olarak yeniden fiyatlandırmak.
protocol_owner/fund_ownerimzalayan olmadan ücretleri toplamak.
Çalışan bir havuzdan ücretleri okuma
CLMM ve AMM v4 ile karşılaştırma
Yan yana matris içinreference/fee-comparison bölümüne bakın. Özet:
- AMM v4 farklı bir LP/protokol bölünüşü ve fon ücreti olmayan sabit %0,25 işlem ücreti kullanır.
- CLMM ücretleri tick-aralığı katmanı başına, havuz başına değil konum başına tahakkuk eder ve
DecreaseLiquidityveyaCollectFeesaracılığıyla talep edilir.
Sonraki adımlar
products/cpmm/math— işlem-ücreti kesintisinin eğriye nasıl takıldığı.products/cpmm/instructions—Collect*talimatı hesap listeleri.algorithms/token-2022-transfer-fees— havuz işlem ücreti ile mint transfer ücretini doğru şekilde nasıl birleştireceğiniz.

