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 →
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.
CPMM’nin ana değişikliği bir çerçeve taşımasıdır: Anchor 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, SwapBaseOutput ve dört Collect*Fee yolu bayt-özdeş. Hiçbir hesap düzeni değişmedi.
  • Bir talimat ekleniyor: CollectExcessLamports. Yalnızca yönetici, argüman yok, geçilen hesaplar remaining_accounts olarak. 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: 6015 LamportsCalculateError. Kodlar 60006014 değişmedi.
  • CreateAmmConfig artık imzalayanı ücret-sahip alanlarına kopyalamıyor. Yeni konfigürasyonlar sabit kodlanmış protocol_fee_owner ve fund_fee_owner anahtarlarını alıyor. Mevcut AmmConfig hesapları dokunulmamış — hesaptan protocol_owner / fund_owner okumaya devam edin, her iki değeri de varsaymayın.
  • Sabit kodlanmış dört adresli Token-2022 MINT_WHITELIST gitti. SupportMintAssociated PDA 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/anchor 0.32.1’de dondurulmuş; Anchor 1.x istemcisi @anchor-lang/core olarak 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ı:
Şimdi programın kendi sabitlerini yazıyor:
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.
Bu bir geçiş değildir. Zaten var olan her AmmConfig, oluşturulduğu protocol_owner ve fund_owner ile ne olursa olsun tutar. Yeni sabitleri sabit kodlamaya başlayan bir toplama aracı eski konfigürasyonlarda başarısız olur ve “yönetici anahtarını” varsayan bir araç yeni olanlarda başarısız olur. Alanları okuyun.

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:
  1. Eski SPL Token mintleri koşulsuz olarak geçer.
  2. [b"support_mint", mint] konumunda başlatılmış bir SupportMintAssociated PDA’sı olan bir mint koşulsuz olarak geçer.
  3. Aksi takdirde mint üzerindeki her uzantı TransferFeeConfig, MetadataPointer, TokenMetadata, InterestBearingConfig, ScaledUiAmount içinden biri olmalıdır.
Kayıt defteri PDA bir süredir programda, kendi 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:
Yani bir hibe veren yetki, multisig aracılığıyla yönlendirmeden de iptal edebilir. Yetkisiz bir imzalayan üzerindeki hata her iki şekilde de 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ı 60006014.
  • Uzantı izin listesinin kendisi. Hala aynı beş uzantı.
  • Ücret oranları, ücret tahakkuku ve eğri. CollectExcessLamports hiçbir havuzun rezervlerinin parçası olmayan lamportları taşır.
  • spl_memo. Withdraw’ın memo-program kısıtlaması spl_memo::id() ile anchor_spl::memo::ID arasında taşındı — yeniden adlandırılan anchor-spl dışa aktarması altında aynı adres.
  • Program kimliği. Değişmedi.

Güncellenen sayfalar

  • products/cpmm/instructionsCollectExcessLamports hesap listesi ve sahip başına gönderme tablosu ile eklendi; CreateAmmConfig creator_fee_rate argümanını ve sabit ücret sahipleri hakkında bir notu kazanıyor; CollectExcessLamports, CreateSupportMintAssociated, CloseSupportMintAssociated için talimat özet satırları eklendi; ClosePermissionPda imzalayan 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ı; ClosePermissionPda imzalayan 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ılan MINT_WHITELIST “kaldırılan bypass’lar” bölümüne taşındı.
  • reference/error-codes6015 belgelendi.
  • 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; ClosePermissionPda notu 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ü.