Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
Uma entrada do changelog da documentação. Para o índice de todas as atualizações, consulte
reference/changelog. Para a linha do tempo histórica do protocolo, consulte introduction/history-and-milestones.CreatePool / CreateCustomizablePool permanecem inalterados.
TL;DR para integradores
- IDs de pool agora podem ser não-canônicos, atrás de um portão de permissão. Historicamente havia exatamente um endereço de pool CLMM por
(amm_config, token_mint_0, token_mint_1)— as sementes do PDA o fixavam. Uma nova instrução,CreatePermissionedPool, incorpora umseed_index: u16não-zero fornecido pelo cliente nas sementes do PDA do pool, para que um operador na lista branca possa criar vários pools para o mesmo par e nível de taxa, cada um em seu próprio endereço. Como endereços de pool arbitrários são uma capacidade privilegiada, o pagador deve manter um PDA dePermissionconcedido pelo administrador. Duas instruções de administrador,CreatePermissionPdaeClosePermissionPda, gerenciam essas concessões. OpenLimitOrderagora valida o lado de saída. A instrução recebe três contas adicionais —output_token_account,output_vault,output_vault_mint— e rejeita a ordem comNotApprovedse a conta de token de entrada ou saída do proprietário estiver congelada. Isso garante que o preenchimento eventual possa ser entregue, o que importa para mints Token-2022 com lista de permissão / congelados por padrão (tokens com permissão). Clientes construídos contra a lista de contas antiga de um lado devem adicionar as três contas de saída.
O que mudou no programa
Nova instrução: CreatePermissionedPool
Mesma forma e parâmetros que CreateCustomizablePool (recebe o mesmo CreateCustomizableParams, então taxa de um lado e a opção de taxa dinâmica estão disponíveis), mais:
- Um argumento
seed_index: u16, que deve ser não-zero. Ele é anexado (little-endian) às sementes do PDA do pool:["pool", amm_config, token_mint_0, token_mint_1, seed_index.to_le_bytes()]. - Uma conta
permission: o PDA["permission", payer]. Anchor rejeita a chamada se não existir ou não for de propriedade do programa — sua mera existência é a autorização. - Uma conta
pool_creatorregistrada comopool_state.owner, que pode diferir dopayerque paga a taxa.
seed_index = 0 permanece reservado para pools legados: para esses, o componente de semente colapsa para vazio, reproduzindo o endereço clássico de quatro sementes, então nenhum endereço de pool existente muda.
Consulte Instructions → CreatePermissionedPool.
Nova conta: Permission
Uma conta de capacidade cuja existência é a concessão. Ela armazena apenas a authority para a qual foi criada (mais preenchimento). Sementes do PDA: ["permission", authority]. Ela confere o direito de chamar CreatePermissionedPool e nada mais — não pode mover fundos, alterar taxas ou mutar qualquer pool. Consulte Accounts → Permission.
Novas instruções de administrador: CreatePermissionPda / ClosePermissionPda
CreatePermissionPdainicializa um PDA dePermissionpara uma determinadapermission_authority.ClosePermissionPdao fecha e reembolsa o aluguel para o chamador, revogando a concessão. Pools já criados sob essa concessão não são afetados.
admin do programa ou uma chave dedicada permission_pda_admin (uma constante distinta na mainnet vs devnet). Consulte Admin keys and multisig → CLMM.
PoolState: campo seed_index
Dois bytes foram extraídos de uma região de preenchimento existente (padding: [u8; 6] → seed_index: [u8; 2] + padding: [u8; 4]) diretamente após fee_on. O tamanho total da conta é inalterado, e nenhuma migração de indexador é necessária. Para pools criados via CreatePool / CreateCustomizablePool, seed_index é [0, 0]; para pools com permissão, ele carrega o índice escolhido pelo criador e é necessário para re-derivar o endereço do pool off-chain.
OpenLimitOrder: contas do lado de saída e proteção de conta congelada
A lista de contas de OpenLimitOrder ganha output_token_account, output_vault e output_vault_mint. Elas são usadas apenas para validação — nenhuma saída é debitada na abertura. O manipulador agora exige que nenhuma das contas de token de entrada ou saída esteja congelada, retornando NotApproved caso contrário (o mesmo código já retornado quando o pool tem swap ou ordem limitada desabilitada). Isso fecha uma lacuna onde uma ordem poderia ser aberta contra uma conta de token que nunca poderia receber o preenchimento (por exemplo, uma conta ainda não descongelada para um mint Token-2022 congelado por padrão).
Consulte Instructions → OpenLimitOrder.
Códigos de erro
Nenhum novo código de erro. O6000 NotApproved existente agora cobre adicionalmente a conta de token de entrada/saída congelada e os casos de swap/ordem limitada desabilitada em OpenLimitOrder, e o caso “signatário não é nem admin nem permission_pda_admin” nas instruções de permissão. A tabela de códigos de erro e a numeração são iguais à versão de 2026-05-18. Consulte Error codes → CLMM.
Notas de migração
- Leitura de endereços de pool: não assuma um pool por
(config, mint0, mint1). Um par agora pode ter um pool canônico mais um ou mais pools com permissão em endereços derivados deseed_index. Enumere pools da API / indexador em vez de derivar um único PDA, e armazeneseed_indexquando precisar re-derivar um pool com permissão. - Colocação de ordens limitadas: adicione as três contas do lado de saída à sua transação
OpenLimitOrder, e exiba uma mensagem clara quandoNotApprovedfor retornado para uma conta congelada. - Sem quebra de tamanho de conta ou layout:
PoolStatetem o mesmo tamanho; os bytes de preenchimento aposentados agora contêmseed_index.
Páginas atualizadas
products/clmm/overview— nota “What’s new” sobre pools com permissão múltipla e a proteção de ordem limitada.products/clmm/instructions— nova seçãoCreatePermissionedPool,CreatePermissionPda/ClosePermissionPdana tabela de instruções e nota de gating de administrador, e a lista de contas / pré-condições / erros atualizada deOpenLimitOrder.products/clmm/accounts—Permissionno inventário e sua própria seção, o campoPoolState.seed_index, auxiliares de derivação de PDA (derivePermissionedPool,derivePermission), e a referência rápida de ciclo de vida.security/admin-and-multisig— nova linhapermission_pda_admine explicador de escopo de permissão na tabela de funções CLMM.reference/error-codes— descrição ampliada deNotApproved.
- Fonte de
raydium-clmm(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).

