Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Entri ini mencakup pembaruan program CLMM yang akan datang. Entri ini diverifikasi terhadap cabang
chore/upgrade-anchor dari raydium-clmm (head a72f9e1) sebelum penerapan. Konfirmasi program yang diterapkan sebelum mengandalkan instruksi baru atau perilaku CreateAmmConfig yang berubah.0.32.1 ke =1.0.2, dan rantai alat pembangunan bergerak dari Agave 2.3.0 ke 3.1.10. Dua perubahan sisi admin berjalan beriringan: instruksi CollectExcessLamports baru, dan fee owners tetap dalam CreateAmmConfig.
Setiap instruksi yang dipanggil oleh pedagang, LP, pengguna limit-order atau pembuat pool mempertahankan daftar akun, argumen, dan matematikanya.
TL;DR untuk integrator
- Tidak ada instruksi yang menghadap pengguna yang berubah.
CreatePool,CreateCustomizablePool,CreatePermissionedPool, setiap jalurOpenPosition*/IncreaseLiquidity*/DecreaseLiquidity*,ClosePosition,Swap/SwapV2/SwapRouterBaseIn, lima instruksi limit-order dan instruksi reward identik byte di kawat. Tidak ada tata letak akun yang berubah. - Satu instruksi ditambahkan:
CollectExcessLamports. Ini hanya untuk admin dan tidak memerlukan argumen. Ini menyapu satu pool per panggilan:PoolStatepool itu sendiri selalu disapu, dan pool PDA menandatangani vault-nya, yang Anda berikan dalamremaining_accounts. Akun milik CLMM lainnya dalamremaining_accountsjuga disapu. Lihatproducts/clmm/instructions. - Satu kode error ditambahkan:
6052LamportsCalculateError. Kode6000–6051tidak berubah. CreateAmmConfigtidak lagi menyalin penanda tangan ke dalamowner/fund_owner. Konfigurasi baru mendapatkan kunciprotocol_fee_ownerdanfund_fee_owneryang dikodekan keras. Di mainnet ini adalah dua kunci yang sama yang sudah disimpan di semua 21 konfigurasi yang ada. AkunAmmConfigyang ada tidak tersentuh, jadi terus baca bidang dari akun.- Segarkan IDL Anda. Ini menambahkan satu instruksi dan satu varian error, untuk 39 instruksi dan 53 error.
- Anda sekarang dapat menempatkan CPMM dan CLMM dalam satu crate. Kedua repo menyematkan
anchor-lang/anchor-spl=1.0.2pada cabangchore/upgrade-anchormereka, jadi satu program dapat CPI ke keduanya. Lihatsdk-api/rust-cpi. - Paket klien TypeScript diubah nama. Suite pengujian bergerak dari
@coral-xyz/anchor0.32.1ke@anchor-lang/core1.0.2.
CollectExcessLamports
Langkah 1 dari SIMD-0437 diaktifkan di mainnet pada 3 September 2026. Setiap akun CLMM yang dibuat sebelum langkah sekarang kelebihan dana, dan hanya program CLMM yang dapat memindahkan lamport keluar dari akun yang dimilikinya. Itu mencakup pool vault, reward vault, PoolState, AmmConfig, ObservationState, TickArrayBitmapExtension dan sisanya.
Instruksi mengambil empat akun tetap, kemudian sejumlah akun sumber dalam remaining_accounts:
Pool adalah otoritas penanda tangan, bukan PDA seluruh program. CPMM menandatangani dengan satu otoritas global
vault_and_lp_mint_auth_seed. Vault token CLMM dimiliki oleh PoolState mereka, jadi satu panggilan hanya dapat menandatangani pool yang dilewatkan di slot 2. Setiap sumber program token harus memiliki pool itu sebagai otoritasnya: token_vault_0, token_vault_1, atau salah satu reward vault pool. Akun token dari pool lain, atau akun token pengguna, gagal pemeriksaan pemilik program token dan mengembalikan seluruh instruksi. Program tidak melewatkannya. Mint NFT posisi juga tidak dapat disapu, karena otoritas mint mereka dibatalkan saat posisi dibuka. Sapu pool demi pool.
Instruksi membuat dua lintasan, dan urutan itu tetap:
- CPI program token terlebih dahulu. Untuk setiap sumber yang dimiliki oleh SPL Token atau Token-2022, akun non-native mendapatkan
WithdrawExcessLamports(discriminant38). Vault wSOL asli mendapatkan putaranSyncNative→UnwrapLamports(discriminant45), yang berakhir dengan pemeriksaan bahwa saldo yang dibungkus sama dengan nilai pra-sinknya. Jika tidak, panggilan gagal denganLamportsCalculateError. Vault sisi SOL mempertahankan likuiditas penuhnya, dan tidak ada kutipan swap yang berubah di seluruh sapuan. - Debit langsung kedua. Lintasan 2 mendebit
pool_stateterlebih dahulu, kemudian setiap sumber yang dimiliki oleh program CLMM, turun kerent.minimum_balance(data_len).
UnbalancedInstruction, jadi pemanggil dapat melewatkan sumber dalam urutan apa pun.
Alamat wallet tercantum dalam reference/program-addresses.
CreateAmmConfig menulis fixed fee owners
Sebelum rilis ini, create_amm_config menetapkan kedua bidang fee-owner dari penanda tangan yang memanggil:
CreateAmmConfig masih dijaga ke crate::admin::ID. Sebelum rilis ini, setiap tingkat biaya baru dimulai dengan admin di kedua bidang dan harus diputar dengan param UpdateAmmConfig 3 / 4. Sekarang dimulai dengan wallet operasional. Di mainnet konstanta adalah kunci yang sama yang sudah disimpan sebagai owner / fund_owner di semua 21 konfigurasi yang ada. Program sekarang menulis nilai yang operasi gunakan untuk ditetapkan dengan tangan.
Penanda tangan koleksi tidak berubah. CollectProtocolFee menerima amm_config.owner atau crate::admin::ID, dan CollectFundFee menerima amm_config.fund_owner atau crate::admin::ID, keduanya sebelum dan sesudah rilis ini.
Di devnet, kedua konstanta diselesaikan ke kunci yang sama. Lihat reference/program-addresses.
Perubahan rantai alat dan dependensi
Perubahan Anchor 1.0 di situs panggilan CPI adalah yang sama yang sudah ditangani integrator CPMM.
CpiContext::new mengambil Pubkey program daripada AccountInfo-nya, dan Context memiliki satu parameter lifetime alih-alih empat. Dalam client crate, RequestBuilder::instructions() sekarang mengembalikan Vec<Instruction> tanpa Result, dan system_program pindah ke solana-system-interface. Lihat sdk-api/rust-cpi.
Detail sistem pembangunan tanpa efek on-chain:
- Admin localnet. Fitur
localnettidak lagi mengompilasi kunci pengujian tetap yang didukung oleh fixture yang berkomitmen. Sebaliknya membaca admin dari variabel lingkunganCLMM_LOCALNET_ADMINpada waktu pembangunan, yangyarn test:local-adminatur dari dompet lokal Anda. Pengecualian.gitignorefixture sudah hilang. - Release profile. Blok
[profile.release]duplikat dalamprograms/amm/Cargo.tomldihapus. Cargo mengabaikan[profile]di luar akar workspace, jadi blok akar sudah yang berlaku, danpanic = "abort"tingkat program tidak pernah diterapkan. - Anchor.toml.
seeds = falsemenjadiresolution = trueditambahskip-lint = false, dan URL[registry]basi dihapus. - Lints.
programs/amm/Cargo.tomlmenambahkan daftar izin[lints.rust] unexpected_cfgsuntuk feature cfgs yang dipancarkan makro Anchor dan Solana. - README. Di cabang ini README masih memberi tahu Anda untuk menjalankan
rustup default 1.86.0danavm install 0.32.1daricoral-xyz/anchor. IkutiAnchor.tomldansolana-fundamentals/toolchainsebagai gantinya.
Apa yang tidak berubah
- Setiap tata letak akun.
PoolState,AmmConfig,TickArrayState,TickArrayBitmapExtension,PersonalPositionState,ObservationState,LimitOrderState,DynamicFeeConfig,PermissiondanSupportMintAssociatedmempertahankan ukuran dan offset yang sama. - Kode error
6000–6051. - Swap, likuiditas, biaya, dynamic-fee dan limit-order math.
CollectExcessLamportsmemindahkan lamport yang tidak pernah menjadi bagian dari cadangan pool apa pun. - Pembekuan NFT posisi dari 2026-08-17, termasuk aturan pool-as-freeze-authority dan jalur thaw
ClosePosition. spl_memo. Batasan program memoDecreaseLiquidityV2pindah darispl_memo::id()keanchor_spl::memo::ID. Keduanya menamai alamat yang sama;anchor-splhanya mengganti nama ekspor.- Program ID.
Halaman yang diperbarui
products/clmm/instructions: banner upgrade; bagianCollectExcessLamportsdengan daftar akun, tabel dispatch dua lintasan dan scoping per-pool; baris inventaris, admin-gating dan state-change-matrix; catatan fee-owner padaCollectProtocolFee/CollectFundFee.products/clmm/accounts: komentar pemilikAmmConfigdan catatan tentang apa yang ditulisCreateAmmConfig.products/clmm/code-demos: banner versi dan kerangka CPI Rust dipindahkan ke Anchor 1.0.products/cpmm/code-demos: catatan “tidak dapat berbagi crate dengan CLMM” dihapus.reference/error-codes:6052didokumentasikan.reference/program-addresses: bagian “CLMM fee-owner wallets” baru; CLMM ditambahkan ke “Excess-lamports collection wallets”.sdk-api/rust-cpi,sdk-api/anchor-idl,solana-fundamentals/toolchain: pin Anchor 1.0 untukraydium-clmm, dan peringatan split-crate pensiun.solana-fundamentals/rent-and-reclaimable-rent: CLMM ditambahkan ke “What the Raydium programs sweep on their own side”.security/admin-and-multisig: peran kolektor excess-lamports CLMM.protocol-overview/versions-and-migration: poin riwayat upgrade CLMM.

