Skip to main content
本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
本次發佈為精選 KYC 受限發行人池新增了有條件的不可轉讓路徑。它不會凍結每個新位置、凍結池資產或阻止位置所有者管理流動性。CLMM 池 PDA 成為每個新位置 NFT 鑄幣權的凍結權限,但 NFT 代幣帳戶預設保持未凍結狀態。程式只在位置使用 OpenPositionV2OpenPositionWithToken22Nft 且至少一個底層金庫鑄幣權的凍結權限來自硬編碼受限發行人清單時,才會凍結它。

整合者速覽

  • 新位置 NFT 鑄幣權具有凍結權限,但預設不凍結。 OpenPositionOpenPositionV2OpenPositionWithToken22Nft 將位置的 pool_state 設為鑄幣權凍結權限。鑄幣權在單個 NFT 鑄造後仍會被移除。
  • 凍結需要 V2 路徑加發行人匹配。 OpenPositionV2OpenPositionWithToken22Nft 檢查 vault_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 帳戶清單變更。 PoolStatePersonalPositionState 和指令參數保持位元組相容。關閉路徑要求通過 remaining_accounts 傳達。

觸發邏輯

程式在開倉時評估兩個金庫鑄幣權:
缺少凍結權限不匹配。一側匹配即可。清單為 frozen_position_nft_authorities::IDS,包含單個條目。目前 mainnet-beta 和 devnet 匹配鍵位於 reference/program-addresses 檢查在共享開倉處理器中執行,僅當提供金庫鑄幣權帳戶時。這意味著:

位置 NFT 權限變更

在此更新之前,新建立的經典 SPL 位置 NFT 鑄幣權不保留凍結權限。更新後,每個新位置 NFT 鑄幣權將其池命名為凍結權限,包括普通池中的位置。僅此權限設定不會凍結 NFT 代幣帳戶;普通和不匹配的位置保持未凍結。 使用池 PDA 而非全域管理員或發行人鍵將權限限制在一個池。外部方無法簽署為 PDA,CLMM 不公開任何通用指令來凍結或解凍任意位置帳戶。新程式碼僅在兩個地方使用此權限:
  1. 當底層發行人檢查匹配時,鑄造後立即凍結。
  2. ClosePosition 期間燒毀前立即解凍。

ClosePosition 遷移

六個宣告帳戶不變。對於凍結的 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,提交 ecb157760776f83f97507fa78c6e32cfb30d92a9
  • 提交 2e95310(受限發行人 NFT 凍結)和 ecb1577(池範圍凍結權限),與 master51fdba2 比較。
  • 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 關閉建構器。