> ## 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-07-30 — CLMM: 권한 제어 다중 풀 및 지정가 주문 동결 계정 보호

> 두 가지 CLMM 프로그램 업데이트: CreatePermissionedPool은 화이트리스트 권한이 풀 PDA에 포함된 seed_index를 통해 동일 페어당 여러 풀을 생성할 수 있게 하며, OpenLimitOrder는 입력 또는 출력 토큰 계정이 동결된 주문을 거부하기 위해 출력측 계정을 추가로 받습니다.

<Info>
  **이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.**

  [영문판 보기 →](/reference/changelog/2026-07-30-clmm-permissioned-pools)
</Info>

이 릴리스는 두 가지 CLMM 프로그램 변경 사항을 문서화합니다. 둘 다 추가적이며 하위 호환성을 유지합니다. 기존 풀, 포지션, 열린 주문은 영향을 받지 않으며, 기존 `CreatePool` / `CreateCustomizablePool` 경로는 변경되지 않습니다.

## 통합자를 위한 요약

* **풀 ID가 이제 권한 게이트 뒤에서 비정규적일 수 있습니다.** 역사적으로 `(amm_config, token_mint_0, token_mint_1)` 당 정확히 하나의 CLMM 풀 주소가 있었습니다 — PDA 시드가 이를 고정했습니다. 새로운 명령어인 \*\*`CreatePermissionedPool`\*\*은 클라이언트가 제공한 0이 아닌 `seed_index: u16`을 풀 PDA 시드에 포함시키므로, 화이트리스트된 운영자는 **동일 페어 및 수수료 계층에 대해 여러 풀을 각각의 주소에서 운영**할 수 있습니다. 임의의 풀 주소는 특권 기능이므로, 지불자는 관리자가 부여한 **`Permission`** PDA를 보유해야 합니다. 두 가지 관리자 명령어인 \*\*`CreatePermissionPda`\*\*와 \*\*`ClosePermissionPda`\*\*가 이러한 권한을 관리합니다.
* **`OpenLimitOrder`가 이제 출력측을 검증합니다.** 명령어는 세 개의 추가 계정 — `output_token_account`, `output_vault`, `output_vault_mint` — 을 받으며, 소유자의 **입력 또는 출력** 토큰 계정이 동결되어 있으면 `NotApproved`로 주문을 거부합니다. 이는 최종 체결이 전달될 수 있음을 보장하며, 허용 목록 / 기본 동결 Token-2022 민트(권한 제어 토큰)에 중요합니다. 이전 단일측 계정 목록에 대해 구축된 클라이언트는 세 개의 출력 계정을 추가해야 합니다.

## 프로그램에서 변경된 사항

### 새로운 명령어: `CreatePermissionedPool`

`CreateCustomizablePool`과 동일한 형태 및 매개변수 (동일한 `CreateCustomizableParams`를 받으므로 단일측 수수료 및 동적 수수료 옵트인이 가능함), 추가로:

* `seed_index: u16` 인수로, **0이 아니어야 합니다**. 풀 PDA 시드에 (리틀 엔디안으로) 추가됩니다:
  `["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()]`.
* `permission` 계정: PDA `["permission", payer]`. Anchor는 존재하지 않거나 프로그램이 소유하지 않으면 호출을 거부합니다 — 그 존재 자체가 인증입니다.
* `pool_state.owner`로 기록되는 `pool_creator` 계정으로, 수수료를 지불하는 `payer`와 다를 수 있습니다.

`seed_index = 0`은 레거시 풀을 위해 예약되어 있습니다: 이들의 경우 시드 구성 요소가 비어있게 축소되어 기존 4시드 주소를 재현하므로, 기존 풀 주소는 변경되지 않습니다.

[명령어 → CreatePermissionedPool](/ko/products/clmm/instructions)을 참조하세요.

### 새로운 계정: `Permission`

그 존재 자체가 **권한**인 기능 계정입니다. 생성된 `authority`만 저장합니다 (패딩 포함). PDA 시드: `["permission", authority]`. `CreatePermissionedPool` 호출 권리를 부여하며 다른 것은 없습니다 — 자금을 이동하거나, 수수료를 변경하거나, 풀을 변경할 수 없습니다. [계정 → Permission](/ko/products/clmm/accounts)을 참조하세요.

### 새로운 관리자 명령어: `CreatePermissionPda` / `ClosePermissionPda`

* `CreatePermissionPda`는 주어진 `permission_authority`에 대한 `Permission` PDA를 초기화합니다.
* `ClosePermissionPda`는 이를 닫고 호출자에게 렌트를 환불하여 권한을 취소합니다. 해당 권한 하에서 이미 생성된 풀은 영향을 받지 않습니다.

둘 다 프로그램 `admin` 공개키 **또는** 전용 `permission_pda_admin` 키 (메인넷 대 데브넷에서 서로 다른 상수)를 받습니다. [관리자 키 및 멀티시그 → CLMM](/ko/security/admin-and-multisig)을 참조하세요.

### `PoolState`: `seed_index` 필드

두 바이트가 기존 패딩 영역에서 분리되었습니다 (`padding: [u8; 6]` → `seed_index: [u8; 2]` + `padding: [u8; 4]`) `fee_on` 바로 뒤에. **총 계정 크기는 변경되지 않으며, 인덱서 마이그레이션이 필요하지 않습니다.** `CreatePool` / `CreateCustomizablePool`을 통해 생성된 풀의 경우 `seed_index`는 `[0, 0]`입니다. 권한 제어 풀의 경우 생성자가 선택한 인덱스를 포함하며 오프체인에서 풀 주소를 다시 도출하는 데 필요합니다.

### `OpenLimitOrder`: 출력측 계정 및 동결 계정 보호

`OpenLimitOrder` 계정 목록에 `output_token_account`, `output_vault`, `output_vault_mint`가 추가됩니다. 이들은 검증에만 사용됩니다 — 열기 시 출력이 차감되지 않습니다. 핸들러는 이제 입력 또는 출력 토큰 계정이 **모두** 동결되지 않았음을 요구하며, 그렇지 않으면 `NotApproved`를 반환합니다 (동일한 코드는 풀이 스왑 또는 지정가 주문을 비활성화했을 때 이미 반환됨). 이는 체결을 받을 수 없는 토큰 계정에 대해 주문을 열 수 있는 간격을 닫습니다 (예: 기본 동결 Token-2022 민트에 대해 아직 해제되지 않은 계정).

[명령어 → OpenLimitOrder](/ko/products/clmm/instructions)을 참조하세요.

## 오류 코드

새로운 오류 코드는 없습니다. 기존 `6000 NotApproved`는 이제 동결된 입력/출력 토큰 계정, `OpenLimitOrder`의 스왑/지정가 주문 비활성화 경우, 그리고 권한 명령어의 "서명자가 `admin` 또는 `permission_pda_admin` 중 하나가 아님" 경우를 추가로 포함합니다. 오류 코드 테이블 및 번호 매김은 [2026-05-18 릴리스](/ko/reference/changelog/2026-05-18-clmm-limit-orders)와 달리 변경되지 않습니다. [오류 코드 → CLMM](/ko/reference/error-codes)을 참조하세요.

## 마이그레이션 노트

* **풀 주소 읽기**: `(config, mint0, mint1)` 당 하나의 풀이라고 가정하지 마세요. 페어는 이제 정규 풀과 `seed_index` 도출 주소의 하나 이상의 권한 제어 풀을 가질 수 있습니다. API / 인덱서에서 풀을 열거하고 단일 PDA를 도출하지 마세요. 권한 제어 풀을 다시 도출해야 할 때 `seed_index`를 저장하세요.
* **지정가 주문 배치**: `OpenLimitOrder` 트랜잭션에 세 개의 출력측 계정을 추가하고, 동결된 계정에 대해 `NotApproved`가 반환될 때 명확한 메시지를 표시하세요.
* **계정 크기 또는 레이아웃 변경 없음**: `PoolState`는 동일한 크기입니다. 폐기된 패딩 바이트는 이제 `seed_index`를 보유합니다.

## 업데이트된 페이지

* `products/clmm/overview` — 권한 제어 다중 풀 및 지정가 주문 보호에 대한 "새로운 기능" 노트.
* `products/clmm/instructions` — 새로운 `CreatePermissionedPool` 섹션, 명령어 테이블 및 관리자 게이팅 노트의 `CreatePermissionPda` / `ClosePermissionPda`, 그리고 업데이트된 `OpenLimitOrder` 계정 목록 / 전제 조건 / 오류.
* `products/clmm/accounts` — 인벤토리의 `Permission` 및 자체 섹션, `PoolState.seed_index` 필드, PDA 도출 헬퍼 (`derivePermissionedPool`, `derivePermission`), 그리고 라이프사이클 빠른 참조.
* `security/admin-and-multisig` — CLMM 역할 테이블의 새로운 `permission_pda_admin` 행 및 권한 범위 설명자.
* `reference/error-codes` — 확대된 `NotApproved` 설명.

**검증 대상**:

* `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`).
