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 AMM v4. Foi verificada contra o branch de lançamento local antes da implantação. Confirme o programa implantado antes de depender da nova instrução.
solana-program =2.1.0 desde a atualização 2.1, e esse pin era bloqueante. Os helpers do system-program foram movidos para seu próprio crate solana-system-interface no Solana 3.0, spl-token chegou à versão 9.0, e spl-associated-token-account chegou à 8.0. Este lançamento adota todos os três.
A segunda é dinheiro que o protocolo é devido. SIMD-0437 está cortando o mínimo isento de rent em 90% em cinco etapas, e a etapa 1 chegou à mainnet em 3 de setembro de 2026. Toda conta que AMM v4 criou antes disso — centenas de vaults de pool, LP mints, contas AmmInfo e TargetOrders — agora está super-financiada, e lamports em uma conta de propriedade do programa só podem ser movidos por esse programa. Daí uma nova instrução.
TL;DR para integradores
- Nada que um trader ou LP chama mudou.
Initialize2,Deposit,Withdraw,SwapBaseIn,SwapBaseOut,SwapBaseInV2,SwapBaseOutV2,WithdrawPnleSetParamsmantêm suas listas de contas, layouts de argumentos e matemática. Nenhum layout de conta mudou. Nenhum código de erro existente se moveu. - Uma instrução é adicionada:
WithdrawExcessLamports, tag18. Somente admin, sem argumentos, lista de contas variádica. Retorna lamports acima do mínimo isento de rent de contas controladas por AMM v4 e não toca em mais nada. Vejaproducts/amm-v4/instructions. - Um código de erro é anexado:
60LamportsCalculateError.AmmErrornão é numerado por Anchor — começa em0— então este écustom program error: 0x3c. Códigos0–59não mudam. CreateConfigAccount(tag 14) parou de ler o sysvar de rent e agora é documentado como uma instrução de 4 contas. Nada neste lançamento quebra, isto incluído: a conta era a última na lista e o handler lê posicionalmente sem verificação de comprimento, então ferramentas admin que ainda a passam continuam funcionando.- Uma atualização de IDL é necessária se você gera clientes a partir de um. Uma nova instrução, uma nova variante de erro, uma lista de contas alterada.
WithdrawExcessLamports
A instrução toma a carteira collect-lamports como o único signatário e destino, o PDA de autoridade AMM v4, o programa SPL Token, e então qualquer número de contas de origem. Ela despacha no proprietário de cada conta de origem:
O branch wSOL é o interessante. O saldo de lamports de uma conta wrapped-SOL é seu saldo de token, então o programa token rejeita
WithdrawExcessLamports nela completamente. A volta redonda através de SyncNative e um UnwrapLamports de tamanho delta extrai apenas o excesso doado e deixa o saldo envolvido exatamente onde começou — o que é afirmado depois, com LamportsCalculateError se a aritmética discordar. Um vault de pool do lado SOL portanto mantém sua liquidez completa através de uma varredura, e nenhum LP vê uma mudança de preço através de uma.
O signatário é uma chave dedicada por cluster, codificada no mesmo módulo config_feature que os endereços existentes de proprietário AMM e taxa de criação de pool. Diferentemente de CPMM e LaunchLab, AMM v4 aceita apenas essa carteira — não há fallback de admin. Os endereços estão em reference/program-addresses.
CreateConfigAccount parou de ler o sysvar de rent
Solana 3.0 é o que torna Rent::get() a forma natural de ler parâmetros de rent, então o lançamento substituiu todas as quatro chamadas Rent::from_account_info(...) no programa. Em três delas — os helpers que criam contas de token, LP mint e contas PDA de um pool durante Initialize2 — a conta sysvar ainda é passada e ainda encaminhada para os CPIs do programa token, então nada sobre essa lista de contas muda. Em CreateConfigAccount o sysvar não tinha outro propósito e era a última conta na lista, então saiu da lista documentada:
Enviar a lista antiga de cinco contas ainda funciona. A conta removida era a última, e
process_create_config lê suas quatro contas posicionalmente através de next_account_info sem nada verificar a contagem total, então uma conta de rent à direita nunca é consultada. Ferramentas admin devem ser atualizadas por clareza, não urgência. Nenhuma construção de builder voltada para o usuário constrói essa instrução.
Initialize2 é o caso para não ler demais: também parou de chamar Rent::from_account_info, mas sua conta de rent permanece na posição 3 e ainda é genuinamente usada — o programa a encaminha para os CPIs spl_token::initialize_account e initialize_mint que criam os vaults e LP mint do pool. Removê-la dessa lista de contas quebraria a criação de pool.
Mudanças de dependência
As peças do system-program que o programa usa —
system_instruction::create_account, transfer, allocate, assign, e o ID do programa em si — agora vêm de solana-system-interface em vez de solana_program::system_program e solana_program::system_instruction. O ID do programa é byte-idêntico, então esta é uma mudança de tempo de compilação sem consequência on-chain, incluindo para as verificações InvalidSysProgramAddress que comparam contra ele.
Dois módulos mortos também foram deletados: srm_token e msrm_token, as declarações de mint Serum/MSRM deixadas da remoção OpenBook. Nada as referenciava.
O que não mudou
- Cada layout de conta.
AmmInfo,StateData,TargetOrders,AmmConfig— mesmos tamanhos, mesmos offsets de campo. Nenhuma mudança de indexador ou decoder. - Códigos de erro
0–59.LamportsCalculateErroré anexado em60, então nada se move. - O PDA de autoridade AMM. Ainda um PDA para todo o programa, seed
["amm authority"], nonce254. - Taxas, contabilidade de PnL e a curva. Intocados.
WithdrawExcessLamportsmove lamports que nunca foram parte das reservas de nenhum pool. - Token-2022. Ainda não suportado. A nova instrução fala apenas com o programa SPL Token legado.
- ID do programa. Inalterado — veja
reference/program-addresses.
Páginas atualizadas
products/amm-v4/instructions—WithdrawExcessLamportsadicionado com sua lista de contas e tabela de despacho por proprietário; nova seçãoCreateConfigAccount/UpdateConfigAccountcobrindo a remoção do sysvar de rent; linhas de tabela de inventário e matriz de mudança de estado adicionadas.products/amm-v4/overview— banner de lançamento.reference/error-codes— nova seção “AMM v4:AmmErrornão é numerado por Anchor” documentando código60e numeração baseada em0.reference/program-addresses— nova seção “Carteiras de coleta de lamports excedentes”.solana-fundamentals/rent-and-reclaimable-rent— nova seção “O que os programas Raydium varrem do seu próprio lado”; a nota wrapped-SOL corrigida para dizer que ambos os programas token expõemUnwrapLamports.solana-fundamentals/toolchain— Agave 3.1.10,release.anza.xyz, Rust 1.91.0.

