Эта страница переведена с помощью ИИ. За эталон принимается английская версия.Открыть английскую версию →
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как первый дополнительный счёт. Его отсутствие возвращает CLMMAccountLack; передача неправильного пула возвращаетNotApproved. - Существующие позиции не затронуты. Обновление не изменяет ретроактивно органы выпуска NFT или не замораживает существующие счета токенов.
- Нет изменений макета состояния CLMM или объявленного списка счетов IDL.
PoolState,PersonalPositionStateи аргументы инструкций остаются совместимыми по байтам. Требование пути закрытия передаётся черезremaining_accounts.
Логика срабатывания
Программа оценивает два vault mint при открытии:reference/program-addresses.
Проверка выполняется в общем обработчике открытия позиции только когда предоставлены счета vault mint. Это означает:
Изменения органа позиционного NFT
До этого обновления вновь созданный классический mint позиционного NFT SPL Token не сохранял орган блокировки. После обновления каждый новый mint позиционного NFT назначает свой пул органом блокировки, включая позиции в обычных пулах. Это назначение органа само по себе не блокирует счёт токена NFT; обычные и несовпадающие позиции остаются разблокированными. Использование PDA пула вместо глобального администратора или ключа эмитента сужает орган до одного пула. Внешняя сторона не может подписать как PDA, и CLMM не предоставляет инструкцию общего назначения для блокировки или разморозки произвольных счетов позиций. Новый код использует орган только в двух местах:- Блокировка сразу после выпуска, когда проверка базового эмитента совпадает.
- Разморозка во время
ClosePositionнепосредственно перед сжиганием.
Миграция ClosePosition
Шесть объявленных счетов не изменяются. Для замороженного NFT добавьте пул как первый дополнительный счёт:
PoolState, выводит семена подписи пула и выполняет:
Матрица совместимости
Не вводятся новые варианты пользовательских ошибок 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— исключения переводимости.
- Ветка 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 перед закрытием.

