Saltar para o conteúdo principal
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

InstruçãoCategoriaNotas
DepositLiquidezAdicionar liquidez, receber LP. Novo layout de 12 contas; layout antigo de 14 contas ainda compatível.
WithdrawLiquidezQueimar LP, receber ambos os lados. Novo layout de 12 contas; layout antigo de 21/22 contas ainda compatível.
SwapBaseInSwapSwap de entrada exata. Novo layout de 9 contas; layout antigo de 18 contas ainda compatível.
SwapBaseOutSwapSwap de saída exata. Novo layout de 9 contas; layout antigo de 18 contas ainda compatível.
WithdrawPnlAdminColetar taxas de protocolo acumuladas. Novo layout de 10 contas (quebra difícil — sem compatibilidade de layout antigo).

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.
InstruçãoCategoria anteriorPropósito anterior
InitializeCiclo de vidaCriar um pool.
PreInitializeCiclo de vidaAuxiliar de pré-alocação legado.
InitModelDataConfiguração de modeloCriar e inicializar a tabela de consulta.
UpdateModelDataConfiguração de modeloPreencher até 5 elementos da tabela por chamada.
MonitorStepCrankLiquidar preenchimentos do OpenBook, repostar ordens.
SetParamsAdminAlterar parâmetros do pool.
WithdrawSrmLegadoColetar reembolsos de desconto de taxa SRM.
SimulateInfoDiagnósticoAuxiliar de cotação somente leitura.

Deposit

Adicionar liquidez, receber tokens LP. Argumentos
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base em coin, 1 = base em pc
Contas — novo layout, 12 contas (gravável W, signatário S)
#NomeWSNotas
0token_programSPL Token.
1ammWAmmInfo do pool.
2amm_authorityPDA em todo o programa.
3amm_target_ordersW
4amm_lp_mintWMint LP.
5amm_coin_vaultWCofre coin do pool.
6amm_pc_vaultWCofre pc do pool.
7model_data_accountTabela de consulta somente leitura.
8user_source_coinWEntrada coin do usuário.
9user_source_pcWEntrada pc do usuário.
10user_dest_lpWATA LP do usuário.
11user_source_ownerSSignatário da transação.
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
amount: u64            // Tokens LP a queimar
Contas — novo layout, 12 contas (gravável W, signatário S)
#NomeWSNotas
0token_programSPL Token.
1ammWAmmInfo do pool.
2amm_authorityPDA em todo o programa.
3amm_target_ordersW
4amm_lp_mintWMint LP.
5amm_coin_vaultWCofre coin do pool.
6amm_pc_vaultWCofre pc do pool.
7model_data_accountTabela de consulta somente leitura.
8user_source_lpWFonte LP do usuário.
9user_dest_coinWSaída coin do usuário.
10user_dest_pcWSaída pc do usuário.
11user_lp_ownerSSignatário da transação.
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
amount_in: u64
minimum_amount_out: u64
Contas — novo layout, 9 contas (gravável W, signatário S)
#NomeWSNotas
0spl_token programSPL Token.
1ammWAmmInfo do pool.
2amm_authorityPDA em todo o programa.
3amm_coin_vaultWCofre coin do pool.
4amm_pc_vaultWCofre pc do pool.
5model_data_accountTabela de consulta somente leitura.
6user_source_tokenWConta de token de entrada do usuário.
7user_destination_tokenWConta de token de saída do usuário.
8user_source_ownerSUsuário (signatário da transação).
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
max_amount_in: u64
amount_out: u64

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)
#NomeWSNotas
0spl_token programSPL Token.
1ammWAmmInfo do pool.
2amm_authorityPDA em todo o programa.
3amm_coin_vaultWCofre coin do pool.
4amm_pc_vaultWCofre pc do pool.
5amm_target_ordersW
6model_dataTabela de consulta.
7user_coinWConta coin do admin (recebe taxa).
8user_pcWConta pc do admin (recebe taxa).
9amm_adminSAdmin do pool (signatário).
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)