Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Ein Dokumentations-Changelog-Eintrag. Für den Index aller Updates siehe
reference/changelog. Für die historische Zeitleiste des Protokolls siehe introduction/history-and-milestones.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-nullseed_index: u16in 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 einePermission-PDA halten, die vom Admin gewährt wird. Zwei Admin-Instruktionen,CreatePermissionPdaundClosePermissionPda, verwalten diese Genehmigungen. OpenLimitOrdervalidiert nun die Output-Seite. Die Instruktion akzeptiert drei zusätzliche Konten —output_token_account,output_vault,output_vault_mint— und lehnt den Auftrag mitNotApprovedab, 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 alspool_state.owneraufgezeichnet wird und sich vom gebührenzahlendenpayerunterscheiden 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.
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.
Neue Admin-Instruktionen: CreatePermissionPda / ClosePermissionPda
CreatePermissionPdainitialisiert einePermission-PDA für eine gegebenepermission_authority.ClosePermissionPdaschließ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.
admin-Pubkey oder einen dedizierten permission_pda_admin-Schlüssel (eine unterschiedliche Konstante auf Mainnet vs. Devnet). Siehe Admin keys and multisig → CLMM.
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.
Fehlercodes
Keine neuen Fehlercodes. Der bestehende6000 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. Siehe Error codes → CLMM.
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 unterseed_index-abgeleiteten Adressen haben. Zählen Sie Pools aus der API / dem Indexer auf, anstatt eine einzelne PDA abzuleiten, und speichern Sieseed_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, wennNotApprovedfür ein gefrorenes Konto zurückgegeben wird. - Keine Account-Größen- oder Layout-Unterbrechung:
PoolStatehat die gleiche Größe; die eingestellten Padding-Bytes enthalten nunseed_index.
Aktualisierte Seiten
products/clmm/overview— „What’s new”-Notiz zu permissioned Multi-Pools und dem Limit-Order-Guard.products/clmm/instructions— neuerCreatePermissionedPool-Abschnitt,CreatePermissionPda/ClosePermissionPdain der Instruktions-Tabelle und Admin-Gating-Notiz, sowie die aktualisierteOpenLimitOrder-Kontoliste / Vorbedingungen / Fehler.products/clmm/accounts—Permissionim Inventar und sein eigener Abschnitt, dasPoolState.seed_index-Feld, PDA-Ableitungshelfer (derivePermissionedPool,derivePermission) und die Lifecycle-Schnellreferenz.security/admin-and-multisig— neuepermission_pda_admin-Zeile und Permission-Scope-Erklärung in der CLMM-Rollen-Tabelle.reference/error-codes— erweiterteNotApproved-Beschreibung.
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).

