Saltar para o conteúdo principal

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.

Esta página foi traduzida automaticamente por IA. A versão em inglês é a fonte oficial.Ver versão em inglês →
O Stable AMM compartilha a maioria da superfície de instruções com o AMM v4. As instruções únicas são InitModelData e UpdateModelData, que populam e atualizam a tabela de consulta. Todas as outras operações (swap, depósito, saque, crank) seguem o mesmo padrão do AMM v4.

Inventário de instruções

InstruçãoCategoriaNotas
InitializeCiclo de vidaCriar pool (requer conta model-data pré-alocada).
PreInitializeCiclo de vidaAuxiliar de pré-alocação legado.
InitModelDataConfiguração de modeloCriar e inicializar a tabela de consulta.
UpdateModelDataConfiguração de modeloPopular até 5 elementos da tabela por chamada.
DepositLiquidezAdicionar liquidez, receber LP.
WithdrawLiquidezQueimar LP, receber ambos os lados.
SwapBaseInSwapSwap com entrada exata.
SwapBaseOutSwapSwap com saída exata.
MonitorStepCrankLiquidar OpenBook, atualizar pedidos.
SetParamsAdminAlterar parâmetros do pool.
WithdrawPnlAdminColetar taxas de protocolo acumuladas.
WithdrawSrmLegadoColetar rebates de SRM (legado).
SimulateInfoDiagnósticoAuxiliar de cotação somente leitura.

Initialize

Criar um novo pool Stable AMM vinculado a um mercado OpenBook existente e uma conta ModelDataInfo pré-criada. Argumentos
nonce: u8
open_time: u64
Contas (gravável W, signatário S)
#NomeWSNotas
1token_programSPL Token.
2system_program
3rent
4ammWConta AmmInfo do pool.
5amm_authorityPDA em nível de programa.
6amm_open_ordersWOpenOrders do OpenBook.
7lp_mintWMint do token LP fungível.
8coin_mint
9pc_mint
10pool_coin_token_accountWCofre de coin do pool.
11pool_pc_token_accountWCofre de pc do pool.
12amm_target_ordersWGrade para pedidos do OpenBook.
13model_data_accountA conta da tabela de consulta.
14serum_programPrograma OpenBook.
15serum_marketMercado OpenBook.
16user_dest_lp_tokenWATA do LP do criador (recebe LP inicial).
17user_walletWSCriador; paga aluguel, financia depósito inicial.
(opt)srm_tokenWConta de token SRM para descontos de taxa (legado).
Pré-condições
  • model_data_account deve já estar criada e inicializada por um InitModelData anterior.
  • lp_mint deve estar vazio (oferta zero).
  • Os cofres devem existir e ser de propriedade de amm_authority.
Pós-condições
  • AmmInfo é inicializado com todas as referências.
  • TargetOrders é zerado e pronto para o primeiro MonitorStep.
  • Tokens LP iniciais são cunhados e enviados para user_dest_lp_token.
  • Pedidos do OpenBook ainda não foram postados; o primeiro MonitorStep os posta.

InitModelData

Criar e inicializar a conta ModelDataInfo. Deve ser chamado uma vez antes de Initialize. Argumentos
multiplier: u64       // fator de escala (p. ex., 10^6)
Contas (gravável W, signatário S)
#NomeWSNotas
1model_data_accountWA conta da tabela com 50k elementos.
2amm_adminSAdmin do pool (deve assinar para provar autoridade).
Pré-condições
  • model_data_account deve ser suficientemente grande (~1,2 MB para 50k × 24 bytes).
  • model_data_account deve ser de propriedade do programa Stable.
Pós-condições
  • status = Initialized.
  • multiplier é definido.
  • valid_data_count = 0 (nenhum elemento populado ainda; chame UpdateModelData para adicioná-los).
  • Array elements é zerado.

UpdateModelData

Popular até 5 elementos da tabela em uma única chamada. Deve ser chamado após InitModelData mas antes de os swaps começarem a usar a tabela. Argumentos
array_data: [UpdateModelData; 5]

pub struct UpdateModelData {
  pub index: u64,
  pub data: DataElement,
}
Contas (gravável W, signatário S)
#NomeWSNotas
1amm_adminSSignatário (deve ser o admin do pool).
2model_data_accountWA conta da tabela.
Pré-condições
  • amm_admin deve corresponder a AmmInfo.amm_admin.
  • Cada índice em array_data deve ser válido (dentro de 50.000).
  • As entradas devem estar ordenadas (não validadas em cadeia por velocidade): x ascendente, y descendente, preço ascendente.
Pós-condições
  • Elementos são escritos em model_data_account.elements[index] para cada entrada.
  • valid_data_count é atualizado para o máximo índice escrito + 1.
Nota de governança: Não há reforço em cadeia da ordem de classificação ou consistência de preço. Um admin malicioso ou descuidado pode corromper a tabela e causar cotações incorretas. Na prática, o multisig do Raydium controla este endereço.

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 — como AMM v4, ~13 contas. Deve incluir model_data_account como somente leitura. Matemática — pro-rata padrão usando a tabela de consulta para calcular a proporção. O SDK calcula o par coin/pc para a quantidade de LP desejada e verifica contra limites máximos.

Withdraw

Queimar LP, receber ambos os lados pro-rata. Argumentos
amount: u64            // tokens LP a queimar
Contas — como AMM v4, com model_data_account como somente leitura. Pré-condições
  • user_lp_token_account contém pelo menos amount.
Pós-condições
  • amount tokens LP são queimados.
  • Usuário recebe quantias de coin e pc de acordo com a pro-rata atual, ajustada para taxas acumuladas.

SwapBaseIn

Swap com entrada exata usando a tabela de consulta para precificação. Argumentos
amount_in: u64
minimum_amount_out: u64
Contas (~17 no total)
#NomeWSNotas
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5amm_target_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8model_data_accountTabela de consulta somente leitura.
9serum_program
10serum_marketW
11serum_bidsW
12serum_asksW
13serum_event_queueW
14serum_coin_vaultW
15serum_pc_vaultW
16serum_vault_signer
17user_source_tokenWConta de token de entrada do usuário.
18user_dest_tokenWConta de token de saída do usuário.
19user_ownerSUsuário (signatário da transação).
Pré-condições
  • amm.status permite swap.
  • user_source_token contém ≥ amount_in.
Pós-condições
  • Usuário perde amount_in, ganha amount_out ≥ minimum_amount_out.
  • Taxas do pool incrementam contadores need_take_pnl_*.
  • Pedidos do OpenBook podem ser liquidados se preenchidos.
Matemática — Interpolação de tabela de consulta conforme descrito em products/stable/math.

SwapBaseOut

Swap com saída exata (inverso de SwapBaseIn). Mesmas contas, direção de matemática diferente. Argumentos
max_amount_in: u64
amount_out: u64

MonitorStep

Crank sem permissão: liquidar preenchimentos do OpenBook, atualizar a grade de pedidos de limite. Argumentos
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
Contas (~18 no total) — mesmas do MonitorStep do AMM v4 mais model_data_account como somente leitura. Pré-condições
  • As referências de conta do OpenBook devem corresponder ao mercado vinculado do pool.
Pós-condições
  • Preenchimentos pendentes do OpenBook são liquidados nos cofres do pool.
  • Novos pedidos de limite são postados no OpenBook com base na curva da tabela de consulta.
  • TargetOrders é atualizado.

SetParams

Apenas admin. Alterar parâmetros do pool (status, estado, taxas, proprietário, chave model-data, etc.). Argumentos
param: u8              // qual parâmetro alterar (Status, State, Fees, etc.)
value: Option<u64>    // novo valor (se param for numérico)
new_pubkey: Option<Pubkey>  // novo endereço (se param for uma chave de conta)
fees: Option<Fees>    // novas taxas (se param for Fees)
Contas — varia por param. Sempre requer amm_admin como signatário. Parâmetros comuns:
  • param = 0 (Status) — alterar a máscara de operação.
  • param = 9 (Fees) — alterar trade_fee, divisão de pnl, etc.
  • param = 11 (ModelDataKey) — rebind à tabela de consulta (raro, requer ação do admin).

WithdrawPnl

Apenas admin. Coletar taxas de protocolo acumuladas de need_take_pnl_* em contas de PnL designadas. Argumentos — nenhum (orientado por estado). Contas (~14 no total)
#NomeWSNotas
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5pool_coin_token_accountW
6pool_pc_token_accountW
7coin_pnl_destWConta de coin do admin (recebe taxa).
8pc_pnl_destWConta de pc do admin (recebe taxa).
9pnl_adminSSignatário (deve corresponder à propriedade do pool).
10+Contas do OpenBook (~4)Liquidar preenchimentos pendentes primeiro.
Pré-condições
  • pnl_admin deve estar 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.

WithdrawSrm

Legado (não use em novos pools). Coleta rebates de token de desconto de taxa de SRM de pools da era Serum inicial. Argumentos
amount: u64

SimulateInfo

Auxiliar de cotação somente leitura para clientes e o SDK. Argumentos
param: u8              // PoolInfo, SwapBaseInInfo, SwapBaseOutInfo, RunCrankInfo
swap_base_in_value: Option<SwapInstructionBaseIn>
swap_base_out_value: Option<SwapInstructionBaseOut>
Uso — invocado via simulateTransaction para obter uma cotação sem executar um swap.

Próximos passos

  • Contas — para layouts e tamanhos dos campos de conta.
  • Matemática — para a lógica de interpolação da tabela de consulta.
  • Demos de código — para ver como chamar estas do SDK.
Fontes:
  • raydium-stable/program/src/instruction.rs (enum e pack/unpack)
  • raydium-stable/program/src/processor.rs (lógica de execução)