> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026-07-30 — CLMM: Permissioned Multi-Pools und Limit-Order-Frozen-Account-Guard

> Zwei CLMM-Programm-Updates: CreatePermissionedPool ermöglicht einer whitelisteten Autorität, mehrere Pools pro Paar über einen seed_index zu erstellen, der in die Pool-PDA gefaltet wird, und OpenLimitOrder akzeptiert nun die Output-Seiten-Konten, um Aufträge mit einem gefrorenen Input- oder Output-Token-Konto abzulehnen.

<Info>
  **Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.**

  [Englische Version ansehen →](/reference/changelog/2026-07-30-clmm-permissioned-pools)
</Info>

<Info>
  Ein Dokumentations-Changelog-Eintrag. Für den Index aller Updates siehe [`reference/changelog`](/de/reference/changelog). Für die historische Zeitleiste des Protokolls siehe [`introduction/history-and-milestones`](/de/introduction/history-and-milestones).
</Info>

Dieses Release dokumentiert zwei CLMM-Programm-Änderungen. Beide sind additiv und rückwärtskompatibel: Bestehende Pools, Positionen und offene Aufträge sind nicht betroffen, und die klassischen `CreatePool`- / `CreateCustomizablePool`-Pfade bleiben unverändert.

## TL;DR für Integratoren

* **Pool-IDs können nun nicht-kanonisch sein und hinter einem Permission-Gate stehen.** Historisch gab es genau eine CLMM-Pool-Adresse pro `(amm_config, token_mint_0, token_mint_1)` — die PDA-Seeds pinten sie fest. Eine neue Instruktion, **`CreatePermissionedPool`**, faltet einen vom Client bereitgestellten nicht-null `seed_index: u16` in die Pool-PDA-Seeds, sodass ein whitelisteter Operator **mehrere Pools für das gleiche Paar und die gleiche Gebührenebene** einrichten kann, jeweils unter seiner eigenen Adresse. Da beliebige Pool-Adressen eine privilegierte Fähigkeit sind, muss der Zahler eine **`Permission`**-PDA halten, die vom Admin gewährt wird. Zwei Admin-Instruktionen, **`CreatePermissionPda`** und **`ClosePermissionPda`**, verwalten diese Genehmigungen.
* **`OpenLimitOrder` validiert nun die Output-Seite.** Die Instruktion akzeptiert drei zusätzliche Konten — `output_token_account`, `output_vault`, `output_vault_mint` — und lehnt den Auftrag mit `NotApproved` ab, wenn das Konto des Eigentümers ein **gefrorenes Input- oder Output**-Token-Konto ist. Dies garantiert, dass die eventuelle Ausführung geliefert werden kann, was für Allow-List- / Default-Frozen-Token-2022-Mints (permissioned tokens) wichtig ist. Clients, die gegen die alte einseitige Kontoliste erstellt wurden, müssen die drei Output-Konten hinzufügen.

## Was sich im Programm geändert hat

### Neue Instruktion: `CreatePermissionedPool`

Gleiche Form und Parameter wie `CreateCustomizablePool` (sie akzeptiert die gleichen `CreateCustomizableParams`, sodass einseitige Gebühren und das Dynamic-Fee-Opt-in verfügbar sind), plus:

* Ein `seed_index: u16`-Argument, das **nicht null sein darf**. Es wird (Little-Endian) an die Pool-PDA-Seeds angehängt:
  `["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()]`.
* Ein `permission`-Konto: die PDA `["permission", payer]`. Anchor lehnt den Aufruf ab, wenn er nicht existiert oder nicht vom Programm besessen wird — seine bloße Existenz ist die Autorisierung.
* Ein `pool_creator`-Konto, das als `pool_state.owner` aufgezeichnet wird und sich vom gebührenzahlenden `payer` unterscheiden kann.

`seed_index = 0` bleibt für Legacy-Pools reserviert: Für diese kollabiert die Seed-Komponente zu leer, wodurch die klassische Vier-Seed-Adresse reproduziert wird, sodass sich keine bestehende Pool-Adresse ändert.

Siehe [Instructions → CreatePermissionedPool](/de/products/clmm/instructions).

### Neues Konto: `Permission`

Ein Capability-Konto, dessen Existenz **die** Genehmigung ist. Es speichert nur die `authority`, für die es erstellt wurde (plus Padding). PDA-Seeds: `["permission", authority]`. Es verleiht das Recht, `CreatePermissionedPool` aufzurufen und nichts anderes — es kann keine Gelder bewegen, Gebühren ändern oder einen Pool mutieren. Siehe [Accounts → Permission](/de/products/clmm/accounts).

### Neue Admin-Instruktionen: `CreatePermissionPda` / `ClosePermissionPda`

* `CreatePermissionPda` initialisiert eine `Permission`-PDA für eine gegebene `permission_authority`.
* `ClosePermissionPda` schließt sie und erstattet die Miete an den Aufrufer, wodurch die Genehmigung widerrufen wird. Pools, die bereits unter dieser Genehmigung erstellt wurden, sind nicht betroffen.

Beide akzeptieren entweder den Programm-`admin`-Pubkey **oder** einen dedizierten `permission_pda_admin`-Schlüssel (eine unterschiedliche Konstante auf Mainnet vs. Devnet). Siehe [Admin keys and multisig → CLMM](/de/security/admin-and-multisig).

### `PoolState`: `seed_index`-Feld

Zwei Bytes wurden aus einer bestehenden Padding-Region (`padding: [u8; 6]` → `seed_index: [u8; 2]` + `padding: [u8; 4]`) direkt nach `fee_on` herausgeschnitten. **Die Gesamtkontogröße ist unverändert, und es ist keine Indexer-Migration erforderlich.** Für Pools, die über `CreatePool` / `CreateCustomizablePool` erstellt wurden, ist `seed_index` `[0, 0]`; für permissioned Pools trägt es den vom Creator gewählten Index und ist erforderlich, um die Pool-Adresse offline neu abzuleiten.

### `OpenLimitOrder`: Output-Seiten-Konten und Frozen-Account-Guard

Die `OpenLimitOrder`-Kontoliste erhält `output_token_account`, `output_vault` und `output_vault_mint`. Sie werden nur zur Validierung verwendet — kein Output wird bei der Eröffnung belastet. Der Handler verlangt nun, dass **weder** das Input- noch das Output-Token-Konto gefroren ist, und gibt andernfalls `NotApproved` zurück (der gleiche Code, der bereits zurückgegeben wurde, wenn der Pool Swap oder Limit-Order deaktiviert hat). Dies schließt eine Lücke, in der ein Auftrag gegen ein Token-Konto eröffnet werden könnte, das die Ausführung niemals erhalten könnte (z. B. ein noch nicht aufgetautes Konto für einen Default-Frozen-Token-2022-Mint).

Siehe [Instructions → OpenLimitOrder](/de/products/clmm/instructions).

## Fehlercodes

Keine neuen Fehlercodes. Der bestehende `6000 NotApproved` deckt nun zusätzlich die gefrorenen Input-/Output-Token-Konten und die Swap-/Limit-Order-deaktiviert-Fälle auf `OpenLimitOrder` sowie den Fall „Unterzeichner ist weder `admin` noch `permission_pda_admin`" auf den Permission-Instruktionen ab. Die Fehlercode-Tabelle und Nummerierung sind ansonsten unverändert vom [2026-05-18 Release](/de/reference/changelog/2026-05-18-clmm-limit-orders). Siehe [Error codes → CLMM](/de/reference/error-codes).

## Migrationsnoten

* **Pool-Adressen lesen**: Gehen Sie nicht davon aus, dass es einen Pool pro `(config, mint0, mint1)` gibt. Ein Paar kann nun einen kanonischen Pool plus einen oder mehrere permissioned Pools unter `seed_index`-abgeleiteten Adressen haben. Zählen Sie Pools aus der API / dem Indexer auf, anstatt eine einzelne PDA abzuleiten, und speichern Sie `seed_index`, wenn Sie einen permissioned Pool neu ableiten müssen.
* **Limit-Orders platzieren**: Fügen Sie die drei Output-Seiten-Konten zu Ihrer `OpenLimitOrder`-Transaktion hinzu, und zeigen Sie eine klare Nachricht an, wenn `NotApproved` für ein gefrorenes Konto zurückgegeben wird.
* **Keine Account-Größen- oder Layout-Unterbrechung**: `PoolState` hat die gleiche Größe; die eingestellten Padding-Bytes enthalten nun `seed_index`.

## Aktualisierte Seiten

* `products/clmm/overview` — „What's new"-Notiz zu permissioned Multi-Pools und dem Limit-Order-Guard.
* `products/clmm/instructions` — neuer `CreatePermissionedPool`-Abschnitt, `CreatePermissionPda` / `ClosePermissionPda` in der Instruktions-Tabelle und Admin-Gating-Notiz, sowie die aktualisierte `OpenLimitOrder`-Kontoliste / Vorbedingungen / Fehler.
* `products/clmm/accounts` — `Permission` im Inventar und sein eigener Abschnitt, das `PoolState.seed_index`-Feld, PDA-Ableitungshelfer (`derivePermissionedPool`, `derivePermission`) und die Lifecycle-Schnellreferenz.
* `security/admin-and-multisig` — neue `permission_pda_admin`-Zeile und Permission-Scope-Erklärung in der CLMM-Rollen-Tabelle.
* `reference/error-codes` — erweiterte `NotApproved`-Beschreibung.

**Verifiziert gegen**:

* `raydium-clmm`-Quelle (`create_permissioned_pool.rs`, `admin/create_permission_pda.rs`, `admin/close_permission_pda.rs`, `states/permission.rs`, `states/pool.rs`, `limit_order/open_limit_order.rs`, `lib.rs`).
