Trang này được dịch tự động bằng AI. Phiên bản tiếng Anh là bản chính thức.Xem bản tiếng Anh →
Mục này bao gồm một bản cập nhật chương trình CLMM sắp tới. Nó đã được xác minh so với nhánh
chore/upgrade-anchor của raydium-clmm (head a72f9e1) trước khi triển khai. Xác nhận chương trình được triển khai trước khi dựa vào lệnh mới hoặc hành vi CreateAmmConfig đã thay đổi.0.32.1 lên =1.0.2, và chuỗi công cụ xây dựng nâng cấp từ Agave 2.3.0 lên 3.1.10. Hai thay đổi phía admin đi kèm: một lệnh CollectExcessLamports mới và các chủ sở hữu phí cố định trong CreateAmmConfig.
Mọi lệnh mà một nhà giao dịch, một LP, một người dùng lệnh giới hạn hoặc một người tạo pool gọi đều giữ danh sách tài khoản, đối số và toán học của nó.
TL;DR cho các nhà tích hợp
- Không có lệnh nào hướng tới người dùng thay đổi.
CreatePool,CreateCustomizablePool,CreatePermissionedPool, mọi đường dẫnOpenPosition*/IncreaseLiquidity*/DecreaseLiquidity*,ClosePosition,Swap/SwapV2/SwapRouterBaseIn, năm lệnh giới hạn và các lệnh phần thưởng đều giống hệt nhau trên dây. Không có bố cục tài khoản nào thay đổi. - Một lệnh được thêm:
CollectExcessLamports. Nó chỉ dành cho admin và không có đối số. Nó quét một pool mỗi lần gọi:PoolStatecủa pool luôn được quét, và pool PDA ký cho các vault của nó, mà bạn truyền vàoremaining_accounts. Bất kỳ tài khoản nào khác do CLMM sở hữu trongremaining_accountscũng được quét. Xemproducts/clmm/instructions. - Một mã lỗi được thêm:
6052LamportsCalculateError. Các mã6000–6051không thay đổi. CreateAmmConfigkhông còn sao chép người ký vàoowner/fund_owner. Các config mới nhận các khóaprotocol_fee_ownervàfund_fee_ownerđược hardcode. Trên mainnet đây là hai khóa giống nhau đã được lưu trữ trên tất cả 21 config hiện có. Các tài khoảnAmmConfighiện có không bị thay đổi, vì vậy hãy tiếp tục đọc các trường từ tài khoản.- Làm mới IDL của bạn. Nó thêm một lệnh và một biến thể lỗi, cho 39 lệnh và 53 lỗi.
- Bạn giờ có thể đặt CPMM và CLMM trong một crate. Cả hai repo ghim
anchor-lang/anchor-spl=1.0.2trên các nhánhchore/upgrade-anchorcủa chúng, vì vậy một chương trình duy nhất có thể CPI vào cả hai. Xemsdk-api/rust-cpi. - Gói client TypeScript được đổi tên. Bộ kiểm tra chuyển từ
@coral-xyz/anchor0.32.1sang@anchor-lang/core1.0.2.
CollectExcessLamports
Bước 1 của SIMD-0437 được kích hoạt trên mainnet vào ngày 3 tháng 9 năm 2026. Mọi tài khoản CLMM được tạo trước một bước giờ đều được tài trợ quá mức, và chỉ chương trình CLMM mới có thể di chuyển lamports ra khỏi một tài khoản mà nó sở hữu. Điều đó bao gồm các vault pool, vault phần thưởng, PoolState, AmmConfig, ObservationState, TickArrayBitmapExtension và phần còn lại.
Lệnh này nhận bốn tài khoản cố định, sau đó là bất kỳ số lượng tài khoản nguồn nào trong remaining_accounts:
Pool là thẩm quyền ký, không phải một PDA toàn chương trình. CPMM ký với một thẩm quyền
vault_and_lp_mint_auth_seed toàn cầu duy nhất. Các vault token CLMM được sở hữu bởi PoolState của chúng, vì vậy một lệnh gọi duy nhất chỉ có thể ký cho pool được truyền vào slot 2. Mỗi nguồn token-program phải có pool đó làm thẩm quyền của nó: token_vault_0, token_vault_1, hoặc một trong các vault phần thưởng của pool. Một tài khoản token từ một pool khác, hoặc tài khoản token của người dùng, sẽ không vượt qua kiểm tra chủ sở hữu của token program và hoàn nguyên toàn bộ lệnh. Chương trình không bỏ qua nó. Các mint NFT vị trí cũng không thể quét được, vì thẩm quyền mint của chúng bị thu hồi khi vị trí được mở. Quét pool theo pool.
Lệnh này thực hiện hai lần, và thứ tự đó là cố định:
- Token-program CPIs trước tiên. Đối với mỗi nguồn được sở hữu bởi SPL Token hoặc Token-2022, một tài khoản không phải native nhận
WithdrawExcessLamports(discriminant38). Một vault wSOL native nhận vòngSyncNative→UnwrapLamports(discriminant45), kết thúc bằng kiểm tra rằng số dư được bao bọc bằng giá trị trước khi đồng bộ hóa. Nếu không, lệnh gọi sẽ thất bại vớiLamportsCalculateError. Một vault phía SOL giữ toàn bộ thannh khoản của nó, và không có báo giá swap nào thay đổi trong một lần quét. - Ghi nợ trực tiếp thứ hai. Lần 2 ghi nợ
pool_statetrước tiên, sau đó mọi nguồn được sở hữu bởi chương trình CLMM, xuốngrent.minimum_balance(data_len).
UnbalancedInstruction, vì vậy những người gọi có thể truyền các nguồn theo bất kỳ thứ tự nào.
Các địa chỉ ví được liệt kê trong reference/program-addresses.
CreateAmmConfig ghi các chủ sở hữu phí cố định
Trước bản phát hành này, create_amm_config đặt cả hai trường chủ sở hữu phí từ người ký gọi:
CreateAmmConfig vẫn được gated tới crate::admin::ID. Trước bản phát hành này, mỗi tầng phí mới bắt đầu với admin trong cả hai trường và phải được xoay vòng với tham số UpdateAmmConfig 3 / 4. Giờ nó bắt đầu với các ví hoạt động. Trên mainnet các hằng số là những khóa giống nhau đã được lưu trữ làm owner / fund_owner trên tất cả 21 config hiện có. Chương trình giờ ghi một giá trị mà các hoạt động từng đặt bằng tay.
Các người ký bộ sưu tập không thay đổi. CollectProtocolFee chấp nhận amm_config.owner hoặc crate::admin::ID, và CollectFundFee chấp nhận amm_config.fund_owner hoặc crate::admin::ID, cả trước và sau bản phát hành này.
Trên devnet, cả hai hằng số đều phân giải thành cùng một khóa. Xem reference/program-addresses.
Các thay đổi chuỗi công cụ và phụ thuộc
Các thay đổi Anchor 1.0 tại các trang gọi CPI là những thay đổi giống nhau mà các nhà tích hợp CPMM đã xử lý.
CpiContext::new nhận Pubkey của chương trình thay vì AccountInfo của nó, và Context có một tham số lifetime thay vì bốn. Trong client crate, RequestBuilder::instructions() giờ trả về Vec<Instruction> mà không có Result, và system_program chuyển sang solana-system-interface. Xem sdk-api/rust-cpi.
Chi tiết hệ thống xây dựng không có tác động on-chain:
- Admin localnet. Tính năng
localnetkhông còn biên dịch một khóa kiểm tra cố định được hỗ trợ bởi một fixture được cam kết. Thay vào đó, nó đọc admin từ biến môi trườngCLMM_LOCALNET_ADMINtại thời gian xây dựng, màyarn test:local-adminđặt từ ví cục bộ của bạn. Ngoại lệ.gitignorecủa fixture đã biến mất. - Release profile. Khối
[profile.release]trùng lặp trongprograms/amm/Cargo.tomlđã bị xóa. Cargo bỏ qua[profile]bên ngoài gốc workspace, vì vậy khối gốc đã là khối có hiệu lực, vàpanic = "abort"cấp chương trình không bao giờ được áp dụng. - Anchor.toml.
seeds = falsetrở thànhresolution = truecộng vớiskip-lint = false, và URL[registry]cũ bị xóa. - Lints.
programs/amm/Cargo.tomlthêm danh sách cho phép[lints.rust] unexpected_cfgscho các feature cfgs mà các macro Anchor và Solana phát ra. - README. Trên nhánh này README vẫn yêu cầu bạn chạy
rustup default 1.86.0vàavm install 0.32.1từcoral-xyz/anchor. Thay vào đó, hãy làm theoAnchor.tomlvàsolana-fundamentals/toolchain.
Những gì không thay đổi
- Mọi bố cục tài khoản.
PoolState,AmmConfig,TickArrayState,TickArrayBitmapExtension,PersonalPositionState,ObservationState,LimitOrderState,DynamicFeeConfig,PermissionvàSupportMintAssociatedgiữ cùng kích thước và offset. - Mã lỗi
6000–6051. - Swap, liquidity, fee, dynamic-fee và limit-order math.
CollectExcessLamportsdi chuyển lamports không bao giờ là một phần của dự trữ của bất kỳ pool nào. - Position NFT freezing từ 2026-08-17, bao gồm quy tắc pool-as-freeze-authority và đường dẫn thaw
ClosePosition. spl_memo. Ràng buộc memo-program củaDecreaseLiquidityV2chuyển từspl_memo::id()sanganchor_spl::memo::ID. Cả hai đều đặt tên cho cùng một địa chỉ;anchor-splchỉ đổi tên xuất khẩu.- Program ID.
Các trang được cập nhật
products/clmm/instructions: banner nâng cấp; phầnCollectExcessLamportsvới danh sách tài khoản, bảng dispatch hai lần và phạm vi mỗi pool; hàng inventory, admin-gating và state-change-matrix; ghi chú chủ sở hữu phí trênCollectProtocolFee/CollectFundFee.products/clmm/accounts: nhận xét chủ sở hữuAmmConfigvà ghi chú về những gìCreateAmmConfigghi.products/clmm/code-demos: banner phiên bản và bộ xương CPI Rust chuyển sang Anchor 1.0.products/cpmm/code-demos: ghi chú “không thể chia sẻ crate với CLMM” bị xóa.reference/error-codes:6052được ghi lại.reference/program-addresses: phần “CLMM fee-owner wallets” mới; CLMM được thêm vào “Excess-lamports collection wallets”.sdk-api/rust-cpi,sdk-api/anchor-idl,solana-fundamentals/toolchain: Anchor 1.0 pins choraydium-clmm, và cảnh báo crate-split bị loại bỏ.solana-fundamentals/rent-and-reclaimable-rent: CLMM được thêm vào “What the Raydium programs sweep on their own side”.security/admin-and-multisig: vai trò collector excess-lamports CLMM.protocol-overview/versions-and-migration: dấu đạn lịch sử nâng cấp CLMM.

