Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
Esta entrada cobre uma atualização futura do programa CPMM. Foi verificada contra o branch de lançamento local (
0dde43d, 11 de setembro de 2026) antes da implantação. Confirme o programa implantado antes de confiar nas novas instruções ou nas listas de contas alteradas.creator_fee_rate e ainda acumula o valor inteiro em creator_fees_token_{0,1}. Quando CollectCreatorFee ou CollectCreatorFeePermissionless é executado, o saldo acumulado é dividido, a parte do protocolo é reclassificada como uma taxa de protocolo no mesmo pool, e apenas a parte do criador sai do cofre. Cotações, a curva, k e todos os caminhos voltados para LP não são afetados.
TL;DR para integradores
- Ambas as instruções de coleta de taxa de criador mudaram suas listas de contas. Isto é uma quebra.
CollectCreatorFeeganhacreator_fee_sharena posição 5.CollectCreatorFeePermissionlessganhaamm_configem 5 ecreator_fee_shareem 6. Ambas as inserções ficam antes dos cofres, então tudo depois se desloca. Reconstrua essas transações; não as corrija. creator_fee_sharedeve ser passado mesmo quando não existe. É declarado com uma restrição de seed mas lido como uma conta não verificada, então o endereço deve ser o PDA canônico em["creator_fee_share", creator, amm_config]enquanto a conta em si é opcional. Quando está vazia, o programa volta paraAmmConfig.creator_fee_share_rate.AmmConfigganhacreator_fee_share_rate, esculpido do padding. A conta ainda tem 236 bytes e cada config existente continua desserializando — mas o primeirou64do antigopadding: [u64; 15]agora é um campo ativo. Decodificadores que modelam a cauda como um array de 15 elementos leem a taxa de compartilhamento comopadding[0].PoolStatenão foi alterado. 637 bytes, mesmos offsets, mesmos campos. A parte do protocolo é registrada nos contadores existentesprotocol_fees_token_{0,1}— não há novo contador e nenhuma nova instrução de coleta para isso.protocol_fees_token*agora cresce fora dos swaps. Qualquer monitor que reconcilie acúmulo de protocolo contra volume de negociação verá saltos em cada coleta de taxa de criador.- Um estimador de pagamento de criador que lê
creator_fees_token*agora superestima. Multiplique por(1 − share_rate / 1_000_000), resolvido para esse par(creator, amm_config). - Duas instruções de admin são adicionadas:
CreateCreatorFeeShareeCloseCreatorFeeShare. Um novo parâmetroUpdateAmmConfig:8→creator_fee_share_rate. - Sem novos códigos de erro. Os novos caminhos reutilizam
InvalidOwner(6001),InvalidInput(6003) eMathOverflow(6011).6000–6015não foram alterados. - Uma atualização de IDL é necessária — duas novas instruções, um novo tipo de conta, duas listas de contas alteradas, um novo campo de config.
Como a divisão funciona
Resolução, em ordem de prioridade:- PDA
CreatorFeeShareem["creator_fee_share", creator, amm_config]— quando a conta existe e é de propriedade do CPMM, seushare_ratevence. AmmConfig.creator_fee_share_rate— o padrão do nível de taxa, usado caso contrário.
u64 sobre FEE_RATE_DENOMINATOR_VALUE = 1_000_000 e ambos são verificados contra esse limite. Então, por lado de token:
- O arredondamento favorece o criador. A parte é arredondada para baixo, então o pó fica com o criador — a mesma direção que
Fees::protocol_feeeFees::fund_fee, que também esculpem uma parte de uma taxa já acumulada. 20% de uma taxa de 1 unidade é 0, não 1. - O valor é conservado.
creator_amount + shared_amount == creator_feepara cada taxa e cada taxa atéu64::MAX. share_rate = 0é exatamente o comportamento antigo. Tanto o valor de config padrão quanto um PDA ausente dão ao criador a taxa inteira, então nada muda para nenhum pool existente até que um admin defina uma taxa.
protocol_fees_token* e creator_fees_token* já são ambos subtraídos em vault_amount_without_fee, mover valor entre eles não muda a visão da curva sobre o cofre. Nenhum LP vê uma mudança de preço em uma coleta de taxa de criador, e a verificação k não é alterada.
A taxa é lida na coleta, não no acúmulo. Taxas que se acumularam enquanto a taxa era
0 se liquidam em qualquer taxa que estiver em vigor quando alguém finalmente chamar Collect*. Não há snapshot por época ou por swap.Mudanças na lista de contas
CollectCreatorFee — uma inserção:
CollectCreatorFeePermissionless — duas inserções:
Tabelas de contas completas em
products/cpmm/instructions.
CreateCreatorFeeShare e CloseCreatorFeeShare
CreateCreatorFeeShare(share_rate: u64) inicializa o PDA; CloseCreatorFeeShare o fecha e retorna o aluguel ao signatário. Ambos aceitam o admin do programa compartilhado ou um proprietário dedicado de compartilhamento de taxa de criador — um novo par de chaves codificado seguindo o mesmo padrão cfg devnet/mainnet que as outras autoridades delegadas do programa. Endereços em reference/program-addresses.
Pontos dignos de nota:
- O criador do pool não é parte de nenhuma instrução e não assina. A conta
creatornão é verificada — o PDA pode ser criado para uma chave que ainda não possui nenhum pool. - Uma conta cobre um par
(creator, amm_config), então governa cada pool que esse criador possui nesse nível de taxa. Um criador com pools em dois níveis precisa de duas contas para ser coberto em ambos. - Não há caminho de atualização.
initfalha em uma segunda criação para o mesmo par; para alterar uma taxa, feche e recrie.
Parâmetro 8 de UpdateAmmConfig
protocol_fee_rate (parâmetro 1), que divide a taxa de negociação — um ponto que vale a pena ter cuidado nas ferramentas de admin, já que os dois se parecem e ambos caem em protocol_fees_token*.
Viajando junto
Correção de ordenação deCollectExcessLamports. A instrução agora faz duas passagens sobre remaining_accounts — cada CPI de programa de token primeiro, depois os débitos diretos de PDAs de propriedade do CPMM — em vez de despachar em ordem do chamador. Intercalar os dois abortou com UnbalancedInstruction do runtime (“a soma dos saldos de conta antes e depois da instrução não correspondem”) sempre que um PDA era debitado antes de um CPI, porque as mudanças de lamport pendentes do chamador são apenas liberadas nas contas que um CPI realmente carrega. A interface da instrução não foi alterada; os chamadores ainda passam fontes em qualquer ordem, e agora isso é genuinamente seguro.
Metadados de compilação verificável. O Cargo.toml do workspace declara [workspace.metadata.cli] solana = "3.1.10", então uma compilação verificável resolve o mesmo Solana CLI contra o qual o programa foi compilado. Sem efeito on-chain.
O que não mudou
PoolState— 637 bytes, mesmos campos, mesmos offsets. A parte do protocolo reutiliza o bucket de protocolo existente em vez de adicionar contadores próprios.AmmConfig::LEN— ainda 236 bytes.- Matemática de swap, cotação e a verificação
k. A taxa de criador é cobrada exatamente como antes. CollectProtocolFee/CollectFundFee— mesmas contas, mesmos signatários.CollectProtocolFeesimplesmente tem mais para coletar.- Códigos de erro.
6000–6015sem alteração; nada acrescentado. - Cada outra instrução e o ID do programa.
Páginas atualizadas
products/cpmm/fees— nova seção “Compartilhamento de protocolo da taxa do criador” cobrindo resolução de taxa, aritmética de divisão, arredondamento e consequências do integrador;creator_fee_share_rateadicionado à lista de taxas/unidades e tabela de parâmetros padrão; tabela de fluxo de coleta reformulada.products/cpmm/instructions— aviso de mudança quebrada no topo; tabelas de contas completas para ambos os caminhos de taxa de criador; novas seçõesCreateCreatorFeeShareeCloseCreatorFeeShare; parâmetro8deUpdateAmmConfig; nota de ordenação deCollectExcessLamports; linhas de resumo e matriz de mudança de estado.products/cpmm/accounts— nova seção de contaCreatorFeeShare; layout deAmmConfige aviso de carve de padding; notas de contador de taxa dePoolState; linhas de ciclo de vida de conta.products/cpmm/overview— chamada de taxa de criador e o marcador “Taxas previsíveis”.products/cpmm/math— uma nota de que a divisão é deliberadamente ausente da matemática de swap.products/cpmm/code-demos— aviso de que construtores de SDK pré-atualização emitem as listas de contas antigas; snippet de taxa acumulada anotado.reference/program-addresses— nova seção “Autoridade de compartilhamento de taxa de criador do CPMM”;creator_fee_shareadicionado ao bloco de seed de PDA.reference/fee-comparison—creator_fee_share_ratechamado como uma quarta taxa de CPMM com uma base diferente.

