> ## Documentation Index
> Fetch the complete documentation index at: https://docs.raydium.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 2026-06-22 — Stable AMM: remover código OpenBook inativo

> Stable AMM remove suas contas e código de market-making OpenBook dormentes: layouts menores para Swap/Deposit/Withdraw, uma mudança com breaking change em WithdrawPnl, e uma fórmula simplificada de ativos do pool.

<Info>
  **Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.**

  [Ver versão em inglês →](/reference/changelog/2026-06-22-stable-amm-openbook-cleanup)
</Info>

Stable AMM é um **programa independente** (seu próprio program ID — não é negociado através do programa AMM v4). Ele **parou de postar ordens no OpenBook há muito tempo**; o caminho de market-making OpenBook está dormindo há anos. Este upgrade é a limpeza: **remove as contas e código relacionados ao market agora mortos** dos layouts de instrução. Ele **não** muda nenhum comportamento de trading ao vivo — não havia ordens OpenBook deixadas para parar de colocar.

## TL;DR para integradores

* **Swap / Deposit / Withdraw continuam funcionando sem mudanças.** Transações construídas com os layouts de conta antigos ainda executam — as contas Serum/market removidas são simplesmente ignoradas. Você **não** precisa enviar uma atualização de cliente para manter os fluxos existentes vivos.
* **Mas você deve migrar para os novos layouts menores em breve.** Os novos layouts removem as contas de market mortas, reduzindo o tamanho da transação: `SwapBaseIn` / `SwapBaseOut` vão de **18 → 9** contas, `Deposit` **14 → 12**, `Withdraw` **21 (+1 opcional) → 12**. O caminho de compatibilidade será removido em uma versão futura.
* **`WithdrawPnl` é uma mudança com breaking change (apenas admin).** Vai de **16 (+1 opcional) → 10** contas com **sem parsing de compatibilidade**. Enviar o layout antigo falha com erros de validação como `InvalidTokenCoin` por causa do desalinhamento de contas (antigo #3 era `open_orders`). Qualquer ferramenta de admin que chame `WithdrawPnl` deve ser atualizada.
* **Taxa de referência removida em `Withdraw` e `WithdrawPnl`.** A conta opcional `referrer_pc_wallet` ainda pode ser passada para compatibilidade com versões anteriores no layout antigo de `Withdraw`, mas não tem mais efeito.
* **Contabilidade de ativos do pool simplificada.** Os ativos totais do pool agora são `saldos do vault − PnL pendente`; o termo de open-order OpenBook — já zero na prática — é removido da fórmula. Indexadores e código de quoting que ainda adicionavam um termo OpenOrders devem removê-lo.
* **A maioria das instruções agora foi removida.** Apenas `SwapBaseIn`, `SwapBaseOut`, `Deposit`, `Withdraw` e `WithdrawPnl` permanecem chamáveis. `Initialize`, `PreInitialize`, `InitModelData`, `UpdateModelData`, `MonitorStep`, `SetParams`, `WithdrawSrm` e `SimulateInfo` não são mais chamáveis.

## Por que isso importa (para traders, LPs e integradores)

* **Traders** não veem mudança no comportamento de swap ou forma de preço — a curva da lookup-table não muda. Swaps com novo layout são mais baratos de executar porque a transação carrega nove contas a menos.
* **LPs** mantêm a mesma economia de depósito/saque. A liquidez há muito tempo fica inteiramente nos vaults do pool, então o valor do pool está totalmente no-pool; este upgrade apenas deleta o encanamento de market obsoleto.
* **Integradores** obtêm transações menores e mais simples e um modelo de quoting com um termo a menos (já vestigial). As integrações existentes não quebram (exceto admin `WithdrawPnl`), mas o shim de compatibilidade é temporário — migre quando conveniente, antes de ser removido.

## Mudanças no nível de instrução

### `SwapBaseIn` / `SwapBaseOut` — 18 → 9 contas (layout antigo ainda compatível)

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. **Compatibilidade**: se a instrução receber um número de contas diferente de 9, ela é 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.

### `Deposit` — 14 → 12 contas (layout antigo ainda compatível)

`amm_open_orders` (antigo #3) e `serum_market` (antigo #9) são removidas. Quando 14 contas são passadas, o layout antigo é analisado para compatibilidade.

### `Withdraw` — 21 (+1 opcional) → 12 contas (layout antigo ainda compatível)

As nove contas Serum são removidas. Os layouts antigos de 21 ou 22 contas ainda são aceitos, **mas a lógica de taxa de referência para a 22ª conta opcional `referrer_pc_wallet` foi removida** — a conta ainda pode ser passada, mas não tem mais efeito.

### `WithdrawPnl` — 16 (+1 opcional) → 10 contas (⚠️ sem caminho de compatibilidade, breaking change)

Layout fixo de 10 contas, apenas para admin. **Não há** parsing de compatibilidade para o layout antigo; enviá-lo falha com erros como `InvalidTokenCoin` devido ao desalinhamento de contas. **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 conta opcional `referrer_pc_wallet` também foi removida.

## Mudança no cálculo de ativos do pool

A fórmula historicamente adicionava os fundos que o pool mantinha como open orders em sua conta OpenOrders OpenBook. Esse termo tem sido zero na prática desde que o pool parou de postar ordens; este upgrade o remove inteiramente da fórmula, deixando o cálculo apenas do vault:

|        | Fórmula                                                                                                       |
| ------ | ------------------------------------------------------------------------------------------------------------- |
| Antigo | `saldos do vault + fundos de open-order (native_coin_total / native_pc_total) − PnL pendente (need_take_pnl)` |
| Novo   | `saldos do vault − PnL pendente (need_take_pnl)`                                                              |

## Páginas atualizadas

* `products/stable/overview` — modelo puro AMM, dependência OpenBook removida, tabelas de comparação e contagem de contas atualizadas.
* `products/stable/index` — "O que é" e tabela de fatos-chave não reivindicam mais uma dependência OpenBook.
* `products/stable/accounts` — contas OpenBook removidas do inventário; campos Serum/open-orders de `AmmInfo` marcados como legado/não utilizados; nota de ativos do pool adicionada.
* `products/stable/instructions` — novas tabelas de contas para Swap / Deposit / Withdraw / WithdrawPnl com callouts de compatibilidade; todas as outras instruções (`Initialize`, `PreInitialize`, `InitModelData`, `UpdateModelData`, `MonitorStep`, `SetParams`, `WithdrawSrm`, `SimulateInfo`) marcadas como removidas / não mais chamáveis.
* `products/stable/math` — atualização da fórmula de ativos do pool; seção `MonitorStep` / OpenBook reformulada como há muito aposentada.
* `products/stable/fees` — seção "PnL do OpenBook" aposentada; fluxo de coleta não mais liquida preenchimentos OpenBook.
* `products/stable/code-demos` — orientação de contagem de contas atualizada; SDK ainda abstrai seleção de layout.

**Verificado contra**:

* Fonte do programa `raydium-stable` (pós-upgrade `instruction.rs` / `processor.rs`).
* Implantação do programa Stable AMM on-chain no Solana mainnet-beta.
