Skip to main content
Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
A partir da atualização 2026-07, a dependência do OpenBook / Serum do AMM v4 foi removida — nenhuma instrução lê ou escreve estado do OpenBook. As contas de mercado abaixo são mantidas apenas como placeholders posicionais nos layouts de instrução v1 legados (aceitos mas ignorados) e como campos de referência em AmmInfo. Use os pontos de entrada de swap V2, que as omitem completamente. Esta página ainda agrupa as contas em seções “pool-owned” e “OpenBook (legacy)” para leitura de transações antigas.

Inventário

Um pool AMM v4 registra um mercado vinculado em AmmInfo na criação. O quadro completo: Nota: o prefixo “serum” é mantido no IDL e nomes de campos do AMM v4 para compatibilidade com versões anteriores. Essas contas não são mais funcionais após a remoção do OpenBook.

AmmInfo

A conta de estado raiz do pool. Grande (≈ 752 bytes) porque carrega referências de pool e OpenBook inline.
O layout da struct não foi alterado (compatível em bytes) para que desserializadores existentes continuem funcionando, mas após a remoção do OpenBook os campos marcados como DEPRECATED acima não são mais escritos — os contadores de volume swap_* estão congelados em seu último valor. Para análise de volume, use logs de trade em vez desses campos. Apenas need_take_pnl_* e pool_open_time são mantidos ativamente.
Campos voltados para integradores:
  • coin_vault, pc_vault — os vaults SPL Token do pool. coin é token_0 por convenção Serum/OpenBook (base), pc é token_1 (quote).
  • coin_decimals, pc_decimals — correspondendo aos mints.
  • open_orders, target_orders, market — campos de referência legados. Ainda presentes em AmmInfo e ainda passados posicionalmente nos layouts de instrução v1, mas o programa não os lê ou valida mais. Os pontos de entrada de swap V2 os omitem.
  • fees.swap_fee_numerator / swap_fee_denominator — a taxa de trade combinada. Padrão 25 / 10_000 = 0.25%.
  • status — bitmask que controla operações. Configurável por admin via AdminSetStatus.
  • state_data.need_take_pnl_* — delta entre taxas acumuladas brutas e o que foi varrido. TakePnl zera esses valores.

A fiação do OpenBook

Removida. A dependência do OpenBook / Serum foi deletada do programa (atualização 2026-07). As contas descritas nesta seção não são mais validadas ou usadas. Elas permanecem como campos de referência em AmmInfo e como placeholders posicionais nos layouts de instrução v1 legados. Use os pontos de entrada de swap V2 (SwapBaseInV2 / SwapBaseOutV2) que pulam essas contas completamente.
Quando você chama uma instrução v1 legada SwapBaseIn / SwapBaseOut, Deposit ou Withdraw, a contagem de contas ainda deve corresponder ao layout antigo (as contas de mercado ocupam suas posições históricas), mas seu conteúdo não é mais verificado — nenhum CPI é emitido contra elas. Código novo deve usar as variantes de swap V2, que não aceitam essas contas.
O amm_open_orders do AMM é uma conta de propriedade do OpenBook que mantém o estado de ordem limitada do pool neste mercado: ordens ativas, saldos liquidados, referrers, etc. amm_target_orders é do lado do AMM: mantém a intenção de grade do AMM (preço/tamanho para cada slot de ordem) para que o programa possa comparar barato contra o que está atualmente postado e colocar / cancelar a diferença.

PDAs de autoridade

Existe exatamente um PDA amm_authority para todo o programa AMM v4. Sua seed é trivial (["amm authority"]) e seu bump é armazenado em cada AmmInfo. Esta autoridade assina todos os movimentos de token para todos os pools AMM v4.
Existe uma autoridade separada com escopo de pool derivada por pool para assinar operações do OpenBook (amm_authority acima na verdade cobre ambas no design deste programa; versões diferentes usaram derivações diferentes, então verifique o AmmInfo.nonce do pool específico no código).

Vaults

Os vaults SPL Token do pool são contas de token padrão cujo owner é amm_authority. Não são ATAs — seus endereços são PDAs específicas derivadas em Initialize com seeds ["amm_associated_seed", coin_mint_or_pc_mint, market, amm_id]. Os endereços são armazenados em AmmInfo; a derivação é uma curiosidade única. Token-2022 não é suportado. O programa codifica o ID do programa SPL Token para todos os movimentos de vault. Tentar vincular um pool AMM v4 a um mint Token-2022 falha em Initialize.

LP mint

Um mint SPL Token clássico cuja autoridade é amm_authority. O suprimento total rastreia a propriedade de LP do pool; queimar LP retorna tokens de ambos os vaults pro-rata. Como AMM v4 é anterior a CPMM, não há espelho lp_supply no estado do pool — leia o suprimento do mint on-chain diretamente.

Bitmask de status

AmmInfo.status controla operações. Bits (a posição pode diferir entre versões do programa — confirme via a fonte): O multisig Raydium define esses via SetParams (com param = Status). (AdminCancelOrders foi removido.)

Observação / oracle

AMM v4 não tem conta de observação dedicada. Outros protocolos que precisam de um TWAP on-chain normalmente consomem cruzamentos de livro do OpenBook indiretamente ou leem off-chain. Se você precisa de um TWAP Raydium com suporte de programa, use CPMM ou CLMM.

Derivando contas de um pool do zero

Como AMM v4 não foi projetado para PDAs determinísticas por par (é anterior a essa convenção Solana), o amm_id canônico é uma keypair com seed derivada com:
O mesmo padrão de chave com seed se aplica a amm_open_orders, amm_target_orders, amm_withdraw_queue, pool_temp_lp, pool_coin_token_account, pool_pc_token_account e lp_mint. O SDK e API pré-computam esses para você; veja raydium-sdk-v2’s Liquidity.getAssociatedPoolKeys. Na prática, integradores leem o conjunto completo de contas do pool de GET https://api-v3.raydium.io/pools/info/ids?ids=<POOL_ID> ou do SDK. Derivação manual raramente é necessária.

Referência rápida de ciclo de vida

Pools e suas contas persistem indefinidamente. Mesmo se a liquidez for totalmente retirada, AmmInfo permanece.

O que ler onde

Fontes: