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:
- 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).
- 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ón | Categoría | Notas |
|---|
Deposit | Liquidez | Añadir liquidez, recibir LP. Nueva disposición de 12 cuentas; la disposición antigua de 14 cuentas sigue siendo compatible. |
Withdraw | Liquidez | Quemar LP, recibir ambos lados. Nueva disposición de 12 cuentas; la disposición antigua de 21/22 cuentas sigue siendo compatible. |
SwapBaseIn | Swap | Swap de entrada exacta. Nueva disposición de 9 cuentas; la disposición antigua de 18 cuentas sigue siendo compatible. |
SwapBaseOut | Swap | Swap de salida exacta. Nueva disposición de 9 cuentas; la disposición antigua de 18 cuentas sigue siendo compatible. |
WithdrawPnl | Admin | Recopilar 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ón | Categoría anterior | Propósito anterior |
|---|
Initialize | Ciclo de vida | Crear un pool. |
PreInitialize | Ciclo de vida | Asistente 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. |
MonitorStep | Crank | Liquidar rellenos de OpenBook, republicar órdenes. |
SetParams | Admin | Cambiar parámetros del pool. |
WithdrawSrm | Heredado | Recopilar reembolsos de descuento de comisión SRM. |
SimulateInfo | Diagnóstico | Asistente 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)
| # | Nombre | W | S | Notas |
|---|
| 0 | token_program | | | SPL Token. |
| 1 | amm | W | | AmmInfo del pool. |
| 2 | amm_authority | | | PDA de todo el programa. |
| 3 | amm_target_orders | W | | |
| 4 | amm_lp_mint | W | | Mint de LP. |
| 5 | amm_coin_vault | W | | Bóveda de coin del pool. |
| 6 | amm_pc_vault | W | | Bóveda de pc del pool. |
| 7 | model_data_account | | | Tabla de búsqueda de solo lectura. |
| 8 | user_source_coin | W | | Entrada de coin del usuario. |
| 9 | user_source_pc | W | | Entrada de pc del usuario. |
| 10 | user_dest_lp | W | | ATA de LP del usuario. |
| 11 | user_source_owner | | S | Firmante 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)
| # | Nombre | W | S | Notas |
|---|
| 0 | token_program | | | SPL Token. |
| 1 | amm | W | | AmmInfo del pool. |
| 2 | amm_authority | | | PDA de todo el programa. |
| 3 | amm_target_orders | W | | |
| 4 | amm_lp_mint | W | | Mint de LP. |
| 5 | amm_coin_vault | W | | Bóveda de coin del pool. |
| 6 | amm_pc_vault | W | | Bóveda de pc del pool. |
| 7 | model_data_account | | | Tabla de búsqueda de solo lectura. |
| 8 | user_source_lp | W | | Fuente de LP del usuario. |
| 9 | user_dest_coin | W | | Salida de coin del usuario. |
| 10 | user_dest_pc | W | | Salida de pc del usuario. |
| 11 | user_lp_owner | | S | Firmante 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)
| # | Nombre | W | S | Notas |
|---|
| 0 | spl_token program | | | SPL Token. |
| 1 | amm | W | | AmmInfo del pool. |
| 2 | amm_authority | | | PDA de todo el programa. |
| 3 | amm_coin_vault | W | | Bóveda de coin del pool. |
| 4 | amm_pc_vault | W | | Bóveda de pc del pool. |
| 5 | model_data_account | | | Tabla de búsqueda de solo lectura. |
| 6 | user_source_token | W | | Cuenta de token de entrada del usuario. |
| 7 | user_destination_token | W | | Cuenta de token de salida del usuario. |
| 8 | user_source_owner | | S | Usuario (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)
| # | Nombre | W | S | Notas |
|---|
| 0 | spl_token program | | | SPL Token. |
| 1 | amm | W | | AmmInfo del pool. |
| 2 | amm_authority | | | PDA de todo el programa. |
| 3 | amm_coin_vault | W | | Bóveda de coin del pool. |
| 4 | amm_pc_vault | W | | Bóveda de pc del pool. |
| 5 | amm_target_orders | W | | |
| 6 | model_data | | | Tabla de búsqueda. |
| 7 | user_coin | W | | Cuenta de coin del administrador (recibe comisión). |
| 8 | user_pc | W | | Cuenta de pc del administrador (recibe comisión). |
| 9 | amm_admin | | S | Administrador 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)