> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026-10-22 — CLMM: CreateCustomizablePoolV2 mở khả năng tạo multi-pool cho tất cả mọi người

> CreatePermissionedPool được đổi tên thành CreateCustomizablePoolV2 và cổng Permission PDA của nó bị xóa, vì vậy bất kỳ người trả phí nào cũng có thể tạo các pool CLMM bổ sung cho cùng một cặp và mức phí tại địa chỉ được lấy từ seed_index. Tài khoản Permission và các hướng dẫn quản trị CreatePermissionPda / ClosePermissionPda bị xóa. Thay đổi lớn đối với các client gọi hướng dẫn cũ; không có bố cục tài khoản hoặc mã lỗi nào thay đổi.

<Info>
  **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 →](/reference/changelog/2026-10-22-clmm-customizable-pool-v2)
</Info>

Mục này bao gồm nâng cấp chương trình CLMM được lên lịch cho **2026-10-22**. Nó đã được xác minh so với nhánh `feat/create-customizable-pool-v2` của `raydium-clmm` (head `18f5db1`) trước khi triển khai. Hãy xác nhận chương trình được triển khai trước khi dựa vào tên hướng dẫn mới hoặc danh sách tài khoản.

Bản phát hành [2026-07-30](/vi/reference/changelog/2026-07-30-clmm-permissioned-pools) đã thêm `CreatePermissionedPool`, cho phép người gọi tạo nhiều hơn một pool cho cùng một `(amm_config, token_mint_0, token_mint_1)` bằng cách gấp `seed_index` vào pool PDA. Nó bị kiểm soát: người trả phí phải giữ một `Permission` PDA được cấp bởi quản trị viên.

Bản phát hành này loại bỏ cổng đó. Hướng dẫn được đổi tên thành **`CreateCustomizablePoolV2`**, bất kỳ ai cũng có thể gọi nó, và toàn bộ cơ chế quyền hạn bị xóa khỏi chương trình. Toán học pool, swap, thanh khoản, lệnh giới hạn, phí và phần thưởng không thay đổi.

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

* **`CreatePermissionedPool` → `CreateCustomizablePoolV2`.** Các đối số giống nhau (`CreateCustomizableParams`, `seed_index: u16`) và cách lấy địa chỉ pool giống nhau. Bộ phân biệt Anchor thay đổi theo tên, vì vậy giao dịch được xây dựng dựa trên hướng dẫn cũ sẽ thất bại sau khi nâng cấp. Xây dựng lại nó dựa trên IDL mới.
* **Tài khoản `permission` không còn trong danh sách tài khoản.** Nó nằm ở vị trí 3, vì vậy mọi tài khoản từ `amm_config` trở đi sẽ dịch chuyển lên một vị trí. Xem [danh sách tài khoản mới](#createcustomizablepoolv2-account-list).
* **Tạo multi-pool hiện không cần phép.** Bất kỳ người trả phí nào cũng có thể tạo các pool bổ sung cho một cặp và mức phí với `seed_index` khác không. Coi một cặp là có khả năng có nhiều pool CLMM cho mỗi mức phí, được tạo bởi bất kỳ ai.
* **`Permission`, `CreatePermissionPda` và `ClosePermissionPda` bị xóa.** Chương trình và IDL không còn biết loại `Permission`.
* **Làm mới IDL của bạn.** Nó loại bỏ hai hướng dẫn và một loại tài khoản, cho 37 hướng dẫn và 53 lỗi.
* **Không có bố cục tài khoản nào thay đổi và không có mã lỗi nào được thêm.** `PoolState.seed_index` giữ nguyên offset của nó; chỉ ý nghĩa của nó mở rộng từ "pool được phép" thành "bất kỳ pool V2 nào".

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

### `CreatePermissionedPool` được đổi tên thành `CreateCustomizablePoolV2`

Trình xử lý là cùng một mã dưới một tên mới. Nó vẫn:

* yêu cầu `seed_index > 0`;
* lấy pool tại `["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()]`;
* lấy cùng `CreateCustomizableParams` như `CreateCustomizablePool`, vì vậy phí một chiều (`collect_fee_on`) và tùy chọn phí động hoạt động theo cách tương tự;
* áp dụng các kiểm tra hỗ trợ mint Token-2022 giống như `CreatePool`;
* ghi `pool_creator` dưới dạng `pool_state.owner` và ghi `seed_index` vào `PoolState`;
* phát ra `PoolCreatedEvent`.

Kiểm tra PDA `Permission` là hành vi duy nhất bị xóa.

| | Bộ phân biệt cũ | Bộ phân biệt mới |
| - | - | - |
| Hướng dẫn | `create_permissioned_pool` → `[36, 243, 179, 35, 42, 239, 53, 229]` | `create_customizable_pool_v2` → `[29, 172, 106, 188, 103, 45, 70, 100]` |

### Danh sách tài khoản `CreateCustomizablePoolV2`

| # | Tài khoản | W | S | Ghi chú |
| - | - | - | - | - |
| 1 | `payer` | W | S | Trả tiền thuê cho mọi tài khoản mới. Bất kỳ ví nào. |
| 2 | `pool_creator` | | | Được ghi vào `pool_state.owner`. Không phải người ký và không được kiểm tra. |
| 3 | `amm_config` | | | Mức phí mà pool liên kết. |
| 4 | `pool_state` | W | | `init` tại PDA được lấy từ `seed_index`. |
| 5 | `token_mint_0` | | | Phải sắp xếp trước `token_mint_1`. |
| 6 | `token_mint_1` | | | |
| 7 | `token_vault_0` | W | | PDA `["pool_vault", pool_state, token_mint_0]`. |
| 8 | `token_vault_1` | W | | PDA `["pool_vault", pool_state, token_mint_1]`. |
| 9 | `observation_state` | W | | PDA `["observation", pool_state]`. |
| 10 | `tick_array_bitmap` | W | | PDA `["pool_tick_array_bitmap_extension", pool_state]`. |
| 11 | `token_program_0` | | | Chương trình sở hữu `token_mint_0`. |
| 12 | `token_program_1` | | | Chương trình sở hữu `token_mint_1`. |
| 13 | `system_program` | | | |
| 14 | `rent` | | | |

`remaining_accounts` không thay đổi: các PDA đăng ký hỗ trợ mint khi một mint Token-2022 cần chúng, và `DynamicFeeConfig` **cuối cùng** khi `enable_dynamic_fee = true`.

<Warning>
  `pool_creator` không được xác thực. Bất kỳ người trả phí nào cũng có thể ghi bất kỳ địa chỉ nào vào `pool_state.owner`. Địa chỉ đó có quyền gọi `InitializeReward` trên pool, nhưng nó không thể được sử dụng làm bằng chứng về người tạo nó. Đừng xếp hạng, gắn nhãn hoặc tin tưởng một pool V2 dựa trên trường `owner` của nó.
</Warning>

### Bị xóa: `Permission`, `CreatePermissionPda`, `ClosePermissionPda`

* Loại tài khoản `Permission` (`["permission", authority]`, 280 byte) bị xóa khỏi chương trình.
* `CreatePermissionPda` và `ClosePermissionPda` bị xóa, cùng với khóa `permission_pda_admin` chuyên dụng có thể ký chúng.
* Các PDA Permission được tạo trước khi nâng cấp vẫn nằm trên chuỗi. Chương trình không còn đọc chúng và không còn có hướng dẫn nào để đóng chúng.

## Mã lỗi

Không thay đổi. `6000`–`6052` giữ nguyên số của chúng. `NotApproved` (`6000`) không còn có trường hợp "người ký không phải là `admin` cũng không phải `permission_pda_admin`", vì những hướng dẫn đó đã biến mất.

## Ghi chú di chuyển

* **Những người tạo pool.** Chuyển từ `CreatePermissionedPool` sang `CreateCustomizablePoolV2`, loại bỏ tài khoản `permission`, và dịch chuyển các tài khoản còn lại lên một vị trí. Bạn không còn cần cấp phép từ quản trị viên.
* **Indexer và router.** Lập chỉ mục các pool CLMM từ `PoolCreatedEvent` hoặc bằng cách quét các tài khoản `PoolState`, không phải bằng cách lấy PDA bốn seed. Lưu trữ `seed_index` cho bất kỳ pool nào có giá trị khác không, vì bạn cần nó để lấy lại địa chỉ. Mong đợi nhiều pool không chính tắc hơn bây giờ mà bất kỳ ai cũng có thể tạo chúng, và đừng giả định pool chính tắc là sâu nhất.
* **UI.** Một cặp và mức phí có thể có nhiều pool với các giá bắt đầu khác nhau. Hiển thị thanh khoản và địa chỉ pool, và đừng trình bày một pool là chính thức vì `owner` của nó.
* **Người tiêu dùng IDL.** Xóa bất kỳ mã giải mã hoặc mã client nào cho `Permission`, `CreatePermissionPda` và `ClosePermissionPda`.

## Những gì không thay đổi

* **Mọi bố cục tài khoản**, bao gồm `PoolState` (trường `seed_index` và offset của nó giống nhau).
* **`CreatePool` và `CreateCustomizablePool`.** Chúng vẫn tạo pool chính tắc duy nhất cho mỗi cặp và mức, với `seed_index = [0, 0]`.
* **Các pool được tạo thông qua `CreatePermissionedPool` trước khi nâng cấp.** Địa chỉ, trạng thái và `seed_index` của chúng không thay đổi.
* **Mã lỗi, hành vi swap, thanh khoản, phí, phí động, phần thưởng và lệnh giới hạn.**
* **ID chương trình.**

## Các trang được cập nhật

* `products/clmm/instructions`: biểu ngữ nâng cấp; hàng danh mục và kiểm soát quản trị; phần `CreateCustomizablePoolV2` với danh sách tài khoản mới.
* `products/clmm/accounts`: `Permission` bị xóa khỏi danh mục và được ghi lại là đã ngừng hoạt động; mô tả `seed_index`; trình trợ giúp PDA được đổi tên thành `deriveCustomizablePoolV2`; hàng vòng đời.
* `products/clmm/overview`: ghi chú "Có gì mới".
* `security/admin-and-multisig`: vai trò `permission_pda_admin` bị xóa khỏi bảng CLMM.
* `reference/error-codes`: mô tả `NotApproved`.
* `reference/token-2022-support`: đường dẫn tạo pool CLMM.
* `sdk-api/anchor-idl`: số lượng hướng dẫn CLMM.
* `protocol-overview/versions-and-migration`: dấu đầu dòng lịch sử nâng cấp CLMM.

**Được xác minh dựa trên**: nhánh `raydium-clmm` `feat/create-customizable-pool-v2` (`18f5db1`): `instructions/create_customizable_pool_v2.rs`, `instructions/mod.rs`, `instructions/admin/mod.rs`, `states/mod.rs`, `states/pool.rs`, `lib.rs`, và các tệp đã xóa `admin/create_permission_pda.rs`, `admin/close_permission_pda.rs`, `states/permission.rs`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.