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 CLMM program güncellemesini kapsamaktadır. Dağıtımdan önce raydium-clmm’nin chore/upgrade-anchor dalında (head a72f9e1) doğrulanmıştır. Yeni talimatı veya değişen CreateAmmConfig davranışını kullanmadan önce dağıtılan programı doğrulayın.
CLMM artık CPMM ve LaunchLab’ın 2026-09-09 tarihinde sevk ettiği aynı framework güncellemesini alıyor. Anchor 0.32.1’den =1.0.2’ye geçiyor ve derleme araç zinciri Agave 2.3.0’dan 3.1.10’a geçiyor. İki yönetici tarafı değişikliği bununla birlikte geliyor: yeni bir CollectExcessLamports talimatı ve CreateAmmConfig’de sabit ücret sahipleri. Bir tüccar, bir LP, bir limit-order kullanıcısı veya bir havuz oluşturucu tarafından çağrılan her talimat, hesap listesini, argümanlarını ve matematiksel işlemlerini korur.

Entegratörler için TL;DR

  • Hiçbir kullanıcı tarafından kullanılan talimat değişmedi. CreatePool, CreateCustomizablePool, CreatePermissionedPool, her OpenPosition* / IncreaseLiquidity* / DecreaseLiquidity* yolu, ClosePosition, Swap / SwapV2 / SwapRouterBaseIn, beş limit-order talimatı ve ödül talimatları tel üzerinde bayt-özdeştir. Hiçbir hesap düzeni değişmedi.
  • Bir talimat ekleniyor: CollectExcessLamports. Bu yalnızca yönetici tarafından kullanılabilir ve hiçbir argüman almaz. Çağrı başına bir havuzu tarar: havuzun kendi PoolState’i her zaman taranır ve havuz PDA’sı remaining_accounts’ta geçirdiğiniz kasalarını imzalar. remaining_accounts’taki diğer herhangi bir CLMM’ye ait hesap da taranır. Bkz. products/clmm/instructions.
  • Bir hata kodu ekleniyor: 6052 LamportsCalculateError. Kodlar 6000–6051 değişmemiştir.
  • CreateAmmConfig artık imzalayanı owner / fund_owner’a kopyalamıyor. Yeni konfigürasyonlar sabit kodlanmış protocol_fee_owner ve fund_fee_owner anahtarlarını alıyor. Mainnet’te bunlar zaten tüm 21 mevcut konfigürasyonda depolanan aynı iki anahtardır. Mevcut AmmConfig hesapları dokunulmamış kalıyor, bu nedenle alanları hesaptan okumaya devam edin.
  • IDL’nizi yenileyin. Bir talimat ve bir hata varyantı ekler; 39 talimat ve 53 hata için.
  • Artık CPMM ve CLMM’yi bir crate’e koyabilirsiniz. Her iki depo da chore/upgrade-anchor dallarında anchor-lang / anchor-spl =1.0.2’yi sabitlediğinden, tek bir program her ikisine de CPI yapabilir. Bkz. sdk-api/rust-cpi.
  • TypeScript istemci paketi yeniden adlandırılıyor. Test paketi @coral-xyz/anchor 0.32.1’den @anchor-lang/core 1.0.2’ye geçiyor.

CollectExcessLamports

SIMD-0437’nin 1. adımı mainnet’te 3 Eylül 2026’da etkinleştirildi. Bir adımdan önce oluşturulan her CLMM hesabı artık aşırı finanse edilmiş ve yalnızca CLMM programı sahip olduğu bir hesaptan lamport’ları çıkarabiliyor. Bu havuz kasalarını, ödül kasalarını, PoolState, AmmConfig, ObservationState, TickArrayBitmapExtension ve geri kalanını kapsar. Talimat dört sabit hesap alır, ardından remaining_accounts’ta herhangi bir sayıda kaynak hesap: Havuz imzalayan otorite, program genelinde bir PDA değildir. CPMM bir global vault_and_lp_mint_auth_seed otoritesiyle imzalar. CLMM token kasaları PoolState’e aittir, bu nedenle tek bir çağrı yalnızca slot 2’de geçirilen havuzu imzalayabilir. Her token-program kaynağının o havuzu otoritesi olarak olması gerekir: token_vault_0, token_vault_1 veya havuzun ödül kasalarından biri. Başka bir havuzdan bir token hesabı veya bir kullanıcının token hesabı, token programının sahip kontrolünü başarısız kılar ve tüm talimatı geri alır. Program bunu atlamaz. Position NFT mintleri de taranabilir değildir, çünkü mint otoritesi pozisyon açıldığında iptal edilir. Havuzu havuz tarafından tarayın. Talimat iki geçiş yapar ve bu sıra sabittir:
  1. Token-program CPI’ları önce. SPL Token veya Token-2022’ye ait her kaynak için, yerel olmayan bir hesap WithdrawExcessLamports (discriminant 38) alır. Yerel bir wSOL kasası SyncNative → UnwrapLamports (discriminant 45) tur-dönüşünü alır; bu, sarılı bakiyenin eşitleme öncesi değerine eşit olduğunu kontrol etmekle sona erer. Eşit değilse, çağrı LamportsCalculateError ile başarısız olur. SOL tarafı kasası tam likiditeyi korur ve tarama genelinde hiçbir swap teklifi değişmez.
  2. Doğrudan borçlandırmalar ikinci. Geçiş 2, pool_state’i ilk olarak borçlandırır, ardından CLMM programına ait her kaynağı rent.minimum_balance(data_len)’e kadar borçlandırır.
Başka bir programa ait kaynaklar sessizce atlanır. Bu iki geçiş sırası, CPMM’nin 2026-09-19 tarihinde benimsediği sıradır. CLMM bunu ilk sürümünden itibaren kullanıyor. Bir PDA bir CPI’dan önce borçlandırılırsa, çalışma zamanı UnbalancedInstruction ile iptal eder, bu nedenle arayanlar kaynakları herhangi bir sırada geçirebilir.
Program’a ait geçiş, bir hesabın hangi havuza veya kullanıcıya ait olduğunu kontrol etmez. CLMM programına ait herhangi bir hesap uygun olur; bunlar arasında bazıları bir kullanıcının kirayı ödediği hesaplar da vardır: PersonalPositionState, LimitOrderState ve TickArrayState. Yalnızca kirayı muaf minimum tutarın üzerindeki fazlalık hareket eder. Hesap verilerini korur ve kirayı muaf kalır. Bir pozisyon veya sipariş daha sonra kapatıldığında, program o noktada hesabın tuttuğu bakiyeyi geri öder. Bir taramadan sonra, bu bakiye geçerli kirayı minimumudur.
Cüzdan adresleri reference/program-addresses içinde listelenmiştir.

CreateAmmConfig sabit ücret sahiplerini yazıyor

Bu sürümden önce, create_amm_config her iki ücret-sahip alanını çağıran imzalayandan ayarladı:
Artık programın kendi sabitlerini yazıyor:
CreateAmmConfig hala crate::admin::ID’ye kilitlidir. Bu sürümden önce, her yeni ücret katmanı yöneticiye her iki alanda başladı ve UpdateAmmConfig param 3 / 4 ile döndürülmesi gerekiyordu. Artık operasyonel cüzdanlarla başlıyor. Mainnet’te sabitler zaten tüm 21 mevcut konfigürasyonda owner / fund_owner olarak depolanan aynı anahtarlardır. Program artık operasyonların elle ayarlamak için kullandığı bir değeri yazıyor. Koleksiyon imzalayanları değişmez. CollectProtocolFee, amm_config.owner veya crate::admin::ID’yi kabul eder ve CollectFundFee, amm_config.fund_owner veya crate::admin::ID’yi kabul eder; bu sürümden önce ve sonra. Devnet’te her iki sabit aynı anahtara çözülür. Bkz. reference/program-addresses.
Bu bir göç değildir. Her mevcut AmmConfig, zaten sahip olduğu owner ve fund_owner’ı korur. Alanları okuyun; sabitlerden veya yönetici anahtarından herhangi birini sabit kodlamayın.

Araç zinciri ve bağımlılık değişiklikleri

Anchor 1.0 değişiklikleri CPI çağrı sitelerinde, CPMM entegratörlerinin zaten işlediği değişikliklerle aynıdır. CpiContext::new programın AccountInfo’su yerine Pubkey’ini alır ve Context’in dört yaşam parametresi yerine bir tane vardır. İstemci crate’inde, RequestBuilder::instructions() artık Result olmadan Vec<Instruction> döndürür ve system_program solana-system-interface’e taşındı. Bkz. sdk-api/rust-cpi. Zincir üzerinde hiçbir etkisi olmayan derleme sistemi ayrıntıları:
  • Localnet yöneticisi. localnet özelliği artık taahhüt edilen bir fixture tarafından desteklenen sabit bir test anahtarını derlemez. Bunun yerine, yarn test:local-admin’in yerel cüzdanınızdan ayarladığı CLMM_LOCALNET_ADMIN ortam değişkeninden derleme zamanında yöneticiyi okur. Fixture’ın .gitignore istisnası gitti.
  • Sürüm profili. programs/amm/Cargo.toml’deki yinelenen [profile.release] bloğu silindi. Cargo, çalışma alanı kökü dışında [profile]’ı yok sayar, bu nedenle kök bloğu zaten etkili olan bloktu ve program düzeyindeki panic = "abort" hiçbir zaman uygulanmadı.
  • Anchor.toml. seeds = false, resolution = true artı skip-lint = false olur ve eski [registry] URL’si kaldırılır.
  • Lints. programs/amm/Cargo.toml, Anchor ve Solana makroları tarafından yayılan özellik cfg’leri için bir [lints.rust] unexpected_cfgs izin listesi ekler.
  • README. Bu dalda README hala size rustup default 1.86.0 ve avm install 0.32.1’i coral-xyz/anchor’dan çalıştırmanızı söyler. Bunun yerine Anchor.toml ve solana-fundamentals/toolchain izleyin.

Değişmeyen şeyler

  • Her hesap düzeni. PoolState, AmmConfig, TickArrayState, TickArrayBitmapExtension, PersonalPositionState, ObservationState, LimitOrderState, DynamicFeeConfig, Permission ve SupportMintAssociated aynı boyutları ve ofsetleri korur.
  • Hata kodları 6000–6051.
  • Swap, likidite, ücret, dinamik ücret ve limit-order matematiği. CollectExcessLamports, hiçbir havuzun rezervlerinin parçası olmayan lamport’ları hareket ettirir.
  • Position NFT dondurma 2026-08-17 tarihinden, havuz-olarak-dondurma-otoritesi kuralı ve ClosePosition çözme yolu dahil.
  • spl_memo. DecreaseLiquidityV2’nin memo-program kısıtlaması spl_memo::id()’den anchor_spl::memo::ID’ye taşındı. Her ikisi de aynı adresi adlandırır; anchor-spl sadece dışa aktarımı yeniden adlandırdı.
  • Program ID’si.

Güncellenen sayfalar

  • products/clmm/instructions: yükseltme başlığı; CollectExcessLamports bölümü hesap listesi, iki geçiş gönderme tablosu ve havuz başına kapsamı ile; envanter, yönetici-kapılı ve durum-değişim-matris satırları; CollectProtocolFee / CollectFundFee üzerinde ücret-sahip notu.
  • products/clmm/accounts: AmmConfig sahip yorumları ve CreateAmmConfig’in ne yazacağı hakkında bir not.
  • products/clmm/code-demos: sürüm başlığı ve Rust CPI iskeletinin Anchor 1.0’a taşınması.
  • products/cpmm/code-demos: “CLMM ile bir crate paylaşamaz” notu kaldırıldı.
  • reference/error-codes: 6052 belgelendi.
  • reference/program-addresses: yeni “CLMM ücret-sahip cüzdanları” bölümü; CLMM “Excess-lamports koleksiyonu cüzdanları“‘na eklendi.
  • sdk-api/rust-cpi, sdk-api/anchor-idl, solana-fundamentals/toolchain: raydium-clmm için Anchor 1.0 sabitlemeleri ve crate-split uyarısı emekli oldu.
  • solana-fundamentals/rent-and-reclaimable-rent: CLMM “Raydium programlarının kendi tarafında taradığı şeyler“‘e eklendi.
  • security/admin-and-multisig: CLMM excess-lamports toplayıcı rolü.
  • protocol-overview/versions-and-migration: CLMM yükseltme geçmişi madde işareti.