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.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ộtseed_index: u16do 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ộtPermissionPDA được cấp bởi quản trị viên. Hai lệnh quản trị viên,CreatePermissionPdavàClosePermissionPda, quản lý các khoản cấp đó. OpenLimitOrdergiờ đâ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ớiNotApprovednế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ớipayertrả 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
CreatePermissionPdakhởi tạo mộtPermissionPDA cho mộtpermission_authoritynhấ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.
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_indexkhi 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
OpenLimitOrdercủa bạn, và hiển thị một thông báo rõ ràng khiNotApprovedđượ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:
PoolStatecó 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ầnCreatePermissionedPoolmới,CreatePermissionPda/ClosePermissionPdatrong bảng lệnh và ghi chú admin-gating, và danh sách tài khoảnOpenLimitOrder/ điều kiện tiên quyết / lỗi được cập nhật.products/clmm/accounts—Permissiontrong kho và phần riêng của nó, trườngPoolState.seed_index, trợ giúp lấy PDA (derivePermissionedPool,derivePermission), và tham chiếu nhanh vòng đời.security/admin-and-multisig— hàngpermission_pda_adminmớ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.
- 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).

