Skip to main content
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 →
Bị thay thế vào 2026-10-22. CreatePermissionedPool được đổi tên thành CreateCustomizablePoolV2 và trở thành không cần phép, và tài khoản Permission với CreatePermissionPda / ClosePermissionPda đã bị xóa. Mục này mô tả chương trình tính đến 2026-07-30. Xem mục nhập 2026-10-22.
Bản phát hành này ghi lại hai thay đổi chương trình CLMM. Cả hai đều là bổ sung và tương thích ngược: các pool, vị trí và lệnh mở hiện có không bị ảnh hưởng, và các đường dẫn CreatePool / CreateCustomizablePool cổ điển vẫn không thay đổi.

TL;DR cho các nhà tích hợp

  • ID Pool giờ đây có thể không chính tắc, đằng sau một cổng quyền hạn. Theo lịch sử, có chính xác một địa chỉ pool CLMM cho mỗi (amm_config, token_mint_0, token_mint_1) — các seed PDA đã ghim nó. Một lệnh mới, CreatePermissionedPool, gấp một seed_index: u16 do khách hàng cung cấp (khác không) vào các seed pool PDA, vì vậy một nhà điều hành được phép có thể thiết lập nhiều pool cho cùng một cặp và mức phí, mỗi cái ở địa chỉ riêng của nó. Vì các địa chỉ pool tùy ý là một khả năng được ưu tiên, người trả phí phải giữ một Permission PDA được cấp bởi quản trị viên. Hai lệnh quản trị viên, CreatePermissionPda và ClosePermissionPda, quản lý các khoản cấp đó.
  • OpenLimitOrder giờ đây xác thực phía output. Lệnh nhận ba tài khoản bổ sung — output_token_account, output_vault, output_vault_mint — và từ chối lệnh với NotApproved nếu tài khoản token input hoặc output của chủ sở hữu bị đóng băng. Điều này đảm bảo rằng lần điền cuối cùng có thể được giao, điều này quan trọng đối với các mint Token-2022 được phép / đóng băng theo mặc định (token được phép). Các khách hàng được xây dựng dựa trên danh sách tài khoản một phía cũ phải thêm ba tài khoản output.

Những gì đã thay đổi trong chương trình

Lệnh mới: CreatePermissionedPool

Cùng hình dạng và tham số với CreateCustomizablePool (nó nhận cùng CreateCustomizableParams, vì vậy phí một phía và tùy chọn phí động có sẵn), cộng với:
  • Một đối số seed_index: u16, phải khác không. Nó được nối thêm (little-endian) vào các seed pool PDA: ["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()].
  • Một tài khoản permission: PDA ["permission", payer]. Anchor từ chối cuộc gọi nếu nó không tồn tại hoặc không được sở hữu bởi chương trình — sự tồn tại của nó chính là sự ủy quyền.
  • Một tài khoản pool_creator được ghi lại là pool_state.owner, có thể khác với payer trả phí.
seed_index = 0 vẫn được dành riêng cho các pool cũ: đối với những cái đó, thành phần seed sụp đổ thành rỗng, tái tạo địa chỉ bốn seed cổ điển, vì vậy không có địa chỉ pool hiện có nào thay đổi. Xem Instructions → CreatePermissionedPool.

Tài khoản mới: Permission

Một tài khoản khả năng mà sự tồn tại của nó là khoản cấp. Nó chỉ lưu trữ authority nó được tạo cho (cộng với padding). Seed PDA: ["permission", authority]. Nó cấp quyền gọi CreatePermissionedPool và không gì khác — nó không thể di chuyển quỹ, thay đổi phí hoặc thay đổi bất kỳ pool nào. Xem Accounts → Permission.

Lệnh quản trị viên mới: CreatePermissionPda / ClosePermissionPda

  • CreatePermissionPda khởi tạo một Permission PDA cho một permission_authority nhất định.
  • ClosePermissionPda đóng nó và hoàn lại tiền thuê nhà cho người gọi, thu hồi khoản cấp. Các pool đã được tạo theo khoản cấp đó không bị ảnh hưởng.
Cả hai đều chấp nhận khóa admin của chương trình hoặc khóa permission_pda_admin chuyên dụng (một hằng số khác biệt trên mainnet so với devnet). Xem Admin keys and multisig → CLMM.

PoolState: trường seed_index

Hai byte được cắt ra từ một vùng padding hiện có (padding: [u8; 6] → seed_index: [u8; 2] + padding: [u8; 4]) ngay sau fee_on. Tổng kích thước tài khoản không thay đổi và không cần di chuyển indexer. Đối với các pool được tạo thông qua CreatePool / CreateCustomizablePool, seed_index là [0, 0]; đối với các pool được phép, nó mang chỉ số được chọn của người tạo và được yêu cầu để lấy lại địa chỉ pool ngoài chuỗi.

OpenLimitOrder: tài khoản phía output và frozen-account guard

Danh sách tài khoản OpenLimitOrder có thêm output_token_account, output_vault và output_vault_mint. Chúng chỉ được sử dụng để xác thực — không có output nào được ghi nợ khi mở. Trình xử lý giờ đây yêu cầu rằng không tài khoản token input hoặc output bị đóng băng, nếu không trả về NotApproved (cùng mã đã được trả về khi pool có swap hoặc limit-order bị vô hiệu hóa). Điều này đóng một khoảng trống nơi một lệnh có thể được mở chống lại một tài khoản token không bao giờ có thể nhận được lần điền (ví dụ: một tài khoản chưa được rã đông cho một mint Token-2022 đóng băng theo mặc định). Xem Instructions → OpenLimitOrder.

Mã lỗi

Không có mã lỗi mới. Mã 6000 NotApproved hiện có giờ đây bổ sung bao gồm các trường hợp tài khoản token input/output bị đóng băng và các trường hợp swap/limit-order-disabled trên OpenLimitOrder, và trường hợp “signer không phải admin cũng không phải permission_pda_admin” trên các lệnh quyền. Bảng mã lỗi và đánh số không thay đổi so với bản phát hành 2026-05-18. Xem Error codes → CLMM.

Ghi chú di chuyển

  • Đọc địa chỉ pool: không giả định một pool cho mỗi (config, mint0, mint1). Một cặp giờ đây có thể có một pool chính tắc cộng với một hoặc nhiều pool được phép ở các địa chỉ được lấy từ seed_index. Liệt kê các pool từ API / indexer thay vì lấy một PDA duy nhất, và lưu trữ seed_index khi bạn cần lấy lại một pool được phép.
  • Đặt các lệnh giới hạn: thêm ba tài khoản phía output vào giao dịch OpenLimitOrder của bạn, và hiển thị một thông báo rõ ràng khi NotApproved được trả về cho một tài khoản bị đóng băng.
  • Không có sự phá vỡ kích thước tài khoản hoặc bố cục: PoolState có cùng kích thước; các byte padding đã loại bỏ giờ đây giữ seed_index.

Trang được cập nhật

  • products/clmm/overview — ghi chú “What’s new” về các pool multi-permissioned và limit-order guard.
  • products/clmm/instructions — phần CreatePermissionedPool mới, CreatePermissionPda / ClosePermissionPda trong bảng lệnh và ghi chú admin-gating, và danh sách tài khoản OpenLimitOrder / điều kiện tiên quyết / lỗi được cập nhật.
  • products/clmm/accounts — Permission trong kho và phần riêng của nó, trường PoolState.seed_index, trợ giúp lấy PDA (derivePermissionedPool, derivePermission), và tham chiếu nhanh vòng đời.
  • security/admin-and-multisig — hàng permission_pda_admin mới và trình giải thích phạm vi quyền trong bảng vai trò CLMM.
  • reference/error-codes — mô tả NotApproved được mở rộng.
Được xác minh dựa trên:
  • Nguồn raydium-clmm (create_permissioned_pool.rs, admin/create_permission_pda.rs, admin/close_permission_pda.rs, states/permission.rs, states/pool.rs, limit_order/open_limit_order.rs, lib.rs).