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 emAmmInfo 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.coin_vault,pc_vault— os vaults SPL Token do pool.coinétoken_0por 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 emAmmInfoe 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ão25 / 10_000 = 0.25%.status— um único estado enumeradou64que controla as operações, não uma bitmask. Configurável por admin viaSetParamscomparam = 0(Status). Veja Status abaixo.lp_amount— o total interno de LP do pool. Não é igual alp_mint.supply: é exatamente um token LP inteiro (10^coin_decimalsunidades base) mais alto, porque essa quantia é contada na inicialização mas nunca mintada. Toda a matemática pro-rata usalp_amount, então use-o também.amm_owner— escrito na criação a partir da chave de admin codificada no programa, não a partir do criador.state_data.need_take_pnl_*— delta entre taxas acumuladas brutas e o que foi varrido.TakePnlzera 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.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.
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 PDAamm_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.
254 na mainnet e é espelhado em cada AmmInfo como nonce; WithdrawExcessLamports o re-deriva com esse nonce codificado.
Vaults
Os vaults SPL Token do pool são contas de token padrão cujoowner é amm_authority. Não são ATAs — seus endereços são PDAs derivadas em Initialize2 a partir de [AMM_V4_PROGRAM_ID, market, "coin_vault_associated_seed"] e [AMM_V4_PROGRAM_ID, market, "pc_vault_associated_seed"]. O mint não é uma seed, e nem 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 Initialize2 com InvalidSplTokenProgram.
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.
Existe um espelho no estado: AmmInfo.lp_amount. Ele não é igual ao suprimento do mint — fica exatamente um token LP inteiro (10^coin_decimals unidades base) mais alto, porque essa quantia é contada na inicialização mas nunca mintada. Toda computação pro-rata no programa divide por lp_amount, então use esse campo em vez do suprimento on-chain do mint.
Status
AmmInfo.status é um único estado enumerado u64, não uma bitmask. Teste-o por igualdade — um cliente que testa status & 1 classifica erroneamente todos os pools ativos, porque o estado normal de negociação é 6, que tem o bit 0 definido.
Initialize2 escreve 7 quando open_time está no futuro e 6 caso contrário; um pool em 7 muda a si mesmo para 6 no primeiro swap em ou após state_data.pool_open_time. Um valor fora de 0..=7 faz AmmStatus::from_u64 entrar em pânico.
O multisig Raydium define o estado via SetParams com param = 0 (Status); apenas os valores 1–7 são aceitos. (AdminCancelOrders foi removido.)
Observação / oracle
AMM v4 não tem conta de observação dedicada, e desde a remoção do OpenBook também não há estado de livro de ordens do qual derivar uma. Se você precisa de um TWAP Raydium com suporte de programa, use CPMM ou CLMM — ambos mantêm um buffer ringObservationState. Caso contrário, indexe os logs de swap off-chain.
Derivando contas de um pool do zero
As contas de pool do AMM v4 são PDAs simples indexadas pelo mercado vinculado — não são keypairs com seed, nem PDAs por par. Todas elas usam o mesmo formato de três seeds[AMM_V4_PROGRAM_ID, market, <label>] sob AMM_V4_PROGRAM_ID:
Liquidity.getAssociatedPoolKeys do raydium-sdk-v2.
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
- Matemática e aritmética de taxas:
products/amm-v4/math. - Divisão de taxas e como se compara a CPMM/CLMM:
products/amm-v4/fees. - Listas de contas de instrução:
products/amm-v4/instructions. - Derivação de conta OpenBook: código-fonte do programa OpenBook (
github.com/openbook-dex/program) — um monorepo Rust, não documentação em prosa.
- Programa Raydium AMM —
raydium-io/raydium-amm reference/program-addressespara IDs de programa canônicos- Protocolo OpenBook / Serum para as contas da contraparte

