Skip to main content
Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Dieses Release fügt einen bedingten Nicht-Transferierbarkeits-Pfad für ausgewählte KYC-beschränkte Emittenten-Pools hinzu. Es friert nicht jeden neuen Position ein, friert keine Pool-Assets ein und verhindert nicht, dass Position-Inhaber ihre Liquidität verwalten. Das CLMM-Pool-PDA wird zur Freeze-Autorität für jeden neuen Position-NFT-Mint, aber das NFT-Token-Konto bleibt standardmäßig aufgetaut. Das Programm friert es nur ein, wenn die Position OpenPositionV2 oder OpenPositionWithToken22Nft verwendet und mindestens ein zugrunde liegender Vault-Mint eine Freeze-Autorität aus der hardcodierten Liste der beschränkten Emittenten trägt.

TL;DR für Integratoren

  • Neue Position-NFT-Mints haben eine Freeze-Autorität, sind aber standardmäßig nicht eingefroren. OpenPosition, OpenPositionV2 und OpenPositionWithToken22Nft setzen den pool_state der Position als Mint-Freeze-Autorität. Die Mint-Autorität wird nach dem Prägen des einzelnen NFT immer noch entfernt.
  • Einfrieren erfordert einen V2-Pfad plus Emittenten-Übereinstimmung. OpenPositionV2 und OpenPositionWithToken22Nft prüfen vault_0_mint.freeze_authority und vault_1_mint.freeze_authority. Das neue NFT-Konto wird nur eingefroren, wenn mindestens eine mit der Programmliste übereinstimmt. Ohne Übereinstimmung bleibt es aufgetaut und transferierbar.
  • Eingefroren bedeutet an den Inhaber gebunden. SPL Token lehnt NFT-Transfers und Änderungen des Token-Konto-Inhabers mit seinem nativen AccountFrozen-Fehler ab. Liquiditätserhöhung/-verringerung und Gebühren-/Reward-Erfassung funktionieren weiterhin, wenn der NFT-Inhaber signiert.
  • Schließen bleibt verfügbar. ClosePosition erkennt ein eingefrorenes NFT-Konto, nutzt das Pool-PDA zum Auftauen, brennt dann das NFT und schließt die Position atomar.
  • Das Schließen eines eingefrorenen Kontos erfordert ein verbleibendes Konto. Der Client muss personal_position.pool_id als erstes verbleibendes Konto anhängen. Fehlt es, wird CLMM AccountLack zurückgegeben; wird das falsche Pool übergeben, wird NotApproved zurückgegeben.
  • Bestehende Positionen sind nicht betroffen. Das Update ändert nicht rückwirkend NFT-Mint-Autoritäten oder friert bestehende Token-Konten ein.
  • Keine CLMM-State-Layout- oder deklarierte IDL-Kontolistenänderung. PoolState, PersonalPositionState und Anweisungsargumente bleiben byte-kompatibel. Die Close-Pfad-Anforderung wird durch remaining_accounts übermittelt.

Trigger-Logik

Das Programm wertet die beiden Vault-Mints zum Öffnungszeitpunkt aus:
Eine fehlende Freeze-Autorität stimmt nicht überein. Eine übereinstimmende Seite ist ausreichend. Die ursprüngliche Liste enthält dieselbe Emittenten-Autorität, die von CLMMs Superstate-Asset-Erkennung verwendet wird. Die aktuellen Mainnet-Beta- und Devnet-Match-Keys befinden sich in reference/program-addresses. Die Prüfung wird im gemeinsamen Open-Position-Handler nur ausgeführt, wenn Vault-Mint-Konten bereitgestellt werden. Das bedeutet:

Änderungen der Position-NFT-Autorität

Vor diesem Update behielt ein neu erstellter klassischer SPL-Position-NFT-Mint keine Freeze-Autorität. Nach dem Update benennt jeder neue Position-NFT-Mint seinen Pool als Freeze-Autorität, einschließlich Positionen in gewöhnlichen Pools. Diese Autoritätseinstellung allein friert das NFT-Token-Konto nicht ein; gewöhnliche und nicht übereinstimmende Positionen bleiben aufgetaut. Die Verwendung des Pool-PDA statt eines globalen Admin- oder Emittenten-Keys begrenzt die Autorität auf einen Pool. Eine externe Partei kann nicht als PDA signieren, und CLMM stellt keine allgemeine Anweisung zum Einfrieren oder Auftauen beliebiger Position-Konten bereit. Der neue Code verwendet die Autorität nur an zwei Stellen:
  1. Sofort nach dem Prägen einfrieren, wenn die zugrunde liegende Emittenten-Prüfung übereinstimmt.
  2. Während ClosePosition sofort vor dem Brennen auftauen.

ClosePosition-Migration

Die sechs deklarierten Konten ändern sich nicht. Für ein eingefrorenes NFT fügen Sie den Pool als erstes verbleibendes Konto hinzu:
Der Handler prüft den Key, bevor er PoolState lädt, leitet die Pool-Signer-Seeds ab und führt aus:
Alle Schritte laufen in einer Solana-Anweisung und committen oder revertieren daher zusammen. Das Pool bei jedem Schließen zu übergeben ist sicher: Der Handler ignoriert verbleibende Konten, wenn das NFT-Konto nicht eingefroren ist.
Bedingter Client-Break. Ein älterer Client kann nach dem Upgrade erfolgreich eine Position öffnen, da die V2-Open-Konten-Layouts unverändert sind. Wenn diese Position eingefroren ist, kann derselbe Client sie später möglicherweise nicht schließen, da sein ClosePosition-Builder das verbleibende Pool-Konto auslässt. Aktualisieren Sie den Close-Builder, bevor Sie Benutzern erlauben, Positionen in betroffenen Pools zu öffnen.

Kompatibilitätsmatrix

Es werden keine neuen CLMM-Custom-Error-Varianten oder numerischen Verschiebungen eingeführt. Der native AccountFrozen-Fehler von SPL Token lehnt Transfer- oder Inhaberwechsel-Versuche ab.

Aktualisierte Seiten

  • products/clmm/overview — Release-Zusammenfassung und Caveat zur beschränkten Transferierbarkeit.
  • products/clmm/ticks-and-positions — Autoritätsmodell, Trigger, Inhaber-Fähigkeiten und Close-Migrations-Warnung.
  • products/clmm/accounts — Position-NFT-Mint und Lebenszyklusverhalten.
  • products/clmm/instructions — Open-Nachbedingungen und eingefrorener ClosePosition-Pfad für verbleibende Konten.
  • products/clmm/code-demos — direktes Anchor-Close-Beispiel und gepinnte-SDK-Warnung.
  • user-flows/add-remove-liquidity — benutzerfreundliches Verhalten bei beschränkten Positionen.
  • user-flows/burn-and-earn — eingefrorene Positionen können nicht in Lock-Escrow übertragen werden.
  • security/oracle-and-token-risks / security/attack-vectors — Emittenten- und Transfer-Risiko-Grenzen.
  • reference/token-2022-support — Unterscheidung zwischen Pool-Allowlisting und Position-Verwahrung.
  • reference/error-codes — erweiterte AccountLack- und NotApproved-Ursachen.
  • reference/program-addresses — Match-Keys für beschränkte Emittenten-Autorität.
  • reference/fee-comparison / reference/glossary — Transferierbarkeits-Ausnahmen.
Verifiziert 2026-08-13 gegen:
  • Pre-Release-CLMM-Branch feat/position-nft-freeze bei ecb157760776f83f97507fa78c6e32cfb30d92a9.
  • Commits 2e95310 (Einfrieren von NFTs mit beschränktem Emittenten) und ecb1577 (Pool-scoped Freeze-Autorität), verglichen mit master bei 51fdba2.
  • Programm-Quellen unter instructions/{open_position,open_position_v2,open_position_with_token22_nft,close_position}.rs und util/token.rs.
  • position-nft-freeze.test.ts, abdeckend gewöhnliche Transferierbarkeit, Ablehnung von eingefrorenen Transfers/Inhaberwechseln und V2-Plus-Token-2022-Auftau-vor-Close-Flows.
Diese Verifizierung deckt den Pre-Release-Source-Branch ab, nicht eine Mainnet-Beta-Bereitstellung oder veröffentlichte SDK-Version. Bestätigen Sie das bereitgestellte Programm, die Produktions-Restricted-Authority-Liste und den SDK-Close-Builder, bevor Sie den Flow aktivieren.