本頁內容由 AI 自動翻譯,所有內容以英文版本為準。查看英文版 →
OpenPositionV2 或 OpenPositionWithToken22Nft 且至少一個底層金庫鑄幣權的凍結權限來自硬編碼的受限發行人清單時,才會凍結它。
整合者速覽
- 新頭寸 NFT 鑄幣權具有凍結權限,但預設不凍結。
OpenPosition、OpenPositionV2和OpenPositionWithToken22Nft將頭寸的pool_state設為鑄幣權凍結權限。鑄幣權在單個 NFT 鑄造後仍會被移除。 - 凍結需要 V2 路徑加發行人匹配。
OpenPositionV2和OpenPositionWithToken22Nft檢查vault_0_mint.freeze_authority和vault_1_mint.freeze_authority。只有當至少一個與程式清單相符時,新 NFT 帳戶才會被凍結。無匹配時,它保持未凍結且可轉讓。 - 凍結意味著綁定到所有者。 SPL Token 會以其原生
AccountFrozen錯誤拒絕 NFT 轉移和代幣帳戶所有者變更。當 NFT 所有者簽署時,增加/減少流動性和費用/獎勵收集繼續有效。 - 關閉仍可用。
ClosePosition偵測凍結的 NFT 帳戶,使用池 PDA 解凍它,然後原子性地燒毀 NFT 並關閉頭寸。 - 凍結關閉需要一個剩餘帳戶。 用戶端必須將
personal_position.pool_id附加為第一個剩餘帳戶。缺少它會返回 CLMMAccountLack;傳遞錯誤的池會返回NotApproved。 - 現有頭寸不受影響。 此更新不會追溯更改 NFT 鑄幣權或凍結現有代幣帳戶。
- 無 CLMM 狀態佈局或宣告 IDL 帳戶清單變更。
PoolState、PersonalPositionState和指令參數保持位元組相容。關閉路徑要求通過remaining_accounts傳達。
觸發邏輯
程式在開倉時評估兩個金庫鑄幣權:reference/program-addresses。
檢查在共享開倉處理器中執行,僅當提供金庫鑄幣權帳戶時:
頭寸 NFT 權限變更
在此更新之前,新建立的經典 SPL 頭寸 NFT 鑄幣權不保留凍結權限。更新後,每個新頭寸 NFT 鑄幣權將其池命名為凍結權限,包括普通池中的頭寸。僅此權限設定不會凍結 NFT 代幣帳戶;普通和不匹配的頭寸保持未凍結。 使用池 PDA 而非全域管理員或發行人金鑰將權限範圍限制在一個池。外部方無法簽署為 PDA,CLMM 不公開任何通用指令來凍結或解凍任意頭寸帳戶。新程式碼僅在兩個地方使用此權限:- 當底層發行人檢查匹配時,鑄造後立即凍結。
- 燒毀前在
ClosePosition期間立即解凍。
ClosePosition 遷移
六個宣告帳戶不變。對於凍結的 NFT,將池新增為第一個剩餘帳戶:
PoolState 前驗證金鑰,衍生池簽署者種子,並執行:
相容性矩陣
未引入新的 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— 擴展的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 解凍前關閉流程。

