Diese Seite wurde mit KI automatisch übersetzt. Maßgeblich ist stets die englische Version.Englische Version ansehen →
Überholt am 2026-10-22.
CreatePermissionedPool wurde in CreateCustomizablePoolV2 umbenannt und erlaubnisfrei gemacht, und das Permission-Konto mit CreatePermissionPda / ClosePermissionPda wurde entfernt. Dieser Eintrag beschreibt das Programm zum Stand 2026-07-30. Siehe den Eintrag vom 2026-10-22.CreatePool / CreateCustomizablePool-Pfade bleiben unverändert.
TL;DR für Integratoren
- Pool-IDs können nun nicht-kanonisch sein und hinter einem Berechtigungsgate 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 Anweisung,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-Anweisungen,CreatePermissionPdaundClosePermissionPda, verwalten diese Genehmigungen. OpenLimitOrdervalidiert nun die Output-Seite. Die Anweisung akzeptiert drei zusätzliche Konten —output_token_account,output_vault,output_vault_mint— und lehnt die Bestellung mitNotApprovedab, wenn das Konto des Eigentümers ein eingefrorenes Input- oder Output-Token-Konto hat. 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 Anweisung: CreatePermissionedPool
Gleiche Form und Parameter wie CreateCustomizablePool (sie akzeptiert die gleichen CreateCustomizableParams, sodass einseitige Gebühren und die 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 gehört 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-Anweisungen: 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 beim Öffnen belastet. Der Handler verlangt nun, dass weder das Input- noch das Output-Token-Konto eingefroren 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 eine Bestellung gegen ein Token-Konto geö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 eingefrorenen 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-Anweisungen ab. Die Fehlercode-Tabelle und Nummerierung sind ansonsten unverändert gegenüber der Version vom 2026-05-18. 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 eingefrorenes Konto zurückgegeben wird. - Keine Kontogröße oder Layout-Bruch:
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 Anweisungstabelle und Admin-Gating-Notiz, sowie die aktualisierteOpenLimitOrder-Kontoliste / Vorbedingungen / Fehler.products/clmm/accounts—Permissionim Inventar und in seinem eigenen 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-Rollentabelle.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).

