Skip to main content
このページは AI による自動翻訳です。すべての内容は英語版を正とします。英語版を表示 →
このリリースは、選定された KYC 制限発行者プールに対する条件付き非転送可能パスを追加します。すべての新しいポジションをフリーズしたり、プール資産をフリーズしたり、ポジション所有者がリクイディティを管理することを防いだりするものではありません。CLMM プール PDA はすべての新しいポジション NFT ミントのフリーズ権限になりますが、NFT トークンアカウントはデフォルトではフリーズされません。プログラムは、ポジションが OpenPositionV2 または OpenPositionWithToken22Nft を使用し、かつ基礎となるボルトミントのいずれかがハードコードされた制限発行者リストからのフリーズ権限を持つ場合にのみ、それをフリーズします。

インテグレーター向け TL;DR

  • 新しいポジション NFT ミントはフリーズ権限を持ちますが、デフォルトではフリーズされません。 OpenPositionOpenPositionV2OpenPositionWithToken22Nft はポジションの pool_state をミントフリーズ権限として設定します。ミント権限は単一の NFT がミントされた後も削除されます。
  • フリーズには V2 パスと発行者マッチが必要です。 OpenPositionV2OpenPositionWithToken22Nftvault_0_mint.freeze_authorityvault_1_mint.freeze_authority を検査します。新しい NFT アカウントは、少なくとも 1 つがプログラムリストと一致する場合にのみフリーズされます。マッチがない場合、それはフリーズされたままで転送可能です。
  • フリーズは所有者にバインドされることを意味します。 SPL Token は、ネイティブ AccountFrozen エラーで NFT 転送とトークンアカウント所有者の変更を拒否します。NFT 所有者が署名する場合、リクイディティの増加・減少とフィー・報酬の収集は引き続き機能します。
  • クローズは利用可能なままです。 ClosePosition はフリーズされた NFT アカウントを検出し、プール PDA を使用してそれをシャーすると、NFT をバーンしてポジションをアトミックに閉じます。
  • フリーズされたクローズには 1 つの残りアカウントが必要です。 クライアントは personal_position.pool_id を最初の残りアカウントとして追加する必要があります。それがない場合は CLMM AccountLack を返します。間違ったプールを渡すと NotApproved を返します。
  • 既存のポジションは影響を受けません。 このアップデートは、NFT ミント権限を遡及的に変更したり、既存のトークンアカウントをフリーズしたりしません。
  • CLMM 状態レイアウトまたは宣言された IDL アカウントリストの変更はありません。 PoolStatePersonalPositionState、命令引数はバイト互換のままです。クローズパス要件は remaining_accounts を通じて実行されます。

トリガーロジック

プログラムはオープン時に 2 つのボルトミントを評価します:
フリーズ権限がない場合はマッチしません。一方の側がマッチすれば十分です。初期リストには、CLMM の Superstate アセット検出で使用される同じ発行者権限が含まれています。現在の mainnet-beta と devnet マッチキーは reference/program-addresses にあります。 チェックは、ボルトミントアカウントが提供される場合にのみ、共有オープンポジションハンドラーで実行されます。これは以下を意味します:

ポジション NFT 権限の変更

このアップデート前は、新しく作成されたクラシック SPL ポジション NFT ミントはフリーズ権限を保持していませんでした。アップデート後、すべての新しいポジション NFT ミントは、通常のプール内のポジションを含め、そのプールをフリーズ権限として指定します。この権限設定だけでは NFT トークンアカウントをフリーズしません。通常のポジションとマッチしないポジションはフリーズされたままです。 グローバル管理者または発行者キーの代わりにプール PDA を使用すると、権限を 1 つのプールに限定します。外部パーティは PDA として署名できず、CLMM は任意のポジションアカウントをフリーズまたはシャーするための汎用命令を公開していません。新しいコードは権限を 2 つの場所でのみ使用します:
  1. 基礎となる発行者チェックがマッチする場合、ミント直後にフリーズします。
  2. バーン直前の ClosePosition 中にシャーします。

ClosePosition マイグレーション

6 つの宣言されたアカウントは変わりません。フリーズされた NFT の場合、プールを最初の残りアカウントとして追加します:
ハンドラーは PoolState をロードする前にキーを検証し、プール署名者シードを導出し、以下を実行します:
すべてのステップは 1 つの 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 at ecb157760776f83f97507fa78c6e32cfb30d92a9
  • コミット 2e95310(制限発行者 NFT フリーズ)と ecb1577(プール範囲フリーズ権限)、master at 51fdba2 と比較。
  • 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 クローズビルダーを確認してからフローを有効にしてください。