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

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

  • Новые mint позиционных NFT имеют орган блокировки, но не заморожены по умолчанию. OpenPosition, OpenPositionV2 и OpenPositionWithToken22Nft устанавливают pool_state позиции как орган блокировки mint. Орган выпуска по-прежнему удаляется после выпуска единственного 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.
  • Существующие позиции не затронуты. Обновление не изменяет ретроактивно органы выпуска NFT или не замораживает существующие счета токенов.
  • Нет изменений макета состояния CLMM или объявленного списка счетов IDL. PoolState, PersonalPositionState и аргументы инструкций остаются совместимыми по байтам. Требование пути закрытия передаётся через remaining_accounts.

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

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

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

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

Миграция ClosePosition

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

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

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

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

  • products/clmm/overview — сводка релиза и оговорка об ограниченной переводимости.
  • products/clmm/ticks-and-positions — модель органа, триггер, возможности владельца и предупреждение о миграции закрытия.
  • 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 — замороженные позиции не могут передаваться в блокировку условного депозита.
  • security/oracle-and-token-risks / security/attack-vectors — границы риска эмитента и передачи.
  • reference/token-2022-support — различие между разрешением пула и хранением позиции.
  • reference/error-codes — расширенные причины AccountLack и NotApproved.
  • reference/program-addresses — ключи совпадения органа ограниченного эмитента.
  • reference/fee-comparison / reference/glossary — исключения переводимости.
Проверено 2026-08-13 против:
  • Ветка CLMM перед релизом feat/position-nft-freeze в ecb157760776f83f97507fa78c6e32cfb30d92a9.
  • Коммиты 2e95310 (блокировка NFT ограниченного эмитента) и ecb1577 (орган блокировки в области пула), сравненные с 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 перед закрытием.
Эта проверка охватывает ветку источника перед релизом, а не развёртывание mainnet-beta или опубликованный релиз SDK. Подтвердите развёрнутую программу, список ограниченных органов в продакшене и построитель закрытия SDK перед включением потока.