Skip to main content
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.
CLMM sekarang mendapatkan pergerakan kerangka kerja yang sama dengan CPMM dan LaunchLab yang dikirim pada 2026-09-09. Anchor bergerak dari 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 jalur OpenPosition* / 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: PoolState pool itu sendiri selalu disapu, dan pool PDA menandatangani vault-nya, yang Anda berikan dalam remaining_accounts. Akun milik CLMM lainnya dalam remaining_accounts juga disapu. Lihat products/clmm/instructions.
  • Satu kode error ditambahkan: 6052 LamportsCalculateError. Kode 6000–6051 tidak berubah.
  • CreateAmmConfig tidak lagi menyalin penanda tangan ke dalam owner / fund_owner. Konfigurasi baru mendapatkan kunci protocol_fee_owner dan fund_fee_owner yang dikodekan keras. Di mainnet ini adalah dua kunci yang sama yang sudah disimpan di semua 21 konfigurasi yang ada. Akun AmmConfig yang 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.2 pada cabang chore/upgrade-anchor mereka, jadi satu program dapat CPI ke keduanya. Lihat sdk-api/rust-cpi.
  • Paket klien TypeScript diubah nama. Suite pengujian bergerak dari @coral-xyz/anchor 0.32.1 ke @anchor-lang/core 1.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:
  1. CPI program token terlebih dahulu. Untuk setiap sumber yang dimiliki oleh SPL Token atau Token-2022, akun non-native mendapatkan WithdrawExcessLamports (discriminant 38). Vault wSOL asli mendapatkan putaran SyncNative → UnwrapLamports (discriminant 45), yang berakhir dengan pemeriksaan bahwa saldo yang dibungkus sama dengan nilai pra-sinknya. Jika tidak, panggilan gagal dengan LamportsCalculateError. Vault sisi SOL mempertahankan likuiditas penuhnya, dan tidak ada kutipan swap yang berubah di seluruh sapuan.
  2. Debit langsung kedua. Lintasan 2 mendebit pool_state terlebih dahulu, kemudian setiap sumber yang dimiliki oleh program CLMM, turun ke rent.minimum_balance(data_len).
Sumber yang dimiliki oleh program lain dilewatkan diam-diam. Urutan dua lintasan ini adalah yang diadopsi CPMM pada 2026-09-19. CLMM memilikinya sejak rilis pertamanya. Jika PDA didebit sebelum CPI, runtime membatalkan dengan UnbalancedInstruction, jadi pemanggil dapat melewatkan sumber dalam urutan apa pun.
Lintasan milik program tidak memeriksa pool atau pengguna mana yang dimiliki akun. Akun apa pun yang dimiliki oleh program CLMM memenuhi syarat, termasuk beberapa yang rentnya dibayar pengguna: PersonalPositionState, LimitOrderState, dan TickArrayState. Hanya kelebihan di atas minimum bebas sewa yang bergerak. Akun mempertahankan datanya dan tetap bebas sewa. Ketika posisi atau pesanan ditutup nanti, program mengembalikan saldo apa pun yang dipegang akun pada saat itu. Setelah sapuan, saldo itu adalah minimum sewa saat ini.
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:
Sekarang menulis konstanta program sendiri:
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.
Ini bukan migrasi. Setiap AmmConfig yang ada mempertahankan owner dan fund_owner yang sudah dimilikinya. Baca bidang daripada mengkodekan keras salah satu konstanta atau kunci admin.

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 localnet tidak lagi mengompilasi kunci pengujian tetap yang didukung oleh fixture yang berkomitmen. Sebaliknya membaca admin dari variabel lingkungan CLMM_LOCALNET_ADMIN pada waktu pembangunan, yang yarn test:local-admin atur dari dompet lokal Anda. Pengecualian .gitignore fixture sudah hilang.
  • Release profile. Blok [profile.release] duplikat dalam programs/amm/Cargo.toml dihapus. Cargo mengabaikan [profile] di luar akar workspace, jadi blok akar sudah yang berlaku, dan panic = "abort" tingkat program tidak pernah diterapkan.
  • Anchor.toml. seeds = false menjadi resolution = true ditambah skip-lint = false, dan URL [registry] basi dihapus.
  • Lints. programs/amm/Cargo.toml menambahkan daftar izin [lints.rust] unexpected_cfgs untuk feature cfgs yang dipancarkan makro Anchor dan Solana.
  • README. Di cabang ini README masih memberi tahu Anda untuk menjalankan rustup default 1.86.0 dan avm install 0.32.1 dari coral-xyz/anchor. Ikuti Anchor.toml dan solana-fundamentals/toolchain sebagai gantinya.

Apa yang tidak berubah

  • Setiap tata letak akun. PoolState, AmmConfig, TickArrayState, TickArrayBitmapExtension, PersonalPositionState, ObservationState, LimitOrderState, DynamicFeeConfig, Permission dan SupportMintAssociated mempertahankan ukuran dan offset yang sama.
  • Kode error 6000–6051.
  • Swap, likuiditas, biaya, dynamic-fee dan limit-order math. CollectExcessLamports memindahkan 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 memo DecreaseLiquidityV2 pindah dari spl_memo::id() ke anchor_spl::memo::ID. Keduanya menamai alamat yang sama; anchor-spl hanya mengganti nama ekspor.
  • Program ID.

Halaman yang diperbarui

  • products/clmm/instructions: banner upgrade; bagian CollectExcessLamports dengan daftar akun, tabel dispatch dua lintasan dan scoping per-pool; baris inventaris, admin-gating dan state-change-matrix; catatan fee-owner pada CollectProtocolFee / CollectFundFee.
  • products/clmm/accounts: komentar pemilik AmmConfig dan catatan tentang apa yang ditulis CreateAmmConfig.
  • 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: 6052 didokumentasikan.
  • 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 untuk raydium-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.