Saltar al contenido 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 fue traducida automáticamente por IA. La versión en inglés es la fuente autorizada.Ver versión en inglés →
Stable AMM comparte la mayoría de su superficie de instrucciones con AMM v4. Las instrucciones únicas son InitModelData y UpdateModelData, que rellenan y actualizan la tabla de búsqueda. Todas las demás operaciones (swap, depósito, retiro, crank) siguen el mismo patrón que AMM v4.

Inventario de instrucciones

InstrucciónCategoríaNotas
InitializeCiclo de vidaCrear pool (requiere cuenta model-data preasignada).
PreInitializeCiclo de vidaAyudante de preasignación heredado.
InitModelDataConfiguración del modeloCrear e inicializar la tabla de búsqueda.
UpdateModelDataConfiguración del modeloRellenar hasta 5 elementos de tabla por llamada.
DepositLiquidezAgregar liquidez, recibir LP.
WithdrawLiquidezQuemar LP, recibir ambos lados.
SwapBaseInSwapSwap con entrada exacta.
SwapBaseOutSwapSwap con salida exacta.
MonitorStepCrankLiquidar OpenBook, actualizar órdenes.
SetParamsAdminCambiar parámetros del pool.
WithdrawPnlAdminRetirar comisiones de protocolo acumuladas.
WithdrawSrmHeredadoRetirar reembolsos SRM (heredado).
SimulateInfoDiagnósticoAyudante de cotización de solo lectura.

Initialize

Inicializar un nuevo pool Stable AMM vinculado a un mercado OpenBook existente y una cuenta ModelDataInfo precreada. Argumentos
nonce: u8
open_time: u64
Cuentas (escribible W, firmante S)
#NombreWSNotas
1token_programSPL Token.
2system_program
3rent
4ammWCuenta AmmInfo del pool.
5amm_authorityPDA de todo el programa.
6amm_open_ordersWOpenBook OpenOrders.
7lp_mintWMint de token LP fungible.
8coin_mint
9pc_mint
10pool_coin_token_accountWBóveda coin del pool.
11pool_pc_token_accountWBóveda pc del pool.
12amm_target_ordersWGrilla para órdenes OpenBook.
13model_data_accountLa cuenta de la tabla de búsqueda.
14serum_programPrograma OpenBook.
15serum_marketMercado OpenBook.
16user_dest_lp_tokenWATA LP del creador (recibe LP inicial).
17user_walletWSCreador; paga renta, financia depósito inicial.
(opt)srm_tokenWCuenta de token SRM para descuentos en comisiones (heredado).
Precondiciones
  • model_data_account debe estar ya creada e inicializada por un InitModelData previo.
  • lp_mint debe estar vacía (suministro cero).
  • Las bóvedas deben existir y ser propiedad de amm_authority.
Postcondiciones
  • AmmInfo se inicializa con todas las referencias.
  • TargetOrders se pone en cero y está listo para el primer MonitorStep.
  • Los tokens LP iniciales se acuñan y se envían a user_dest_lp_token.
  • Las órdenes OpenBook aún no se han publicado; el primer MonitorStep las publica.

InitModelData

Crear e inicializar la cuenta ModelDataInfo. Debe llamarse una sola vez antes de Initialize. Argumentos
multiplier: u64       // factor de escala (p. ej., 10^6)
Cuentas (escribible W, firmante S)
#NombreWSNotas
1model_data_accountWLa cuenta de tabla de 50k elementos.
2amm_adminSAdmin del pool (debe firmar para probar autoridad).
Precondiciones
  • model_data_account debe ser suficientemente grande (~1.2 MB para 50k × 24 bytes).
  • model_data_account debe ser propiedad del programa Stable.
Postcondiciones
  • status = Initialized.
  • multiplier se establece.
  • valid_data_count = 0 (sin elementos rellenados aún; llamar a UpdateModelData para agregarlos).
  • El array elements se pone en cero.

UpdateModelData

Rellenar hasta 5 elementos de tabla en una sola llamada. Debe llamarse después de InitModelData pero antes de que los swaps comiencen a usar la tabla. Argumentos
array_data: [UpdateModelData; 5]

pub struct UpdateModelData {
  pub index: u64,
  pub data: DataElement,
}
Cuentas (escribible W, firmante S)
#NombreWSNotas
1amm_adminSFirmante (debe ser el admin del pool).
2model_data_accountWLa cuenta de tabla.
Precondiciones
  • amm_admin debe coincidir con AmmInfo.amm_admin.
  • Cada índice en array_data debe ser válido (dentro de 50,000).
  • Las entradas deben estar ordenadas (no se valida en cadena por velocidad): x ascendente, y descendente, precio ascendente.
Postcondiciones
  • Los elementos se escriben en model_data_account.elements[index] para cada entrada.
  • valid_data_count se actualiza al índice máximo escrito + 1.
Nota de gobernanza: No hay validación en cadena del orden de clasificación o consistencia de precios. Un admin malintencionado o descuidado puede corromper la tabla y causar cotizaciones incorrectas. En la práctica, la multisig de Raydium controla esta dirección.

Deposit

Agregar liquidez, recibir tokens LP. Argumentos
max_coin_amount: u64
max_pc_amount: u64
base_side: u64          // 0 = base en coin, 1 = base en pc
Cuentas — como AMM v4, ~13 cuentas. Debe incluir model_data_account como solo lectura. Matemáticas — pro-rata estándar usando la tabla de búsqueda para calcular la proporción. El SDK calcula el par coin/pc para la cantidad LP deseada y verifica contra límites máximos.

Withdraw

Quemar LP, recibir ambos lados pro-rata. Argumentos
amount: u64            // tokens LP a quemar
Cuentas — como AMM v4, con model_data_account como solo lectura. Precondiciones
  • user_lp_token_account contiene al menos amount.
Postcondiciones
  • Se queman amount tokens LP.
  • El usuario recibe cantidades de coin y pc según el pro-rata actual, ajustado por comisiones acumuladas.

SwapBaseIn

Swap con entrada exacta usando la tabla de búsqueda para precios. Argumentos
amount_in: u64
minimum_amount_out: u64
Cuentas (~17 total)
#NombreWSNotas
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5amm_target_ordersW
6pool_coin_token_accountW
7pool_pc_token_accountW
8model_data_accountTabla de búsqueda de solo lectura.
9serum_program
10serum_marketW
11serum_bidsW
12serum_asksW
13serum_event_queueW
14serum_coin_vaultW
15serum_pc_vaultW
16serum_vault_signer
17user_source_tokenWCuenta de token de entrada del usuario.
18user_dest_tokenWCuenta de token de salida del usuario.
19user_ownerSUsuario (firmante de la transacción).
Precondiciones
  • amm.status permite swap.
  • user_source_token contiene ≥ amount_in.
Postcondiciones
  • El usuario pierde amount_in, gana amount_out ≥ minimum_amount_out.
  • Las comisiones del pool incrementan los contadores need_take_pnl_*.
  • Las órdenes OpenBook pueden liquidarse si se cumplen.
Matemáticas — Interpolación de tabla de búsqueda como se describe en products/stable/math.

SwapBaseOut

Swap con salida exacta (inverso de SwapBaseIn). Mismas cuentas, dirección de matemáticas diferente. Argumentos
max_amount_in: u64
amount_out: u64

MonitorStep

Crank sin permisos: liquidar rellenos OpenBook, actualizar la grilla de órdenes limitadas. Argumentos
plan_order_limit: u16
place_order_limit: u16
cancel_order_limit: u16
Cuentas (~18 total) — igual que MonitorStep de AMM v4 más model_data_account como solo lectura. Precondiciones
  • Las referencias de cuenta OpenBook deben coincidir con el mercado vinculado del pool.
Postcondiciones
  • Los rellenos OpenBook pendientes se liquidan en las bóvedas del pool.
  • Se publican nuevas órdenes limitadas en OpenBook basadas en la curva de tabla de búsqueda.
  • Se actualiza TargetOrders.

SetParams

Solo admin. Cambiar parámetros del pool (estado, state, comisiones, propietario, clave model-data, etc.). Argumentos
param: u8              // qué parámetro cambiar (Status, State, Fees, etc.)
value: Option<u64>    // nuevo valor (si param es numérico)
new_pubkey: Option<Pubkey>  // nueva dirección (si param es una clave de cuenta)
fees: Option<Fees>    // nuevas comisiones (si param es Fees)
Cuentas — varía según el param. Siempre requiere amm_admin como firmante. Parámetros comunes:
  • param = 0 (Status) — cambiar la máscara de operación.
  • param = 9 (Fees) — cambiar trade_fee, división de pnl, etc.
  • param = 11 (ModelDataKey) — revincular la tabla de búsqueda (raro, requiere acción del admin).

WithdrawPnl

Solo admin. Retirar comisiones de protocolo acumuladas de need_take_pnl_* a cuentas PnL designadas. Argumentos — ninguno (impulsado por estado). Cuentas (~14 total)
#NombreWSNotas
1token_program
2ammW
3amm_authority
4amm_open_ordersW
5pool_coin_token_accountW
6pool_pc_token_accountW
7coin_pnl_destWCuenta coin del admin (recibe comisión).
8pc_pnl_destWCuenta pc del admin (recibe comisión).
9pnl_adminSFirmante (debe coincidir con propiedad del pool).
10+Cuentas OpenBook (~4)Liquidar rellenos pendientes primero.
Precondiciones
  • pnl_admin debe estar autorizado.
Postcondiciones
  • need_take_pnl_coin y need_take_pnl_pc se transfieren a las cuentas del admin.
  • Los contadores se ponen en cero.

WithdrawSrm

Heredado (no usar en pools nuevos). Retira reembolsos de token de descuento en comisión SRM de pools antiguos de la era Serum. Argumentos
amount: u64

SimulateInfo

Ayudante de cotización de solo lectura para clientes y el SDK. Argumentos
param: u8              // PoolInfo, SwapBaseInInfo, SwapBaseOutInfo, RunCrankInfo
swap_base_in_value: Option<SwapInstructionBaseIn>
swap_base_out_value: Option<SwapInstructionBaseOut>
Uso — se invoca a través de simulateTransaction para obtener una cotización sin ejecutar un swap.

Próximos pasos

Fuentes:
  • raydium-stable/program/src/instruction.rs (enum y pack/unpack)
  • raydium-stable/program/src/processor.rs (lógica de ejecución)