Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
x·y=k). Ele não altera nenhum comportamento de negociação ativo — não havia ordens OpenBook restantes 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 (sem validação, sem CPI).
SwapBaseIn/SwapBaseOutainda esperam 17 (+1 opcional) contas; layouts deDepositeWithdrawsão inalterados. Você não precisa enviar uma atualização de cliente para manter os fluxos existentes vivos. - Migre para os pontos de entrada de swap V2.
SwapBaseInV2/SwapBaseOutV2não carregam contas de market e nenhumamm_open_orders(8 contas no total), então as transações são menores e mais baratas. Routers/agregadores devem rotear através de V2. WithdrawPnlé uma quebra severa (apenas admin). Vai de 17 (+1 opcional) → 10 contas com sem análise de compatibilidade; o layout antigo desalinha (antigo #5 eraamm_open_orders) e falha na validação. Ferramentas de admin devem ser atualizadas.SetParamsé uma quebra severa (apenas admin). Contas encolhem para[amm, admin], e o enumparamé renumerado (Fees9 → 2,SetOpenTime11 → 3);AmmOwner,LastOrderDistance,UpdateOpenOrdere os parâmetros de grid são removidos.- Várias instruções não são mais chamáveis.
Initialize,PreInitialize,MonitorStep,MigrateToOpenBook,WithdrawSrm,SimulateInfoeAdminCancelOrdersagora revertam. UseInitialize2para criar pools. - Layouts de conta on-chain são estáveis em bytes, e códigos de erro são inalterados.
AmmInfo/StateDatamantêm seu layout (campos OpenBook antigos retidos mas deprecados/congelados); a numeraçãoAmmErroré preservada, com apenas um novoNotAllowedanexado.
Por que isso importa (para traders, LPs e integradores)
- Traders não veem mudança no comportamento de swap ou preço — a curva de produto constante é inalterada. Swaps com layout V2 são mais baratos de colocar porque carregam ~8 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 que lê direto dos vaults. Integrações existentes não quebram (exceto admin
WithdrawPnl/SetParams), mas o shim de compatibilidade v1-swap é temporário — migre para V2 quando conveniente.
Mudanças no nível de instrução
Ainda chamável, layout inalterado (compatível com versões anteriores)
Initialize2, Deposit, Withdraw, SwapBaseIn, SwapBaseOut, CreateConfigAccount e UpdateConfigAccount mantêm suas listas de contas existentes. Em SwapBaseIn / SwapBaseOut, Deposit e Withdraw, as contas OpenBook/market ainda são aceitas posicionalmente mas não são mais validadas ou usadas — nenhum CPI é emitido e as reservas do pool são computadas apenas de vault. A contagem de contas ainda deve corresponder, então as transações existentes continuam executando inalteradas.
SwapBaseInV2 / SwapBaseOutV2 — caminho recomendado
Omita as contas de market e amm_open_orders inteiramente (8 contas; tags 16 / 17). A matemática de quoting é idêntica a v1. Novas integrações e routers devem usar V2.
WithdrawPnl — 17 (+1 opcional) → 10 contas (⚠️ quebra severa, sem caminho de compatibilidade)
amm_open_orders e todas as seis contas de market são removidas. O novo layout fixo de 10 contas, apenas admin, não tem análise de compatibilidade; o layout antigo desalinha e falha com erros como InvalidCoinVault.
SetParams — reduzido para [amm, admin] (⚠️ quebra severa) + parâmetros renumerados
A autoridade, open-orders, target-orders, vault e todas as contas de market são removidas. O enum param é renumerado e aparado:
| Param | Valor antigo | Novo valor |
|---|---|---|
Status | 0 | 0 |
State | 1 | 1 |
Fees | 9 | 2 |
SetOpenTime | 11 | 3 |
OrderNum, Depth, AmountWave, MinPriceMultiplier, MaxPriceMultiplier, MinSize, VolMaxCutRatio, InitOrderDepth, SetSwitchTime, ClearOpenTime, Seperate) mais AmmOwner, LastOrderDistance e UpdateOpenOrder são removidos. O struct SetParamsInstruction remove new_pubkey e last_order_distance.
Não mais chamável (revertam em tempo de execução; builders removidos)
| Instrução | tag | Substituição |
|---|---|---|
Initialize | 0 | Initialize2 |
MonitorStep | 2 | nenhuma (crank de order-book, aposentada) |
MigrateToOpenBook | 5 | nenhuma |
WithdrawSrm | 8 | nenhuma (desconto de taxa SRM, aposentado) |
PreInitialize | 10 | Initialize2 |
SimulateInfo | 12 | quoting off-chain / SDK |
AdminCancelOrders | 13 | nenhuma |
Mudanças de reserva / estado
- Fórmula de ativos do pool. Os ativos totais do pool agora são
saldos de vault − PnL pendente (need_take_pnl); o termo de open-order OpenBook — já zero na prática — é removido. O código de quoting pode ler direto dos saldos de vault. - Campos de estado deprecados.
StateData.total_pnl_pc,total_pnl_coin,orderbook_to_init_time,swap_coin_in_amount,swap_pc_out_amount,swap_acc_pc_fee,swap_pc_in_amount,swap_coin_out_amounteswap_acc_coin_feesão retidos para compatibilidade de layout mas não são mais atualizados. Consumidores que dependem dos contadores de volumeswap_*devem mudar para trade logs. - Inicialização de
AmmInfo.coin_lot_size,pc_lot_sizeemin_sizeagora são inicializados para0. - Dependência removida e CPIs. O crate
serum_dexé removido deCargo.toml; todos os CPIs Serum DEX (invoke_dex_new_order_v3,invoke_dex_cancel_order_v2,invoke_dex_settle_funds,invoke_dex_init_open_orders, …) são removidos deinvokers.rs. Structs de dados removidos:LastOrderDistance,SimulateParams,RunCrankData,GetPoolData,GetSwapBaseInData,GetSwapBaseOutData.

