Skip to main content
Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
Этот релиз добавляет условный путь неперевод­имости для выбранных пулов с KYC-ограниченными эмитентами. Он не блокирует каждую новую позицию, не замораживает активы пула и не препятствует владельцам позиций управлять ликвидностью. PDA пула CLMM становится freeze authority для каждого нового mint позиционного NFT, но счёт токена NFT остаётся разморожен по умолчанию. Программа замораживает его только когда позиция использует OpenPositionV2 или OpenPositionWithToken22Nft и хотя бы один базовый vault mint имеет freeze authority из жёстко закодированного списка ограниченных эмитентов.

TL;DR для интеграторов

  • Новые mint позиционных NFT имеют freeze authority, но не заморожены по умолчанию. OpenPosition, OpenPositionV2 и OpenPositionWithToken22Nft устанавливают pool_state позиции как freeze authority mint. Mint authority всё ещё удаляется после создания единственного NFT.
  • Замораживание требует пути V2 и совпадения эмитента. OpenPositionV2 и OpenPositionWithToken22Nft проверяют vault_0_mint.freeze_authority и vault_1_mint.freeze_authority. Новый счёт NFT замораживается только если хотя бы один совпадает со списком программы. Без совпадения он остаётся разморожен и передаваем.
  • Заморозка означает привязку к владельцу. SPL Token отклоняет передачу NFT и изменение владельца счёта с нативной ошибкой AccountFrozen. Увеличение/уменьшение ликвидности и сбор комиссий/вознаграждений продолжают работать, когда владелец NFT подписывает.
  • Закрытие остаётся доступным. ClosePosition обнаруживает замороженный счёт NFT, использует PDA пула для его разморозки, затем сжигает NFT и закрывает позицию атомарно.
  • Закрытие замороженной позиции требует один дополнительный счёт. Клиент должен добавить personal_position.pool_id как первый дополнительный счёт. Его отсутствие возвращает CLMM AccountLack; передача неправильного пула возвращает NotApproved.
  • Существующие позиции не затронуты. Обновление не изменяет ретроактивно mint authorities NFT или не замораживает существующие счёта токенов.
  • Нет изменений в макете состояния CLMM или объявленном списке счётов IDL. PoolState, PersonalPositionState и аргументы инструкций остаются совместимы по байтам. Требование пути закрытия передаётся через remaining_accounts.

Логика срабатывания

Программа оценивает два vault mint при открытии:
Отсутствующий freeze authority не совпадает. Одного совпадающего стороны достаточно. Список — это frozen_position_nft_authorities::IDS и содержит одну запись. Текущие ключи mainnet-beta и devnet находятся в reference/program-addresses. Проверка выполняется в общем обработчике открытия позиции только когда предоставлены счёта vault mint. Это означает:

Изменения authority позиционного NFT

До этого обновления вновь созданный классический SPL mint позиционного NFT не сохранял freeze authority. После обновления каждый новый mint позиционного NFT называет свой пул как freeze authority, включая позиции в обычных пулах. Это установление authority само по себе не замораживает счёт токена NFT; обычные и несовпадающие позиции остаются разморожены. Использование PDA пула вместо глобального ключа администратора или эмитента сужает authority до одного пула. Внешняя сторона не может подписать как PDA, и CLMM не предоставляет инструкцию общего назначения для замораживания или разморозки произвольных счётов позиций. Новый код использует authority только в двух местах:
  1. Заморозка сразу после создания mint когда проверка базового эмитента совпадает.
  2. Разморозка во время ClosePosition непосредственно перед сжиганием.

Миграция ClosePosition

Шесть объявленных счётов не изменяются. Для замороженного NFT добавьте пул как первый дополнительный счёт:
Обработчик проверяет ключ перед загрузкой PoolState, выводит семена подписи пула и выполняет:
Все шаги выполняются в одной инструкции Solana и поэтому фиксируются или откатываются вместе. Передача пула при каждом закрытии безопасна: обработчик игнорирует дополнительные счёта когда счёт NFT не заморожен.
Условный разрыв клиента. Старый клиент может успешно открыть позицию после обновления, потому что макеты счётов V2 открытия не изменились. Если эта позиция заморожена, тот же клиент может позже не закрыть её, потому что его построитель ClosePosition опускает дополнительный счёт пула. Обновите построитель закрытия перед тем как позволить пользователям открывать позиции в затронутых пулах.

Матрица совместимости

Нет новых вариантов пользовательских ошибок CLMM или числовых сдвигов. Нативная ошибка AccountFrozen SPL Token отклоняет попытки передачи или изменения владельца.

Обновлённые страницы

  • products/clmm/overview — сводка релиза и оговорка об ограниченной передаваемости.
  • products/clmm/ticks-and-positions — модель authority, триггер, возможности владельца и предупреждение о миграции закрытия.
  • products/clmm/accounts — mint позиционного NFT и поведение жизненного цикла.
  • products/clmm/instructions — постусловия открытия и путь дополнительного счёта замороженного ClosePosition.
  • products/clmm/code-demos — прямой пример закрытия Anchor и предупреждение о закреплённом SDK.
  • user-flows/add-remove-liquidity — поведение пользователя ограниченной позиции.
  • user-flows/burn-and-earn — замороженные позиции не могут передаваться в lock escrow.
  • security/oracle-and-token-risks / security/attack-vectors — границы эмитента и риска передачи.
  • reference/token-2022-support — различие между разрешением пула и хранением позиции.
  • reference/error-codes — расширенные причины AccountLack и NotApproved.
  • reference/program-addresses — ключи совпадения authority ограниченного эмитента.
  • reference/fee-comparison / reference/glossary — исключения передаваемости.
Проверено 2026-08-13 против:
  • Ветка pre-release CLMM feat/position-nft-freeze в ecb157760776f83f97507fa78c6e32cfb30d92a9.
  • Коммиты 2e95310 (блокировка NFT ограниченного эмитента) и ecb1577 (freeze authority с областью пула), сравнены с master в 51fdba2.
  • Источники программы в instructions/{open_position,open_position_v2,open_position_with_token22_nft,close_position}.rs и util/token.rs.
  • position-nft-freeze.test.ts, охватывающий обычную передаваемость, отклонение замороженной передачи/изменения владельца и потоки разморозки V2 плюс Token-2022.
Эта проверка охватывает ветку pre-release источника, а не развёртывание mainnet-beta или опубликованный релиз SDK. Подтвердите развёрнутую программу, список production restricted-authority и построитель закрытия SDK перед включением потока.