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ón | Categoría | Notas |
|---|
Initialize | Ciclo de vida | Crear pool (requiere cuenta model-data preasignada). |
PreInitialize | Ciclo de vida | Ayudante de preasignación heredado. |
InitModelData | Configuración del modelo | Crear e inicializar la tabla de búsqueda. |
UpdateModelData | Configuración del modelo | Rellenar hasta 5 elementos de tabla por llamada. |
Deposit | Liquidez | Agregar liquidez, recibir LP. |
Withdraw | Liquidez | Quemar LP, recibir ambos lados. |
SwapBaseIn | Swap | Swap con entrada exacta. |
SwapBaseOut | Swap | Swap con salida exacta. |
MonitorStep | Crank | Liquidar OpenBook, actualizar órdenes. |
SetParams | Admin | Cambiar parámetros del pool. |
WithdrawPnl | Admin | Retirar comisiones de protocolo acumuladas. |
WithdrawSrm | Heredado | Retirar reembolsos SRM (heredado). |
SimulateInfo | Diagnóstico | Ayudante 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
Cuentas (escribible W, firmante S)
| # | Nombre | W | S | Notas |
|---|
| 1 | token_program | | | SPL Token. |
| 2 | system_program | | | |
| 3 | rent | | | |
| 4 | amm | W | | Cuenta AmmInfo del pool. |
| 5 | amm_authority | | | PDA de todo el programa. |
| 6 | amm_open_orders | W | | OpenBook OpenOrders. |
| 7 | lp_mint | W | | Mint de token LP fungible. |
| 8 | coin_mint | | | |
| 9 | pc_mint | | | |
| 10 | pool_coin_token_account | W | | Bóveda coin del pool. |
| 11 | pool_pc_token_account | W | | Bóveda pc del pool. |
| 12 | amm_target_orders | W | | Grilla para órdenes OpenBook. |
| 13 | model_data_account | | | La cuenta de la tabla de búsqueda. |
| 14 | serum_program | | | Programa OpenBook. |
| 15 | serum_market | | | Mercado OpenBook. |
| 16 | user_dest_lp_token | W | | ATA LP del creador (recibe LP inicial). |
| 17 | user_wallet | W | S | Creador; paga renta, financia depósito inicial. |
| (opt) | srm_token | W | | Cuenta 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)
| # | Nombre | W | S | Notas |
|---|
| 1 | model_data_account | W | | La cuenta de tabla de 50k elementos. |
| 2 | amm_admin | | S | Admin 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)
| # | Nombre | W | S | Notas |
|---|
| 1 | amm_admin | | S | Firmante (debe ser el admin del pool). |
| 2 | model_data_account | W | | La 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)
| # | Nombre | W | S | Notas |
|---|
| 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 | model_data_account | | | Tabla de búsqueda de solo lectura. |
| 9 | serum_program | | | |
| 10 | serum_market | W | | |
| 11 | serum_bids | W | | |
| 12 | serum_asks | W | | |
| 13 | serum_event_queue | W | | |
| 14 | serum_coin_vault | W | | |
| 15 | serum_pc_vault | W | | |
| 16 | serum_vault_signer | | | |
| 17 | user_source_token | W | | Cuenta de token de entrada del usuario. |
| 18 | user_dest_token | W | | Cuenta de token de salida del usuario. |
| 19 | user_owner | | S | Usuario (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)
| # | Nombre | W | S | Notas |
|---|
| 1 | token_program | | | |
| 2 | amm | W | | |
| 3 | amm_authority | | | |
| 4 | amm_open_orders | W | | |
| 5 | pool_coin_token_account | W | | |
| 6 | pool_pc_token_account | W | | |
| 7 | coin_pnl_dest | W | | Cuenta coin del admin (recibe comisión). |
| 8 | pc_pnl_dest | W | | Cuenta pc del admin (recibe comisión). |
| 9 | pnl_admin | | S | Firmante (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
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)