Saltar al contenido principal
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 es un programa independiente con su propio ID de programa. No es un modo del programa AMM v4, ni se negocia «a través» de AMM v4 — se implementa, actualiza e invoca por separado. Solo se parece a AMM v4 en las convenciones de comisiones y disposición de cuentas.
Actualización del 2026-06-22 — eliminación del código muerto de OpenBook (mercado). Stable AMM dejó de publicar órdenes en OpenBook hace mucho tiempo; la ruta de creación de mercado del libro de órdenes ha estado inactiva durante años. Esta actualización elimina las cuentas y el código relacionados con el mercado restantes — no cambia el comportamiento del comercio en vivo.Dos consecuencias para los integradores:
  1. Disposiciones de cuenta más pequeñas. SwapBaseIn / SwapBaseOut (18 → 9), Deposit (14 → 12), y Withdraw (21/22 → 12) eliminan las cuentas muertas de Serum/mercado. Las disposiciones antiguas aún se analizan para compatibilidad hacia atrás. WithdrawPnl (16 → 10) es un cambio importante con ruptura total sin ruta de compatibilidad (solo administrador).
  2. La mayoría de las instrucciones se eliminan. Solo SwapBaseIn, SwapBaseOut, Deposit, Withdraw, y WithdrawPnl permanecen invocables. Todas las demás instrucciones ya no pueden ser llamadas.
Registro de cambios: reference/changelog.

Inventario de instrucciones

Invocables

InstrucciónCategoríaNotas
DepositLiquidezAñadir liquidez, recibir LP. Nueva disposición de 12 cuentas; la disposición antigua de 14 cuentas sigue siendo compatible.
WithdrawLiquidezQuemar LP, recibir ambos lados. Nueva disposición de 12 cuentas; la disposición antigua de 21/22 cuentas sigue siendo compatible.
SwapBaseInSwapSwap de entrada exacta. Nueva disposición de 9 cuentas; la disposición antigua de 18 cuentas sigue siendo compatible.
SwapBaseOutSwapSwap de salida exacta. Nueva disposición de 9 cuentas; la disposición antigua de 18 cuentas sigue siendo compatible.
WithdrawPnlAdminRecopilar comisiones de protocolo acumuladas. Nueva disposición de 10 cuentas (ruptura total — sin compatibilidad de disposición antigua).

Eliminadas (ya no invocables)

Estas fueron eliminadas en la actualización del 2026-06-22 y ya no pueden ser invocadas. Consulta Instrucciones eliminadas.
InstrucciónCategoría anteriorPropósito anterior
InitializeCiclo de vidaCrear un pool.
PreInitializeCiclo de vidaAsistente 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.
MonitorStepCrankLiquidar rellenos de OpenBook, republicar órdenes.
SetParamsAdminCambiar parámetros del pool.
WithdrawSrmHeredadoRecopilar reembolsos de descuento de comisión SRM.
SimulateInfoDiagnósticoAsistente de cotización de solo lectura.

Deposit

Añadir 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 — disposición nueva, 12 cuentas (escribible W, firmante S)
#NombreWSNotas
0token_programSPL Token.
1ammWAmmInfo del pool.
2amm_authorityPDA de todo el programa.
3amm_target_ordersW
4amm_lp_mintWMint de LP.
5amm_coin_vaultWBóveda de coin del pool.
6amm_pc_vaultWBóveda de pc del pool.
7model_data_accountTabla de búsqueda de solo lectura.
8user_source_coinWEntrada de coin del usuario.
9user_source_pcWEntrada de pc del usuario.
10user_dest_lpWATA de LP del usuario.
11user_source_ownerSFirmante de la transacción.
Compatibilidad: amm_open_orders (antiguo #3) y serum_market (antiguo #9) se eliminan. Cuando se pasan 14 cuentas, la instrucción se analiza con la disposición antigua de 14 cuentas; las cuentas de Serum se ignoran. 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 de LP deseada y verifica contra los límites máximos.

Withdraw

Quemar LP, recibir ambos lados pro-rata. Argumentos
amount: u64            // Tokens LP a quemar
Cuentas — disposición nueva, 12 cuentas (escribible W, firmante S)
#NombreWSNotas
0token_programSPL Token.
1ammWAmmInfo del pool.
2amm_authorityPDA de todo el programa.
3amm_target_ordersW
4amm_lp_mintWMint de LP.
5amm_coin_vaultWBóveda de coin del pool.
6amm_pc_vaultWBóveda de pc del pool.
7model_data_accountTabla de búsqueda de solo lectura.
8user_source_lpWFuente de LP del usuario.
9user_dest_coinWSalida de coin del usuario.
10user_dest_pcWSalida de pc del usuario.
11user_lp_ownerSFirmante de la transacción.
Compatibilidad: nueve cuentas de Serum (amm_open_orders, serum_program, serum_market, serum_coin_vault, serum_pc_vault, serum_vault_signer, serum_event_q, serum_bids, serum_asks) se eliminan. Las disposiciones antiguas de 21 o 22 cuentas aún se aceptan. Sin embargo, tenga en cuenta que la lógica de comisión de referencia para la cuenta opcional 22ª referrer_pc_wallet ha sido eliminada — aún puede pasarse pero ya no tiene efecto. Precondiciones
  • user_source_lp contiene al menos amount.
Postcondiciones
  • Se queman amount tokens LP.
  • El usuario recibe cantidades de coin y pc según la pro-rata actual, ajustadas por comisiones acumuladas.

SwapBaseIn

Swap de entrada exacta usando la tabla de búsqueda para precios. Argumentos
amount_in: u64
minimum_amount_out: u64
Cuentas — disposición nueva, 9 cuentas (escribible W, firmante S)
#NombreWSNotas
0spl_token programSPL Token.
1ammWAmmInfo del pool.
2amm_authorityPDA de todo el programa.
3amm_coin_vaultWBóveda de coin del pool.
4amm_pc_vaultWBóveda de pc del pool.
5model_data_accountTabla de búsqueda de solo lectura.
6user_source_tokenWCuenta de token de entrada del usuario.
7user_destination_tokenWCuenta de token de salida del usuario.
8user_source_ownerSUsuario (firmante de la transacción).
Compatibilidad: las nueve cuentas de OpenBook (amm_open_orders, serum_program, serum_market, serum_bids, serum_asks, serum_event_queue, serum_coin_vault, serum_pc_vault, serum_vault_signer) se eliminan. Si el número de cuentas pasadas no es 9, la instrucción se analiza con la disposición antigua de 18 cuentas; las cuentas de Serum aún deben ocupar sus posiciones, pero su contenido ya no se valida ni se utiliza. 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_*.
Matemáticas — Interpolación de tabla de búsqueda como se describe en products/stable/math.

SwapBaseOut

Swap de salida exacta (inverso de SwapBaseIn). Misma disposición de 9 cuentas, dirección matemática diferente. Argumentos
max_amount_in: u64
amount_out: u64

WithdrawPnl

Solo administrador. Recopilar comisiones de protocolo acumuladas de need_take_pnl_* en cuentas de PnL designadas.
Cambio importante con ruptura total — sin ruta de compatibilidad. Esta instrucción no tiene análisis para la disposición antigua. Enviar la disposición antigua falla con errores de validación como InvalidTokenCoin debido a desalineación de cuentas (el antiguo #3 era open_orders). Las herramientas de administración que llaman a WithdrawPnl deben actualizarse a la nueva disposición de 10 cuentas.
Argumentos — ninguno (impulsado por estado). Cuentas — disposición nueva, 10 cuentas fijas, solo administrador (escribible W, firmante S)
#NombreWSNotas
0spl_token programSPL Token.
1ammWAmmInfo del pool.
2amm_authorityPDA de todo el programa.
3amm_coin_vaultWBóveda de coin del pool.
4amm_pc_vaultWBóveda de pc del pool.
5amm_target_ordersW
6model_dataTabla de búsqueda.
7user_coinWCuenta de coin del administrador (recibe comisión).
8user_pcWCuenta de pc del administrador (recibe comisión).
9amm_adminSAdministrador del pool (firmante).
Cambio de lógica: cuando los fondos disponibles del pool son insuficientes para retirar el PnL acumulado, el pool ya no se pone en CancelAllOrdersState / Disabled; la instrucción devuelve TakePnlError directamente. El referrer_pc_wallet opcional también ha sido eliminado. Precondiciones
  • amm_admin debe estar autorizado.
Postcondiciones
  • need_take_pnl_coin y need_take_pnl_pc se transfieren a las cuentas del administrador.
  • Los contadores se ponen a cero.

Instrucciones eliminadas

Las siguientes instrucciones fueron eliminadas en la actualización del 2026-06-22 y ya no pueden ser llamadas. Se documentan aquí solo para que los integradores las reconozcan en transacciones históricas y SDKs.
  • Initialize — anteriormente inicializaba un nuevo pool de Stable AMM. Eliminada.
  • PreInitialize — asistente de preasignación heredado. Eliminada.
  • InitModelData — anteriormente creaba e inicializaba la tabla de búsqueda ModelDataInfo. Eliminada.
  • UpdateModelData — anteriormente rellenaba hasta 5 elementos de tabla de búsqueda por llamada. Eliminada.
  • MonitorStep — el crank de OpenBook que liquidaba rellenos y republicaba la cuadrícula de órdenes. Ya estaba inactivo hace mucho tiempo después de que el pool dejara de publicar en OpenBook; ahora eliminada.
  • SetParams — cambios de parámetros de administrador (estado, comisiones, propietario, clave de datos del modelo, etc.). Eliminada.
  • WithdrawSrm — recopilaba reembolsos de descuento de comisión SRM de pools de la era temprana de Serum. Eliminada.
  • SimulateInfo — asistente de cotización de solo lectura. Eliminada; usa los asistentes de curva estable fuera de cadena del SDK para cotizaciones (consulta Demostraciones de código).

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)