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 →
Stable AMM é um programa independente com seu próprio ID de programa. Não é um modo do programa AMM v4, e não é negociado “através” do AMM v4 — é implantado, atualizado e chamado separadamente. Assemelha-se ao AMM v4 apenas nas convenções de taxa e layout de conta.
Atualização de 2026-06-22 — remoção do código OpenBook (market) inativo. Stable AMM parou de postar ordens no OpenBook há muito tempo; o caminho de market-making do orderbook está dormindo há anos. Esta atualização deleta as contas e código relacionados ao mercado restantes — não altera o comportamento de negociação ao vivo.Duas consequências para integradores:
  1. Layouts de conta menores. SwapBaseIn / SwapBaseOut (18 → 9), Deposit (14 → 12), e Withdraw (21/22 → 12) removem as contas Serum/market inativas. Layouts antigos ainda são analisados para compatibilidade com versões anteriores. WithdrawPnl (16 → 10) é uma mudança de quebra difícil sem caminho de compatibilidade (apenas admin).
  2. A maioria das instruções é removida. Apenas SwapBaseIn, SwapBaseOut, Deposit, Withdraw, e WithdrawPnl permanecem chamáveis. Todas as outras instruções não podem mais ser chamadas.
Changelog: reference/changelog.

Inventário de instruções

Chamáveis

Removidas (não mais chamáveis)

Estas foram removidas na atualização de 2026-06-22 e não podem mais ser invocadas. Veja Instruções removidas.

Deposit

Adicionar liquidez, receber tokens LP. Argumentos
Contas — novo layout, 12 contas (gravável W, signatário S) Compatibilidade: amm_open_orders (antigo #3) e serum_market (antigo #9) são removidos. Quando 14 contas são passadas, a instrução é analisada com o layout antigo de 14 contas; as contas Serum são ignoradas. Matemática — pro-rata padrão usando a tabela de consulta para calcular a razão. O SDK calcula o par coin/pc para a quantidade LP desejada e verifica contra os limites máximos.

Withdraw

Queimar LP, receber ambos os lados pro-rata. Argumentos
Contas — novo layout, 12 contas (gravável W, signatário S) Compatibilidade: nove contas Serum (amm_open_orders, serum_program, serum_market, serum_coin_vault, serum_pc_vault, serum_vault_signer, serum_event_q, serum_bids, serum_asks) são removidas. Os layouts antigos de 21 ou 22 contas ainda são aceitos. Note, porém, que a lógica de taxa de referência para a 22ª conta opcional referrer_pc_wallet foi removida — ainda pode ser passada mas não tem mais efeito. Pré-condições
  • user_source_lp contém pelo menos amount.
Pós-condições
  • amount tokens LP são queimados.
  • O usuário recebe quantidades de coin e pc de acordo com o pro-rata atual, ajustado para taxas acumuladas.

SwapBaseIn

Swap de entrada exata usando a tabela de consulta para precificação. Argumentos
Contas — novo layout, 9 contas (gravável W, signatário S) Compatibilidade: as nove contas OpenBook (amm_open_orders, serum_program, serum_market, serum_bids, serum_asks, serum_event_queue, serum_coin_vault, serum_pc_vault, serum_vault_signer) são removidas. Se o número de contas passadas não for 9, a instrução é analisada com o layout antigo de 18 contas; as contas Serum ainda devem ocupar suas posições, mas seu conteúdo não é mais validado ou usado. Pré-condições
  • amm.status permite swap.
  • user_source_token contém ≥ amount_in.
Pós-condições
  • O usuário perde amount_in, ganha amount_out ≥ minimum_amount_out.
  • As taxas do pool incrementam os contadores need_take_pnl_*.
Matemática — Interpolação de tabela de consulta conforme descrito em products/stable/math.

SwapBaseOut

Swap de saída exata (inverso de SwapBaseIn). Mesmo layout de 9 contas, direção de matemática diferente. Argumentos

WithdrawPnl

Apenas admin. Coletar taxas de protocolo acumuladas de need_take_pnl_* em contas PnL designadas.
Mudança de quebra difícil — sem caminho de compatibilidade. Esta instrução não tem análise para o layout antigo. Enviar o layout antigo falha com erros de validação como InvalidTokenCoin devido ao desalinhamento de contas (antigo #3 era open_orders). Ferramentas de admin que chamam WithdrawPnl devem ser atualizadas para o novo layout de 10 contas.
Argumentos — nenhum (orientado por estado). Contas — novo layout, 10 contas fixas, apenas admin (gravável W, signatário S) Mudança de lógica: quando os fundos disponíveis do pool são insuficientes para sacar o PnL acumulado, o pool não é mais colocado em CancelAllOrdersState / Disabled; a instrução retorna TakePnlError diretamente. A referrer_pc_wallet opcional também foi removida. Pré-condições
  • amm_admin deve ser autorizado.
Pós-condições
  • need_take_pnl_coin e need_take_pnl_pc são transferidos para as contas do admin.
  • Os contadores são zerados.

Instruções removidas

As seguintes instruções foram removidas na atualização de 2026-06-22 e não podem mais ser chamadas. Estão documentadas aqui apenas para que integradores as reconheçam em transações históricas e SDKs.
  • Initialize — anteriormente inicializava um novo pool Stable AMM. Removida.
  • PreInitialize — auxiliar de pré-alocação legado. Removida.
  • InitModelData — anteriormente criava e inicializava a tabela de consulta ModelDataInfo. Removida.
  • UpdateModelData — anteriormente preenchia até 5 elementos da tabela de consulta por chamada. Removida.
  • MonitorStep — o crank OpenBook que liquidava preenchimentos e repostava a grade de ordens. Já estava dormindo há muito tempo após o pool parar de postar no OpenBook; agora removida.
  • SetParams — mudanças de parâmetros de admin (status, taxas, proprietário, chave de dados de modelo, etc.). Removida.
  • WithdrawSrm — coletava reembolsos de desconto de taxa SRM de pools da era Serum inicial. Removida.
  • SimulateInfo — auxiliar de cotação somente leitura. Removida; use os auxiliares de curva estável off-chain do SDK para cotação (veja Demonstrações de código).

Próximos passos

Fontes:
  • raydium-stable/program/src/instruction.rs (enum e pack/unpack)
  • raydium-stable/program/src/processor.rs (lógica de execução)