Halaman ini diterjemahkan secara otomatis oleh AI. Versi bahasa Inggris adalah acuan resmi.Lihat versi bahasa Inggris →
Entri ini mencakup pembaruan program CPMM yang akan datang. Telah diverifikasi terhadap cabang rilis lokal sebelum deployment. Konfirmasi program yang di-deploy sebelum mengandalkan instruksi baru atau perilaku
CreateAmmConfig yang berubah.0.32.1 ke =1.0.2, dan toolchain build dari Agave 2.3.0 ke 3.1.10. Bersama dengan itu ada empat perubahan perilaku, tiga di antaranya hanya penting untuk admin tooling dan satu — penghapusan whitelist mint — yang mengubah mint Token-2022 mana yang dapat digunakan untuk pool baru.
Semua yang dipanggil trader, LP, atau pool creator tetap memiliki account list, argument, dan math yang sama.
TL;DR untuk integrator
- Tidak ada instruksi yang menghadap pengguna yang berubah.
Initialize,InitializeWithPermission,Deposit,Withdraw,SwapBaseInput,SwapBaseOutput, dan keempat pathCollect*Feeidentik byte-for-byte. Tidak ada account layout yang berubah. - Satu instruksi ditambahkan:
CollectExcessLamports. Hanya admin, tanpa argument, sumber dilewatkan sebagairemaining_accounts. Mengembalikan lamports di atas minimum rent-exempt dari vault CPMM, LP mint, dan PDA, dan tidak menyentuh apa pun yang lain. Lihatproducts/cpmm/instructions. - Satu kode error ditambahkan:
6015LamportsCalculateError. Kode6000–6014tidak berubah. CreateAmmConfigtidak lagi menyalin penandatangan ke dalam field fee-owner. Config baru mendapatkan kunciprotocol_fee_ownerdanfund_fee_owneryang hardcoded. AccountAmmConfigyang sudah ada tidak tersentuh — terus bacaprotocol_owner/fund_ownerdari account daripada mengasumsikan nilai apa pun.- Hardcoded
MINT_WHITELISTToken-2022 empat alamat sudah hilang. Registry PDASupportMintAssociatedsekarang satu-satunya bypass CPMM dari extension allow-list. Pool yang sudah ada tidak terpengaruh; pemeriksaan berjalan hanya saat pembuatan pool. ClosePermissionPdamenerima dedicated permission-PDA creator authority, bukan hanya admin bersama.- Refresh IDL diperlukan. Satu instruksi baru, satu varian error baru.
- Paket client TypeScript diubah nama.
@coral-xyz/anchordibekukan di0.32.1; client Anchor 1.x dipublikasikan sebagai@anchor-lang/core.
CollectExcessLamports
Langkah 1 dari SIMD-0437 mendarat di mainnet pada 3 September 2026, mengurangi minimum rent-exempt sebesar 9% dengan empat langkah lagi akan datang. Setiap vault pool CPMM, LP mint, PoolState, AmmConfig, ObservationState, Permission, dan account SupportMintAssociated yang dibuat sebelum langkah sekarang over-funded, dan lamports dalam account yang dimiliki program hanya dapat dipindahkan oleh program itu.
Instruksi mengambil empat account tetap — wallet penandatangan/tujuan, PDA authority vault_and_lp_mint_auth_seed, dan kedua token program — kemudian sejumlah account sumber dalam remaining_accounts. Dispatch pada owner setiap account sumber: CPI ke WithdrawExcessLamports token program (discriminant 38) untuk token account atau mint, debit langsung untuk PDA milik CPMM, dan diam-diam lewati apa pun yang lain.
Wrapped SOL adalah kasus yang perlu dipahami. Saldo lamport native token account adalah saldo token-nya, jadi kedua token program menolak WithdrawExcessLamports pada satu. CPMM malah CPI SyncNative (melipat excess yang disumbangkan ke wrapped amount), mengukur berapa banyak amount tumbuh, UnwrapLamports (discriminant 45) untuk tepat delta itu, dan kemudian memerlukan wrapped balance sama dengan nilai pre-sync-nya — LamportsCalculateError jika tidak. Vault pool sisi SOL mempertahankan likuiditas penuhnya melalui sweep, dan tidak ada LP yang melihat perubahan harga di seluruhnya.
Penandatangan dapat berupa admin program bersama atau wallet collect-lamports dedicated; alamat ada di reference/program-addresses.
CreateAmmConfig menulis fixed fee owners
Sebelum rilis ini, create_amm_config menetapkan kedua field fee-owner dari penandatangan yang memanggil:
CreateAmmConfig di-gate ke crate::admin::ID, efek praktisnya adalah tier fee yang baru dibuat disapu oleh wallet operasional dedicated dari awal alih-alih oleh admin multisig, dan admin tidak dapat mengumpulkan dari config yang baru saja dibuat tanpa terlebih dahulu merotasi field melalui param UpdateAmmConfig 3 atau 4.
Dua konstanta mengikuti pola cfg devnet/mainnet yang sama seperti alamat program lainnya, dan di devnet keduanya resolve ke kunci yang sama. Lihat reference/program-addresses.
Whitelist mint Token-2022 dihapus
is_supported_mint dulu short-circuit pada hardcoded MINT_WHITELIST dari empat alamat sebelum iterasi extension mint. Array itu — dan HashSet yang dibangun darinya pada setiap panggilan — dihapus. Yang tersisa adalah:
- Legacy SPL Token mint lulus tanpa syarat.
- Mint dengan initialized
SupportMintAssociatedPDA di[b"support_mint", mint]lulus tanpa syarat. - Jika tidak, setiap extension pada mint harus salah satu dari
TransferFeeConfig,MetadataPointer,TokenMetadata,InterestBearingConfig,ScaledUiAmount.
CreateSupportMintAssociated / CloseSupportMintAssociated sendiri dan dedicated authority sendiri bersama admin bersama, dan dikonsultasikan dari Initialize dan InitializeWithPermission. Menghapus array statis berarti onboarding mint sekarang murni tindakan on-chain daripada upgrade program — yang merupakan intinya.
Pool yang sudah ada tidak terpengaruh, karena pemeriksaan mint berjalan hanya saat pembuatan pool. Yang berubah adalah membuat pool CPMM baru untuk salah satu dari empat mint yang dulunya di-whitelist memerlukan mint itu memiliki registry PDA — yang penting sudah ada di mainnet. Gambaran lengkap, termasuk apa yang dilakukan dan tidak dilakukan registry, ada di reference/token-2022-support.
Pelebaran penandatangan ClosePermissionPda
CreatePermissionPda sudah menerima admin bersama atau dedicated permission-PDA creator authority, sementara ClosePermissionPda dikunci ke admin dengan constraint address =. Path close sekarang mengambil pasangan yang sama:
InvalidOwner (6001) kedua cara — constraint address = lama sudah membawa error kustom itu — jadi hanya set penandatangan yang diterima yang melebar.
Perubahan toolchain dan dependency
Anchor 1.0 mengubah dua hal di setiap call site CPI, yang penting jika Anda mengintegrasikan CPMM dari program Anda sendiri:
CpiContext::new mengambil Pubkey program daripada AccountInfo-nya, dan Context memiliki satu parameter lifetime alih-alih empat. Di sisi client RequestBuilder::instructions() mengembalikan Vec<Instruction> daripada Result<...>, CommitmentConfig berasal dari anchor_client alih-alih solana_sdk, dan spl-associated-token-account 8.0 memindahkan address helper-nya di bawah ::address dan program ID-nya ke ::program::ID. Lihat sdk-api/rust-cpi.
Dua detail build-system, tidak ada yang memiliki efek on-chain: crate program mendeklarasikan fitur localnet yang mengkompilasi wallet lokal sebagai admin dari variabel environment CPSWAP_LOCALNET_ADMIN (jadi test yang di-gate admin benar-benar dapat menandatangani — yarn test:local-admin menghubungkannya), dan blok [profile.release] duplikat di programs/cp-swap/Cargo.toml dihapus. Cargo mengabaikan [profile] di luar workspace root, jadi blok root sudah yang berlaku — termasuk fakta bahwa panic = "abort" blok level-program tidak pernah diterapkan.
Apa yang tidak berubah
- Setiap account layout.
PoolState,AmmConfig,ObservationState,Permission,SupportMintAssociated— ukuran sama, offset sama. - Error code
6000–6014. - Extension allow-list itu sendiri. Masih lima extension yang sama.
- Fee rate, fee accrual, dan curve.
CollectExcessLamportsmemindahkan lamports yang tidak pernah bagian dari reserve pool apa pun. spl_memo. Constraint memo-programWithdrawpindah darispl_memo::id()keanchor_spl::memo::ID— alamat yang sama di bawah exportanchor-splyang diubah nama.- Program ID. Tidak berubah.
Halaman yang diperbarui
products/cpmm/instructions—CollectExcessLamportsditambahkan dengan account list dan tabel dispatch per-owner;CreateAmmConfigmendapat argumentcreator_fee_ratedan catatan pada fixed fee owners; baris ringkasan instruksi ditambahkan untukCollectExcessLamports,CreateSupportMintAssociated,CloseSupportMintAssociated; penandatanganClosePermissionPdadikoreksi; preconditionInitializeditulis ulang untuk bypass registry-only; baris matriks perubahan state ditambahkan.products/cpmm/accounts— bagian Token-2022 ditulis ulang di sekitar registry PDA, dengan penghapusan whitelist dipanggil; penandatanganClosePermissionPdadikoreksi.products/cpmm/overview— kalimat whitelist ditulis ulang.products/cpmm/code-demos— skeleton Rust CPI diperbarui untuk Anchor 1.0.reference/token-2022-support— bagian bypass-path ditulis ulang di sekitar registry PDA, denganMINT_WHITELISTyang dihapus dipindahkan ke bagian “removed bypasses”.reference/error-codes—6015didokumentasikan.reference/program-addresses— bagian “CPMM support-mint registry authority”, “CPMM fee-owner wallets”, dan “Excess-lamports collection wallets” baru; catatanClosePermissionPdadikoreksi.sdk-api/rust-cpi,solana-fundamentals/toolchain,integration-guides/cpi-integration— pin Anchor 1.0 dan catatan migrasi CPI.solana-fundamentals/rent-and-reclaimable-rent— bagian “What the Raydium programs sweep on their own side” baru.

