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.
As instruções AMM v4 esperam uniformemente tanto um pool side (contas do programa AMM v4) quanto um market side (contas OpenBook para o mercado vinculado). Omitir ou descompasar qualquer um dos conjuntos reverte a operação. As listas de contas abaixo usam nomes de campo do Raydium SDK para clareza; o IDL subjacente às vezes usa prefixos serum_*.
Inventário de instruções
| Grupo | Instrução | Notas |
|---|
| Ciclo de vida do pool | Initialize2 | Instrução de criação de pool atual (ainda funcional; a UI padrão para novos pools é CPMM). |
| Liquidez | Deposit | Adicionar liquidez, receber LP. |
| Liquidez | Withdraw | Queimar LP, receber ambos os lados pro-rata. |
| Swap | SwapBaseIn | Swap de entrada exata (caminho completo: vaults + OpenBook). |
| Swap | SwapBaseOut | Swap de saída exata (caminho completo). |
| Swap | SwapBaseInV2 | Swap de entrada exata que ignora OpenBook — apenas vaults, menos contas. |
| Swap | SwapBaseOutV2 | Swap de saída exata que ignora OpenBook. |
| Manutenção | SetParams | Admin: alterar parâmetros do pool. |
| Manutenção | WithdrawPnl | Varrer PnL do protocolo acumulado para as contas proprietário-PnL. |
| Manutenção | CreateConfigAccount | Admin: inicializar o AmmConfig PDA em nível de programa. |
| Manutenção | UpdateConfigAccount | Admin: alterar parâmetros de configuração em nível de programa. |
O SDK expõe builders apenas para instruções com interface de usuário. Instruções de manutenção são tipicamente invocadas pelo keeper do Raydium.
Initialize2
Bootstrap um novo pool AMM v4 vinculado a um mercado OpenBook existente.
Argumentos
nonce: u8
open_time: u64
init_pc_amount: u64
init_coin_amount: u64
Contas (escrita W, assinante S)
| # | Nome | W | S | Notas |
|---|
| 1 | token_program | | | SPL Token. |
| 2 | system_program | | | |
| 3 | rent | | | |
| 4 | amm | W | | Conta AmmInfo (chave com seed). |
| 5 | amm_authority | | | PDA do programa. |
| 6 | amm_open_orders | W | | OpenBook OpenOrders (com seed). |
| 7 | lp_mint | W | | |
| 8 | coin_mint | | | |
| 9 | pc_mint | | | |
| 10 | pool_coin_token_account | W | | |
| 11 | pool_pc_token_account | W | | |
| 12 | pool_withdraw_queue | W | | |
| 13 | pool_target_orders_account | W | | |
| 14 | pool_lp_token_account | W | | ATA LP do criador. |
| 15 | pool_temp_lp_token_account | W | | Conta de rascunho. |
| 16 | market_program | | | Programa OpenBook. |
| 17 | market | | | Mercado OpenBook. |
| 18 | user_wallet | W | S | Criador. Paga rent e financia depósito inicial. |
| 19 | user_token_coin | W | | |
| 20 | user_token_pc | W | | |
Pós-condições
lp_supply = sqrt(init_coin_amount × init_pc_amount) − INIT_BURN, onde INIT_BURN ≈ 100 unidades LP são mantidas fora de circulação.
- As ordens OpenBook ainda não foram postadas; o primeiro
MonitorStep posta a grid inicial.
Erros comuns — InvalidInput (decimais descompassadas, não ordenados), NotApproved, InvalidMarketState do lado OpenBook.
Deposit
Adicionar liquidez.
Argumentos
max_coin_amount: u64
max_pc_amount: u64
base_side: u64 // 0 = base em coin, 1 = base em pc
// (algumas variantes do SDK também aceitam other_amount_min)
Contas (abreviado)
| # | Nome | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | amm_target_orders | W | |
| 6 | lp_mint | W | |
| 7 | pool_coin_token_account | W | |
| 8 | pool_pc_token_account | W | |
| 9 | market | | |
| 10 | user_coin_token_account | W | |
| 11 | user_pc_token_account | W | |
| 12 | user_lp_token_account | W | |
| 13 | user_owner | | S |
Matemática — pro-rata padrão. Usando as reservas efetivas do pool (vaults + on-book), o SDK calcula o par coin/pc que rende 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
amount: u64 // LP a queimar
Contas — como Deposit com a direção invertida; lp_mint é escrita para burn, os ATAs do usuário são receptores. Uma etapa de settle-from-OpenBook semelhante a MonitorStep acontece internamente antes da matemática pro-rata para que o resgate use reservas frescas.
SwapBaseIn
Swap de entrada exata. Sempre um swap de caminho AMM (não roteia através de matching OpenBook).
Use as variantes V2 para novo código. Como o AMM v4 não compartilha mais liquidez com OpenBook, os entrypoints V1 (SwapBaseIn, SwapBaseOut) — que ainda requerem o conjunto completo de contas OpenBook para validação — são funcionalmente redundantes. Novas integrações devem usar SwapBaseInV2 / SwapBaseOutV2, que levam uma lista de contas muito menor e representam o caminho de execução canônico hoje. As formas V1 são documentadas aqui para completude e para ler transações on-chain existentes.
Argumentos
amount_in: u64
minimum_amount_out: u64
Contas (abreviado)
| # | Nome | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | W | |
| 5 | amm_target_orders | W | |
| 6 | pool_coin_token_account | W | |
| 7 | pool_pc_token_account | W | |
| 8 | market_program | | |
| 9 | market | W | |
| 10 | market_bids | W | |
| 11 | market_asks | W | |
| 12 | market_event_queue | W | |
| 13 | market_coin_vault | W | |
| 14 | market_pc_vault | W | |
| 15 | market_vault_signer | | |
| 16 | user_source_token_account | W | |
| 17 | user_dest_token_account | W | |
| 18 | user_owner | | S |
Matemática — veja products/amm-v4/math.
Pré-condições
amm.status permite swap (bit 0 da máscara de bitmask de status não está definido).
amm.state_data.pool_open_time <= now.
amount_in > 0.
user_source_token_account manté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.
state_data.swap_*_in_amount e swap_*_out_amount incrementados (para análise).
need_take_pnl_* incrementado pela parcela de taxa de protocolo.
Erros comuns — ExceededSlippage, InvalidInput, InvalidStatus, InvalidMarket.
SwapBaseOut
Saída exata, inverso de SwapBaseIn. Mesmas contas.
Argumentos
max_amount_in: u64
amount_out: u64
SwapBaseInV2 / SwapBaseOutV2
Variantes de entrypoint de swap que ignoram as contas OpenBook completamente. A matemática é idêntica ao caminho V1, mas a lista de contas encolhe apenas para o lado AMM:
| # | Nome | W | S |
|---|
| 1 | token_program | | |
| 2 | amm | W | |
| 3 | amm_authority | | |
| 4 | amm_open_orders | | |
| 5 | pool_coin_token_account | W | |
| 6 | pool_pc_token_account | W | |
| 7 | user_source_token_account | W | |
| 8 | user_dest_token_account | W | |
| 9 | user_owner | | S |
As reservas efetivas do pool ainda levam em conta tokens postados no OpenBook, então a matemática de quote não muda. Use V2 para economizar compute e evitar passar as contas de mercado quando você não precisa de um crank OpenBook na mesma transação. O roteador Raydium sempre usa a forma V2 ao rotear através de AMM v4.
Os argumentos são os mesmos das formas V1 (amount_in / minimum_amount_out para SwapBaseInV2; max_amount_in / amount_out para SwapBaseOutV2).
MonitorStep (legado / inerte)
Não é mais acionado. AMM v4 não compartilha mais liquidez com OpenBook, então MonitorStep não tem nada a fazer — o pool não tem ordens postadas para settle, cancel ou replace. A instrução permanece no programa on-chain para compatibilidade com versões anteriores, mas o keeper do Raydium não a chama mais. Chamá-la manualmente é efetivamente um no-op (exceto por atualizar o estado zerado) e não deve ser necessário para integradores.
Originalmente esta instrução acionava a interação do pool com OpenBook.
Argumentos
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
Contas — tudo acima para um swap, mais contas administrativas OpenBook.
Efeito original (não é mais relevante na prática):
- Settled quaisquer ordens preenchidas (seus rendimentos movidos de
market_coin_vault/market_pc_vault para os vaults do pool via OpenBook CPI).
- Cancelou ordens obsoletas cujos preços ou tamanhos não correspondiam mais a
target_orders.
- Postou novas ordens para fechar a lacuna entre
target_orders e amm_open_orders.
Sem permissão. Qualquer conta pode chamá-la; historicamente o keeper do Raydium o fazia rotineiramente.
WithdrawPnl / TakePnl
Sweep administrativo de taxas de protocolo acumuladas.
Argumentos
WithdrawPnl não leva argumentos; lê need_take_pnl_* e move exatamente esses valores.
Contas (abreviado)
| # | Nome | W | S | |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_config | | | |
| 5 | amm_open_orders | W | | |
| 6 | pool_coin_token_account | W | | |
| 7 | pool_pc_token_account | W | | |
| 8 | pnl_coin_token_account | W | | Destinatário, armazenado em AmmConfig. |
| 9 | pnl_pc_token_account | W | | |
| 10 | pnl_owner | | S | Multisig admin. |
| 11 | market_program | | | |
| 12 | market | W | | |
| 13 | market_event_queue | W | | |
| 14 | market_coin_vault | W | | |
| 15 | market_pc_vault | W | | |
| 16 | market_vault_signer | | | |
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.
Nenhuma alteração nas reservas já que o PnL acumulado foi excluído do invariante.
SetParams
Alterações de parâmetros admin: máscara de status bitmask, profundidade da grid de ordenação, ondas de quantidade, taxas (raramente), etc. Chamado pelo multisig do Raydium. Os argumentos são uma tag param: u8 + payload, análogo ao UpdateAmmConfig do CPMM.
Matriz de mudança de estado
| Instrução | Oferta lp_mint | Vaults | Contadores PnL | OpenBook |
|---|
Initialize2 | oferta inicial cunhada para criador | + init_coin_amount, + init_pc_amount | 0 | OpenOrders criado |
Deposit | + | + ambos | — | settle fills |
Withdraw | − | − ambos | — | settle fills |
SwapBaseIn | — | + in, − out | + pnl share | talvez re-post grid |
SwapBaseOut | — | + in, − out | + pnl share | talvez re-post grid |
MonitorStep | — | settle fills | — | cancel / post |
WithdrawPnl | — | − (pnl swept) | 0 | — |
SetParams | — | — | — | — |
Próximos passos
Fontes: