Skip to main content
이 페이지는 AI 자동 번역입니다. 모든 내용은 영문판을 기준으로 합니다.영문판 보기 →
이 릴리스는 선택된 KYC 제한 발행자 풀에 대한 조건부 비양도성 경로를 추가합니다. 모든 새 포지션을 동결하거나, 풀 자산을 동결하거나, 포지션 소유자가 유동성을 관리하는 것을 방지하지 않습니다. CLMM 풀 PDA는 모든 새 포지션 NFT 민트의 동결 권한이 되지만, NFT 토큰 계정은 기본적으로 동결되지 않은 상태로 유지됩니다. 프로그램은 포지션이 OpenPositionV2 또는 OpenPositionWithToken22Nft를 사용하고 기본 볼트 민트 중 하나가 하드코딩된 제한 발행자 목록의 동결 권한을 가질 때만 동결합니다.

통합자를 위한 요약

  • 새 포지션 NFT 민트는 동결 권한을 가지지만 기본적으로 동결되지 않습니다. OpenPosition, OpenPositionV2, OpenPositionWithToken22Nft는 포지션의 pool_state를 민트 동결 권한으로 설정합니다. 민트 권한은 단일 NFT가 민트된 후에도 제거됩니다.
  • 동결은 V2 경로와 발행자 일치가 필요합니다. OpenPositionV2OpenPositionWithToken22Nftvault_0_mint.freeze_authorityvault_1_mint.freeze_authority를 검사합니다. 새 NFT 계정은 최소 하나가 프로그램 목록과 일치할 때만 동결됩니다. 일치하지 않으면 동결되지 않은 상태로 유지되어 양도 가능합니다.
  • 동결은 소유자에게 바인딩됨을 의미합니다. SPL Token은 네이티브 AccountFrozen 오류로 NFT 전송 및 토큰 계정 소유자 변경을 거부합니다. NFT 소유자가 서명할 때 유동성 증가/감소 및 수수료/보상 수집은 계속 작동합니다.
  • 클로즈는 계속 사용 가능합니다. ClosePosition은 동결된 NFT 계정을 감지하고, 풀 PDA를 사용하여 해제한 다음, NFT를 소각하고 포지션을 원자적으로 닫습니다.
  • 동결된 클로즈는 하나의 남은 계정이 필요합니다. 클라이언트는 personal_position.pool_id를 첫 번째 남은 계정으로 추가해야 합니다. 누락되면 CLMM AccountLack을 반환하고, 잘못된 풀을 전달하면 NotApproved를 반환합니다.
  • 기존 포지션은 영향을 받지 않습니다. 업데이트는 NFT 민트 권한을 소급 적용하거나 기존 토큰 계정을 동결하지 않습니다.
  • CLMM 상태 레이아웃 또는 선언된 IDL 계정 목록 변경 없음. PoolState, PersonalPositionState, 명령 인수는 바이트 호환성을 유지합니다. 클로즈 경로 요구 사항은 remaining_accounts를 통해 전달됩니다.

트리거 로직

프로그램은 오픈 시간에 두 개의 볼트 민트를 평가합니다:
누락된 동결 권한은 일치하지 않습니다. 한쪽이 일치하면 충분합니다. 초기 목록에는 CLMM의 Superstate 자산 감지에 사용되는 동일한 발행자 권한이 포함됩니다. 현재 mainnet-beta 및 devnet 일치 키는 reference/program-addresses에 있습니다. 검사는 볼트 민트 계정이 제공될 때만 공유 오픈 포지션 핸들러에서 실행됩니다. 이는 다음을 의미합니다:

포지션 NFT 권한 변경

이 업데이트 이전에는 새로 생성된 클래식 SPL 포지션 NFT 민트가 동결 권한을 유지하지 않았습니다. 업데이트 후에는 모든 새 포지션 NFT 민트가 일반 풀의 포지션을 포함하여 풀을 동결 권한으로 지정합니다. 이 권한 설정만으로는 NFT 토큰 계정을 동결하지 않으며, 일반 및 비일치 포지션은 동결되지 않은 상태로 유지됩니다. 풀 PDA를 글로벌 관리자 또는 발행자 키 대신 사용하면 권한을 한 풀로 제한합니다. 외부 당사자는 PDA로 서명할 수 없으며, CLMM은 임의의 포지션 계정을 동결하거나 해제하는 범용 명령을 노출하지 않습니다. 새 코드는 권한을 두 곳에서만 사용합니다:
  1. 기본 발행자 검사가 일치할 때 민트 직후 동결합니다.
  2. 소각 직전 ClosePosition 중에 해제합니다.

ClosePosition 마이그레이션

선언된 6개 계정은 변경되지 않습니다. 동결된 NFT의 경우 풀을 첫 번째 남은 계정으로 추가합니다:
핸들러는 PoolState를 로드하기 전에 키를 확인하고, 풀 서명자 시드를 파생하며, 다음을 수행합니다:
모든 단계는 하나의 Solana 명령에서 실행되므로 함께 커밋되거나 롤백됩니다. 모든 클로즈에서 풀을 전달하는 것은 안전합니다: NFT 계정이 동결되지 않으면 핸들러는 남은 계정을 무시합니다.
조건부 클라이언트 중단. 이전 클라이언트는 업그레이드 후 포지션을 성공적으로 열 수 있습니다. V2 오픈 계정 레이아웃이 변경되지 않았기 때문입니다. 해당 포지션이 동결되면, 동일한 클라이언트는 나중에 ClosePosition 빌더가 풀 남은 계정을 생략하기 때문에 닫기에 실패할 수 있습니다. 영향을 받는 풀에서 사용자가 포지션을 열 수 있도록 허용하기 전에 클로즈 빌더를 업데이트하세요.

호환성 매트릭스

새로운 CLMM 커스텀 오류 변형 또는 숫자 시프트는 도입되지 않습니다. SPL Token의 네이티브 AccountFrozen 오류는 전송 또는 소유자 변경 시도를 거부합니다.

업데이트된 페이지

  • products/clmm/overview — 릴리스 요약 및 제한된 양도성 주의 사항.
  • products/clmm/ticks-and-positions — 권한 모델, 트리거, 소유자 기능, 클로즈 마이그레이션 경고.
  • products/clmm/accounts — 포지션 NFT 민트 및 라이프사이클 동작.
  • products/clmm/instructions — 오픈 사후 조건 및 동결된 ClosePosition 남은 계정 경로.
  • products/clmm/code-demos — 직접 Anchor 클로즈 예제 및 고정 SDK 경고.
  • user-flows/add-remove-liquidity — 사용자 대면 제한 포지션 동작.
  • user-flows/burn-and-earn — 동결된 포지션은 락 에스크로우로 전송할 수 없습니다.
  • security/oracle-and-token-risks / security/attack-vectors — 발행자 및 전송 위험 경계.
  • reference/token-2022-support — 풀 허용 목록과 포지션 보관의 구분.
  • reference/error-codes — 확장된 AccountLackNotApproved 원인.
  • reference/program-addresses — 제한 발행자 권한 일치 키.
  • reference/fee-comparison / reference/glossary — 양도성 예외.
2026-08-13에 검증됨:
  • 사전 릴리스 CLMM 브랜치 feat/position-nft-freeze at ecb157760776f83f97507fa78c6e32cfb30d92a9.
  • 커밋 2e95310 (제한 발행자 NFT 동결) 및 ecb1577 (풀 범위 동결 권한), master at 51fdba2와 비교.
  • instructions/{open_position,open_position_v2,open_position_with_token22_nft,close_position}.rsutil/token.rs의 프로그램 소스.
  • position-nft-freeze.test.ts, 일반 양도성, 동결된 전송/소유자 변경 거부, V2 및 Token-2022 해제 전 클로즈 흐름을 다룹니다.
이 검증은 사전 릴리스 소스 브랜치를 다루며, mainnet-beta 배포 또는 게시된 SDK 릴리스가 아닙니다. 배포된 프로그램, 프로덕션 제한 권한 목록, 흐름을 활성화하기 전에 SDK 클로즈 빌더를 확인하세요.