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 giriş, yaklaşan bir CPMM program güncellemesini kapsar. Dağıtımdan önce yerel yayın dalına karşı doğrulanmıştır (
0dde43d, 11 Eylül 2026). Yeni talimatları veya değiştirilmiş hesap listelerini kullanmadan önce dağıtılan programı doğrulayın.creator_fee_rate tahsil eder ve tüm tutarı creator_fees_token_{0,1} içinde tahakkuk ettirir. CollectCreatorFee veya CollectCreatorFeePermissionless çalıştığında, tahakkuk eden bakiye bölünür, protokolün payı aynı havuzda protokol ücreti olarak yeniden etiketlenir ve yalnızca yaratıcının payı kasadan çıkar. Teklifler, eğri, k ve her LP’ye yönelik yol etkilenmez.
Entegratörler için TL;DR
- Her iki yaratıcı-ücret tahsil talimatı da hesap listelerini değiştirdi. Bu kırıcı bir değişikliktir.
CollectCreatorFee, 5. konumdacreator_fee_sharekazanır.CollectCreatorFeePermissionless, 5. konumdaamm_configve 6. konumdacreator_fee_sharekazanır. Her iki ekleme de kasaların önünde yer alır, bu nedenle sonraki her şey kaymış olur. Bu işlemleri yeniden oluşturun; onları yamalamayın. creator_fee_sharevar olmasa bile iletilmelidir. Bir seed kısıtlaması ile bildirilir ancak işaretlenmemiş bir hesap olarak okunur, bu nedenle adres["creator_fee_share", creator, amm_config]konumundaki kanonik PDA olmalıdır ve hesabın kendisi isteğe bağlıdır. Boş olduğunda, programAmmConfig.creator_fee_share_rateöğesine geri döner.AmmConfig,creator_fee_share_ratekazanır, padding’den çıkarılmış. Hesap yine de 236 bayt ve her mevcut config deserialize olmaya devam eder — ancak eskipadding: [u64; 15]öğesinin ilku64değeri artık canlı bir alandır. Kuyrağı 15 öğeli bir dizi olarak modelleyen dekoderler, paylaşım oranınıpadding[0]olarak okur.PoolStatedeğişmez. 637 bayt, aynı ofsetler, aynı alanlar. Protokolün payı mevcutprotocol_fees_token_{0,1}sayaçlarına kaydedilir — yeni sayaç yok ve bunun için yeni tahsil talimatı yok.protocol_fees_token*artık swapların dışında büyür. Protokol tahakkukunu ticaret hacmine karşı uzlaştıran herhangi bir monitör, her yaratıcı-ücret tahsilinde sıçramalar görecektir.creator_fees_token*okuyan bir yaratıcı-ödeme tahmincisi artık fazla tahmin eder.(1 − share_rate / 1_000_000)ile çarpın, bu(creator, amm_config)çifti için çözülmüş.- İki yönetici talimatı eklenir:
CreateCreatorFeeShareveCloseCreatorFeeShare. Bir yeniUpdateAmmConfigparam:8→creator_fee_share_rate. - Yeni hata kodu yok. Yeni yollar
InvalidOwner(6001),InvalidInput(6003) veMathOverflow(6011) öğelerini yeniden kullanır.6000–6015değişmez. - Bir IDL yenilemesi gereklidir — iki yeni talimat, bir yeni hesap türü, iki değiştirilmiş hesap listesi, bir yeni config alanı.
Bölünme nasıl çalışır
Çözüm, öncelik sırasında:CreatorFeeSharePDA["creator_fee_share", creator, amm_config]konumunda — hesap var olduğunda ve CPMM’ye ait olduğunda, onunshare_ratekazanır.AmmConfig.creator_fee_share_rate— ücret katmanının varsayılanı, aksi takdirde kullanılır.
FEE_RATE_DENOMINATOR_VALUE = 1_000_000 üzerinde u64 ve her ikisi de bu tavanla karşı kontrol edilir. Ardından, token tarafı başına:
- Yuvarlama yaratıcıyı tercih eder. Paylaşım tabanı alır, bu nedenle toz yaratıcıda kalır —
Fees::protocol_feeveFees::fund_feeile aynı yön, bunlar da zaten tahakkuk etmiş bir ücretin bir payını oyar. 1 birimlik bir ücretin %20’si 1 değil 0’dır. - Değer korunur.
creator_amount + shared_amount == creator_feeher oran veu64::MAXkadar her ücret için. share_rate = 0tam olarak eski davranıştır. Hem varsayılan config değeri hem de eksik PDA yaratıcıya tüm ücreti verir, bu nedenle bir yönetici bir oran ayarlayana kadar mevcut havuzlar için hiçbir şey değişmez.
protocol_fees_token* ve creator_fees_token* her ikisi de vault_amount_without_fee içinde zaten çıkarıldığından, aralarında değer taşımak eğrinin kasaya bakışını değiştirmez. Hiçbir LP, yaratıcı-ücret tahsilinde fiyat değişikliği görmez ve k kontrolü dokunulmamış kalır.
Oran tahsil zamanında okunur, tahakkuk zamanında değil. Oran
0 iken tahakkuk eden ücretler, birisi sonunda Collect* çağırdığında yürürlükte olan oranla kapatılır. Epoch başına veya swap başına anlık görüntü yok.Hesap listesi değişiklikleri
CollectCreatorFee — bir ekleme:
CollectCreatorFeePermissionless — iki ekleme:
Tam hesap tabloları
products/cpmm/instructions içinde.
CreateCreatorFeeShare ve CloseCreatorFeeShare
CreateCreatorFeeShare(share_rate: u64) PDA’yı başlatır; CloseCreatorFeeShare onu kapatır ve kirayı imzalayana döndürür. Her ikisi de paylaşılan program yöneticisini veya programın diğer devredilen yetkilerine aynı devnet/mainnet cfg modelini izleyen yeni bir hardcoded anahtar çiftini kabul eder. Adresler reference/program-addresses içinde.
Dikkat edilecek noktalar:
- Havuz yaratıcısı her iki talimata da taraf değildir ve imzalamaz.
creatorhesabı işaretlenmemiştir — PDA, henüz havuz sahibi olmayan bir anahtar için oluşturulabilir. - Bir hesap bir
(creator, amm_config)çiftini kapsar, bu nedenle o yaratıcının bu ücret katmanında sahip olduğu her havuzu yönetir. İki katmanda havuzu olan bir yaratıcının her ikisinde de kapsanması için iki hesaba ihtiyacı vardır. - Güncelleme yolu yok. Aynı çift için ikinci oluşturma başarısız olur; bir oranı değiştirmek için kapatın ve yeniden oluşturun.
UpdateAmmConfig param 8
protocol_fee_rate (param 1) ile ilgisizdir, bu da ticaret ücretini böler — yönetici araçlarında dikkatli olunması gereken bir nokta, çünkü ikisi de benzer görünür ve her ikisi de protocol_fees_token* içine iner.
Birlikte gidiyor
CollectExcessLamports sıralama düzeltmesi. Talimat artık remaining_accounts üzerinde iki geçiş yapar — önce her token-program CPI, sonra CPMM’ye ait PDA’ların doğrudan borçları — çağıran sırasında gönderme yerine. İkisini birleştirmek, çalışma zamanının UnbalancedInstruction (“hesap bakiyelerinin toplamı talimat öncesi ve sonrası eşleşmiyor”) ile iptal oldu, çünkü çağıranın bekleyen lamport değişiklikleri yalnızca bir CPI’nin gerçekten taşıdığı hesaplara aktarılır. Talimatın arayüzü değişmez; çağıranlar kaynakları herhangi bir sırada iletmeye devam eder ve şimdi bu gerçekten güvenlidir.
Doğrulanabilir derleme meta verileri. Çalışma alanı Cargo.toml, [workspace.metadata.cli] solana = "3.1.10" bildirir, bu nedenle doğrulanabilir bir derleme programın derlendiği Solana CLI’yi çözer. Zincir üstü etki yok.
Değişmeyen şeyler
PoolState— 637 bayt, aynı alanlar, aynı ofsetler. Protokolün payı, kendi sayaçları eklemek yerine mevcut protokol kovasını yeniden kullanır.AmmConfig::LEN— yine 236 bayt.- Swap matematiği, alıntı ve
kkontrolü. Yaratıcı ücreti tam olarak önceki gibi tahsil edilir. CollectProtocolFee/CollectFundFee— aynı hesaplar, aynı imzalayanlar.CollectProtocolFeebasitçe daha fazla tahsil etmek için.- Hata kodları.
6000–6015değişmez; hiçbir şey eklenmez. - Diğer her talimat ve program kimliği.
Güncellenen sayfalar
products/cpmm/fees— oran çözümü, bölünme aritmetiği, yuvarlama ve entegratör sonuçlarını kapsayan yeni “Yaratıcı ücretinin protokol payı” bölümü;creator_fee_share_rateoranlar/birimler listesine ve varsayılan parametreler tablosuna eklenir; tahsil akışı tablosu yeniden çalışılır.products/cpmm/instructions— üstte kırıcı değişiklik uyarısı; her iki yaratıcı-ücret yolu için tam hesap tabloları; yeniCreateCreatorFeeShareveCloseCreatorFeeSharebölümleri;UpdateAmmConfigparam8;CollectExcessLamportssıralama notu; özet ve durum değişikliği matris satırları.products/cpmm/accounts— yeniCreatorFeeSharehesap bölümü;AmmConfigdüzeni ve padding-oyma uyarısı;PoolStateücret-sayaç notları; hesap-yaşam döngüsü satırları.products/cpmm/overview— yaratıcı-ücret çıkışı ve “Öngörülebilir ücretler” madde işareti.products/cpmm/math— bölünmenin kasıtlı olarak swap matematikten hariç tutulduğuna dair bir not.products/cpmm/code-demos— yükseltme öncesi SDK oluşturucularının eski hesap listelerini yayınladığına dair uyarı; tahakkuk eden ücret snippet’i açıklanmış.reference/program-addresses— yeni “CPMM yaratıcı-ücret-paylaşım yetkilisi” bölümü;creator_fee_sharePDA-seed bloğuna eklenir.reference/fee-comparison—creator_fee_share_rate, farklı bir tabanı olan dördüncü CPMM oranı olarak çağrılır.

