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 do programa 2026-07, a dependência OpenBook / Serum do AMM v4 foi removida. As instruções legadas v1 SwapBaseIn / SwapBaseOut, Deposit e Withdraw mantêm seus layouts de conta antigos para compatibilidade com versões anteriores: as contas de mercado ainda são aceitas em suas posições antigas, mas não são mais validadas ou usadas (nenhum CPI é emitido). Novas integrações devem usar os pontos de entrada de swap V2, que omitem completamente as contas de mercado. Várias instruções foram removidas e agora revertidas — veja a entrada do changelog. As listas de contas abaixo usam os nomes de campo do SDK Raydium; o IDL subjacente às vezes usa prefixos serum_*.

Inventário de instruções

O SDK expõe builders apenas para as instruções voltadas ao usuário. Instruções de manutenção são tipicamente invocadas pelo keeper Raydium. Removidas / não mais chamáveis (agora revertidas com unimplemented!, e seus builders de cliente foram deletados): Initialize (tag 0, use Initialize2), MonitorStep (2), MigrateToOpenBook (5), WithdrawSrm (8), PreInitialize (10, use Initialize2), SimulateInfo (12), AdminCancelOrders (13).

Initialize2

Inicializar um novo pool AMM v4 vinculado a um mercado OpenBook existente. Argumentos
Contas (gravável W, assinante S) Pós-condições
  • lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, onde INIT_BURN ≈ 100 unidades de LP são mantidas fora de circulação.
  • Nenhuma ordem OpenBook é postada (a grade de livro de ordens foi removida). market_program / market ainda são passados mas apenas armazenados como campos de referência; coin_lot_size / pc_lot_size / min_size são inicializados para 0.
Erros comunsInvalidInput (decimais incompatíveis, não ordenados), NotAllowed.

Deposit

Adicionar liquidez. Argumentos
Contas (abreviado) Matemática — pro-rata padrão. Usando as reservas efetivas do pool (vaults + em livro), o SDK calcula o par coin/pc que produz a quantidade de LP fornecida e verifica contra max_*. Reverte com ExceededSlippage se qualquer lado exceder o limite.

Withdraw

Queimar LP, receber ambos os lados. Argumentos
Contas — como Deposit com a direção invertida; lp_mint é gravável para queima, as ATAs do usuário são receptoras. O layout de conta é inalterado (contas de mercado ainda passadas posicionalmente, ignoradas). Não há mais nenhuma etapa de settle-from-OpenBook — a matemática pro-rata usa os saldos do vault diretamente.

SwapBaseIn

Swap de entrada exata. Sempre um swap de caminho AMM (não roteia através de correspondência OpenBook).
Use as variantes V2 para novo código. Como a dependência OpenBook do AMM v4 foi removida, os pontos de entrada V1 (SwapBaseIn, SwapBaseOut) ainda esperam a lista completa de 17 contas (ou 18 com a conta target-orders opcional), mas as contas OpenBook/mercado agora são aceitas posicionalmente e ignoradas — não são validadas e nenhum CPI é emitido. Passar uma contagem de conta errada ainda reverte com WrongAccountsNumber, mas o conteúdo das contas de mercado não é mais verificado. Novas integrações devem usar SwapBaseInV2 / SwapBaseOutV2, que usam uma lista de conta muito menor e representam o caminho de execução canônico hoje. Os formulários V1 são documentados aqui para completude e para ler transações on-chain existentes.
Argumentos
Contas (abreviado) Matemática — veja products/amm-v4/math. Pré-condições
  • amm.status permite swap (bit 0 da máscara de bits de status não definido).
  • amm.state_data.pool_open_time <= now.
  • amount_in > 0.
  • user_source_token_account contém pelo menos amount_in.
Pós-condições
  • Usuário perde amount_in do token de origem, ganha amount_out ≥ minimum_amount_out do token de destino.
  • need_take_pnl_* incrementado pela parcela de taxa de protocolo.
  • Nota: os contadores de análise state_data.swap_*_in_amount / swap_*_out_amount não são mais atualizados — seus valores estão congelados. Use logs de negociação para análise de volume.
Erros comunsExceededSlippage, InvalidInput, InvalidStatus, NotAllowed (mint coin/pc idêntico).

SwapBaseOut

Saída exata, inverso de SwapBaseIn. Mesmas contas. Argumentos

SwapBaseInV2 / SwapBaseOutV2

Pontos de entrada de swap variantes (tags 16 / 17) que pulam completamente as contas OpenBook. A matemática é idêntica ao caminho V1, mas a lista de contas encolhe para apenas o lado AMM e o usuário — 8 contas, e amm_open_orders não é passado: As reservas do pool agora são os saldos do vault (menos PnL pendente), então a matemática de cotação é direta e idêntica ao caminho v1. Use V2 para economizar computação e evitar passar as contas de mercado (agora ignoradas). O roteador Raydium sempre usa a forma V2 ao rotear através do AMM v4. Os argumentos são os mesmos dos formulários V1 (amount_in / minimum_amount_out para SwapBaseInV2; max_amount_in / amount_out para SwapBaseOutV2).

MonitorStep e outras instruções removidas

Removidas — não mais chamáveis. A partir da atualização 2026-07, MonitorStep (tag 2) foi removida do programa e agora reverte (unimplemented!) se invocada. Seu builder de cliente também foi deletado. O mesmo se aplica a MigrateToOpenBook (5), WithdrawSrm (8), SimulateInfo (12), AdminCancelOrders (13), e os pontos de entrada legados de criação de pool Initialize (0) / PreInitialize (10) — use Initialize2 em vez disso.
Historicamente, MonitorStep acionava a interação OpenBook do pool: liquidava ordens preenchidas (movendo receitas dos vaults de mercado para os vaults de pool via CPI OpenBook), cancelava ordens obsoletas e postava novas ordens para fechar a lacuna entre target_orders e amm_open_orders. Com a dependência OpenBook removida, não há nada para acionar e a instrução desapareceu. Qualquer keeper ou integração que ainda a chame deve remover a chamada.

WithdrawPnl / TakePnl

Varredura de admin de taxas de protocolo acumuladas. Argumentos
  • WithdrawPnl não recebe argumentos; lê need_take_pnl_* e move exatamente esses valores.
Mudança breaking (admin apenas). A lista de contas caiu de 17 (+1 opcional) para 10amm_open_orders e todas as seis contas de mercado foram removidas — sem análise de compatibilidade. O layout antigo desalinha (antigo #5 era amm_open_orders, agora pool_coin_token_account) e falha com erros como InvalidCoinVault. Ferramentas de admin devem ser atualizadas.
Contas (novo layout de 10 contas) Efeito
  • Transfere need_take_pnl_coin de pool_coin_token_account para pnl_coin_token_account.
  • Mesmo para pc.
  • Zera need_take_pnl_coin e need_take_pnl_pc.
  • Mudança de lógica: se o saldo do vault for insuficiente para cobrir PnL acumulado, a instrução retorna TakePnlError diretamente (não manipula mais o estado do livro de ordens).
Nenhuma mudança nas reservas já que PnL acumulado foi excluído do invariante.

SetParams

Mudanças de parâmetros de admin, chamadas pelo multisig Raydium. Os argumentos são uma tag param: u8 + payload.
Mudança breaking (admin apenas). A lista de contas foi reduzida para apenas [amm (W), admin (S)] (a autoridade, open-orders, target-orders, vault e todas as contas de mercado foram removidas). O enum param foi renumerado e reduzido: Status = 0, State = 1, Fees = 2 (era 9), SetOpenTime = 3 (era 11). Todos os parâmetros de grade de livro de ordens e AmmOwner, LastOrderDistance, UpdateOpenOrder foram removidos, e a struct SetParamsInstruction removeu new_pubkey e last_order_distance. Ferramentas de admin devem ser atualizadas.

Matriz de mudança de estado

A coluna OpenBook desapareceu — nenhuma instrução toca um livro de ordens mais.

Próximos passos

Fontes: