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 kapsamaktadır. Dağıtımdan önce yerel yayın dalına karşı doğrulanmıştır. Yeni talimatı veya değiştirilmiş
CreateAmmConfig davranışına güvenmeden önce dağıtılan programı doğrulayın.0.32.1 ile =1.0.2 arasında ve derleme araç zinciri Agave 2.3.0’dan 3.1.10’a. Bununla birlikte dört davranış değişikliği geliyor; bunlardan üçü yalnızca yönetici araçlarını ilgilendiriyor ve biri — mint beyaz listesi kaldırılması — yeni bir havuz için hangi Token-2022 mintlerinin kullanılabileceğini değiştiriyor.
Bir tüccar, bir LP veya bir havuz oluşturucu tarafından çağrılan her şey, hesap listesini, argümanlarını ve matematiksel işlemlerini korur.
Entegratörler için TL;DR
- Kullanıcıya yönelik hiçbir talimat değişmedi.
Initialize,InitializeWithPermission,Deposit,Withdraw,SwapBaseInput,SwapBaseOutputve dörtCollect*Feeyolu bayt-özdeş. Hiçbir hesap düzeni değişmedi. - Bir talimat ekleniyor:
CollectExcessLamports. Yalnızca yönetici, argüman yok, geçilen hesaplarremaining_accountsolarak. CPMM tarafından kontrol edilen kasalardan, LP mintlerinden ve PDA’lardan kira-muaf minimumun üzerindeki lamportları döndürür ve başka hiçbir şeye dokunmaz. Bkz.products/cpmm/instructions. - Bir hata kodu ekleniyor:
6015LamportsCalculateError. Kodlar6000–6014değişmedi. CreateAmmConfigartık imzalayanı ücret-sahip alanlarına kopyalamıyor. Yeni konfigürasyonlar sabit kodlanmışprotocol_fee_ownervefund_fee_owneranahtarlarını alıyor. MevcutAmmConfighesapları dokunulmamış — hesaptanprotocol_owner/fund_ownerokumaya devam edin, her iki değeri de varsaymayın.- Sabit kodlanmış dört adresli Token-2022
MINT_WHITELISTgitti.SupportMintAssociatedPDA kayıt defteri artık CPMM’nin uzantı izin listesini atlayan tek yolu. Mevcut havuzlar etkilenmedi; kontrol yalnızca havuz oluşturma sırasında çalışır. ClosePermissionPdaözel izin-PDA oluşturucu yetkilisini kabul ediyor, yalnızca paylaşılan yöneticiyi değil.- Bir IDL yenilemesi gereklidir. Bir yeni talimat, bir yeni hata varyantı.
- TypeScript istemci paketi yeniden adlandırılıyor.
@coral-xyz/anchor0.32.1’de dondurulmuş; Anchor 1.x istemcisi@anchor-lang/coreolarak yayınlanıyor.
CollectExcessLamports
SIMD-0437’nin 1. adımı 3 Eylül 2026’da mainnet’e indi ve kira-muaf minimumu %9 oranında azalttı; daha dört adım geliyor. Bir adımdan önce oluşturulan her CPMM havuz kasası, LP mintı, PoolState, AmmConfig, ObservationState, Permission ve SupportMintAssociated hesabı artık aşırı finanse edilmiş ve programa ait bir hesaptaki lamportlar yalnızca o program tarafından taşınabilir.
Talimat dört sabit hesap alıyor — imzalayan/hedef cüzdan, vault_and_lp_mint_auth_seed yetkilisi PDA ve her iki token programı — ardından remaining_accounts içinde herhangi sayıda kaynak hesap. Her kaynak hesabın sahibine göre gönderir: bir token hesabı veya mint için token programının WithdrawExcessLamports (discriminant 38) için bir CPI, bir CPMM’ye ait PDA için doğrudan borç ve başka her şeyi sessizce atlar.
Sarılı SOL anlaşılmaya değer bir durumdur. Yerel bir token hesabının lamport bakiyesi onun token bakiyesidir, bu nedenle her iki token programı da birinde WithdrawExcessLamports reddeder. CPMM bunun yerine SyncNative CPI’ı yapar (bağışlanan fazlalığı sarılı amount içine katlayarak), miktarın ne kadar büyüdüğünü ölçer, tam o delta için UnwrapLamports (discriminant 45) yapar ve ardından sarılı bakiyenin ön-senkronizasyon değerine eşit olmasını gerektirir — eşit değilse LamportsCalculateError. Bir SOL tarafı havuz kasası bir tarama yoluyla tam likiditeyi korur ve hiçbir LP bir tarama arasında fiyat değişikliği görmez.
İmzalayan, paylaşılan program yöneticisi veya özel bir lamport-toplama cüzdanı olabilir; adresler reference/program-addresses içindedir.
CreateAmmConfig sabit ücret sahiplerini yazıyor
Bu sürümden önce, create_amm_config her iki ücret-sahip alanını çağıran imzalayanın anahtarından ayarladı:
CreateAmmConfig crate::admin::ID ile kapılandığından, pratik etki, yeni oluşturulan bir ücret katmanının başından itibaren yönetici multisig yerine özel operasyonel cüzdanlar tarafından taranması ve yöneticinin UpdateAmmConfig param 3 veya 4 aracılığıyla alanı döndürmeden önce az önce oluşturduğu bir konfigürasyondan toplayamamasıdır.
İki sabit, programın adreslerinin geri kalanı ile aynı devnet/mainnet cfg modelini izler ve devnet’te her ikisi de aynı anahtara çözülür. Bkz. reference/program-addresses.
Token-2022 mint beyaz listesi kaldırıldı
is_supported_mint daha önce mint’in uzantılarını yinelemeden önce dört adresli sabit kodlanmış bir MINT_WHITELIST üzerinde kısa devre yapardı. Bu dizi — ve her çağrıda ondan oluşturulan HashSet — silindi. Kalan şey:
- Eski SPL Token mintleri koşulsuz olarak geçer.
[b"support_mint", mint]konumunda başlatılmış birSupportMintAssociatedPDA’sı olan bir mint koşulsuz olarak geçer.- Aksi takdirde mint üzerindeki her uzantı
TransferFeeConfig,MetadataPointer,TokenMetadata,InterestBearingConfig,ScaledUiAmountiçinden biri olmalıdır.
CreateSupportMintAssociated / CloseSupportMintAssociated çifti ve paylaşılan yönetici ile birlikte kendi özel yetkilisi ile ve hem Initialize hem de InitializeWithPermission içinden danışılıyor. Statik diziyi kaldırmak, bir mintı eklemenin artık bir program yükseltmesi yerine tamamen zincir üstü bir eylem olması anlamına geliyor — bu da asıl nokta.
Mevcut havuzlar etkilenmedi, çünkü mint kontrolü yalnızca havuz oluşturma sırasında çalışır. Değişen şey, dört eski beyaz listeye alınmış mintlerden biri için yeni bir CPMM havuzu oluşturmanın, o mintin bir kayıt defteri PDA’sı olmasını gerektirmesidir — önemli olanlar mainnet’te zaten var. Tam resim, kayıt defterinin ne yaptığını ve ne yapmadığını da içeren, reference/token-2022-support içindedir.
ClosePermissionPda imzalayan genişletme
CreatePermissionPda zaten paylaşılan yöneticiyi veya özel bir izin-PDA oluşturucu yetkilisini kabul ederken, ClosePermissionPda yönetici ile bir address = kısıtlaması ile sabitlenmişti. Kapatma yolu şimdi aynı çifti alıyor:
InvalidOwner (6001) — eski address = kısıtlaması zaten bu özel hatayı taşıyordu — bu nedenle yalnızca kabul edilen imzalayanlar seti genişledi.
Araç zinciri ve bağımlılık değişiklikleri
Anchor 1.0, her CPI çağrı sitesinde iki şeyi değiştirir; bu, kendi programınızdan CPMM’yi entegre ederseniz önemlidir:
CpiContext::new programın AccountInfo yerine Pubkey alır ve Context dört yaşam parametresi yerine bir taneye sahiptir. İstemci tarafında RequestBuilder::instructions() Result<...> yerine Vec<Instruction> döndürür, CommitmentConfig solana_sdk yerine anchor_client gelir ve spl-associated-token-account 8.0 adres yardımcılarını ::address altına ve program kimliğini ::program::ID altına taşıdı. Bkz. sdk-api/rust-cpi.
İki derleme sistemi detayı, hiçbiri zincir üstü etkisi olmayan: program sandığı, yönetici-kapılı testlerin gerçekten imzalayabilmesi için CPSWAP_LOCALNET_ADMIN ortam değişkeninden yerel cüzdanı admin olarak derleyen bir localnet özelliği bildirir (yarn test:local-admin bunu bağlar) ve programs/cp-swap/Cargo.toml içindeki yinelenen [profile.release] bloğu silindi. Cargo, çalışma alanı kökü dışında [profile] yok sayar, bu nedenle kök bloğu zaten yürürlükte olan — program düzeyindeki bloğun panic = "abort" hiçbir zaman uygulanmadığı gerçeği de dahil olmak üzere.
Değişmeyen şey
- Her hesap düzeni.
PoolState,AmmConfig,ObservationState,Permission,SupportMintAssociated— aynı boyutlar, aynı ofsetler. - Hata kodları
6000–6014. - Uzantı izin listesinin kendisi. Hala aynı beş uzantı.
- Ücret oranları, ücret tahakkuku ve eğri.
CollectExcessLamportshiçbir havuzun rezervlerinin parçası olmayan lamportları taşır. spl_memo.Withdraw’ın memo-program kısıtlamasıspl_memo::id()ileanchor_spl::memo::IDarasında taşındı — yeniden adlandırılananchor-spldışa aktarması altında aynı adres.- Program kimliği. Değişmedi.
Güncellenen sayfalar
products/cpmm/instructions—CollectExcessLamportshesap listesi ve sahip başına gönderme tablosu ile eklendi;CreateAmmConfigcreator_fee_rateargümanını ve sabit ücret sahipleri hakkında bir notu kazanıyor;CollectExcessLamports,CreateSupportMintAssociated,CloseSupportMintAssociatediçin talimat özet satırları eklendi;ClosePermissionPdaimzalayan düzeltildi;Initializeön koşulu kayıt defteri-yalnızca bypass için yeniden yazıldı; durum değişikliği matris satırı eklendi.products/cpmm/accounts— Token-2022 bölümü kayıt defteri PDA etrafında yeniden yazıldı, beyaz liste kaldırılması çağrıldı;ClosePermissionPdaimzalayan düzeltildi.products/cpmm/overview— beyaz liste cümlesi yeniden yazıldı.products/cpmm/code-demos— Rust CPI iskeleti Anchor 1.0 için güncellendi.reference/token-2022-support— bypass-yolu bölümü kayıt defteri PDA etrafında yeniden yazıldı, kaldırılanMINT_WHITELIST“kaldırılan bypass’lar” bölümüne taşındı.reference/error-codes—6015belgelendi.reference/program-addresses— yeni “CPMM support-mint kayıt defteri yetkilisi”, “CPMM ücret-sahip cüzdanları” ve “Excess-lamports toplama cüzdanları” bölümleri;ClosePermissionPdanotu düzeltildi.sdk-api/rust-cpi,solana-fundamentals/toolchain,integration-guides/cpi-integration— Anchor 1.0 pinleri ve CPI geçiş notları.solana-fundamentals/rent-and-reclaimable-rent— yeni “Raydium programlarının kendi tarafında ne taradığı” bölümü.

