이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
CreatePool / CreateCustomizablePool 경로는 변경되지 않습니다.
통합자를 위한 요약
- 풀 ID가 이제 권한 게이트 뒤에서 비정규적일 수 있습니다. 역사적으로
(amm_config, token_mint_0, token_mint_1)당 정확히 하나의 CLMM 풀 주소가 있었습니다 — PDA 시드가 이를 고정했습니다. 새로운 명령어인 **CreatePermissionedPool**은 클라이언트가 제공한 0이 아닌seed_index: u16을 풀 PDA 시드에 포함시키므로, 화이트리스트된 운영자는 동일 페어 및 수수료 계층에 대해 여러 풀을 각각의 주소에서 운영할 수 있습니다. 임의의 풀 주소는 특권 기능이므로, 지불자는 관리자가 부여한PermissionPDA를 보유해야 합니다. 두 가지 관리자 명령어인 **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을 참조하세요.
새로운 계정: Permission
그 존재 자체가 권한인 기능 계정입니다. 생성된 authority만 저장합니다 (패딩 포함). PDA 시드: ["permission", authority]. CreatePermissionedPool 호출 권리를 부여하며 다른 것은 없습니다 — 자금을 이동하거나, 수수료를 변경하거나, 풀을 변경할 수 없습니다. 계정 → Permission을 참조하세요.
새로운 관리자 명령어: CreatePermissionPda / ClosePermissionPda
CreatePermissionPda는 주어진permission_authority에 대한PermissionPDA를 초기화합니다.ClosePermissionPda는 이를 닫고 호출자에게 렌트를 환불하여 권한을 취소합니다. 해당 권한 하에서 이미 생성된 풀은 영향을 받지 않습니다.
admin 공개키 또는 전용 permission_pda_admin 키 (메인넷 대 데브넷에서 서로 다른 상수)를 받습니다. 관리자 키 및 멀티시그 → CLMM을 참조하세요.
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을 참조하세요.
오류 코드
새로운 오류 코드는 없습니다. 기존6000 NotApproved는 이제 동결된 입력/출력 토큰 계정, OpenLimitOrder의 스왑/지정가 주문 비활성화 경우, 그리고 권한 명령어의 “서명자가 admin 또는 permission_pda_admin 중 하나가 아님” 경우를 추가로 포함합니다. 오류 코드 테이블 및 번호 매김은 2026-05-18 릴리스와 달리 변경되지 않습니다. 오류 코드 → CLMM을 참조하세요.
마이그레이션 노트
- 풀 주소 읽기:
(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).

