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 →
Este es el registro de cambios de la documentación — el historial de actualizaciones de estas páginas desde el lanzamiento del proyecto. Para la línea de tiempo histórica del propio protocolo, consulta
introduction/history-and-milestones. Cada entrada incluye una fecha, la lista de capítulos afectados, el motivo del cambio y una fecha de verificación que indica cuándo se comprobó por última vez que el estado on-chain y el código fuente del programa coincidían con el contenido escrito.Sin publicar — CLMM: órdenes límite, comisión unilateral, comisión dinámica
La próxima versión de CLMM incorpora tres capacidades a nivel de pool. Son opcionales en el momento de crear el pool y son retrocompatibles con los pools y posiciones existentes.Resumen para integradores
- Las órdenes límite son ahora primitivas de primer nivel en CLMM. Los LPs pueden abrir una orden de un solo tick en un pool que las soporte; la orden se ejecuta en orden FIFO cuando un swap cruza el tick, y un keeper externo (
limit_order_admin) puede liquidar la salida ejecutada sin que el propietario esté conectado. Siete nuevos métodos del SDK (openLimitOrder,increaseLimitOrder,decreaseLimitOrder,settleLimitOrder,closeLimitOrder,closeAllLimitOrder,settleAllLimitOrder) y tres nuevos endpoints de la API temporal bajo/limit-order/(órdenes activas, historial por usuario, registro de eventos por PDA) cubren el flujo completo. - La comisión unilateral (
CollectFeeOn) permite que un pool cobre comisiones de swap desde el lado de entrada (modo heredado,0), siempre desdetoken_0(modo1) o siempre desdetoken_1(modo2). Es útil cuando uno de los lados del par es el token de contabilidad canónico. - La comisión dinámica permite que un pool adopte un recargo de seguimiento de volatilidad que aumenta con movimientos rápidos de tick y decae con el tiempo, calibrado por un
DynamicFeeConfigpor nivel y unDynamicFeeInfopor pool. El nuevo endpoint/main/clmm-dynamic-configexpone la lista de niveles. - Una nueva instrucción,
CreateCustomizablePool, expone las tres opciones en el momento de crear el pool. ElCreatePoolclásico sigue funcionando para pools con comisión predeterminada y sin órdenes límite. - Cambio disruptivo para indexadores: los contadores de volumen por dirección (
swap_in_amount_token_{0,1},swap_out_amount_token_{0,1}) y los contadores de comisiones acumuladas (total_fees_token_{0,1},total_fees_claimed_token_{0,1}) dePoolStatefueron retirados hacia padding para dar cabida afee_onydynamic_fee_info. Los indexadores que lean esos campos directamente deben migrar al anilloObservationon-chain o a la API.
Por qué esto importa (para traders, LPs e integradores)
- Los traders obtienen cotizaciones más ajustadas en pares de cola larga y orientados a eventos: la comisión dinámica permite que el pool absorba recargos de volatilidad del taker sin que los LPs tengan que ampliar rangos activamente, y las escalas de órdenes límite profundizan la liquidez on-chain a precios específicos sin comprometer capital en todo el rango.
- Los LPs disponen de una tercera estrategia junto a los rangos concentrados y las posiciones de rango completo: colocar órdenes a precio exacto, que se ejecuten cuando el precio llegue y liquidar en el token de cotización. No se requiere rebalanceo activo para la porción ejecutada.
- Los integradores pueden modelar pools de comisión dinámica de forma determinista: el algoritmo y los parámetros están completamente on-chain, los niveles de calibración son consultables y la ruta de swap no cambia en su forma (solo varía la comisión por paso).
Qué cambió en el programa
Nuevas cuentas
DynamicFeeConfig— registro de calibración por nivel (período de filtro, período de decaimiento, factor de reducción, control de comisión dinámica, acumulador máximo de volatilidad). Se crea medianteCreateDynamicFeeConfig(admin) y es referenciado porCreateCustomizablePoolcuando la comisión dinámica está habilitada.LimitOrderState— cuenta por orden (semillas PDA:[owner, limit_order_nonce, order_nonce]) que almacena el pool, el tick, el lado, el monto de entrada, la proporción no ejecutada, la fase de cohorte FIFO y los registros contables. El ciclo de vida es implícito (filled_amountfrente atotal_amount, más la existencia de la cuenta):Abierta → Ejecutada → Liquidada → Cerrada.LimitOrderNonce— contador con incremento monotónico por (propietario, índice de nonce) que alimenta las semillas PDA de la orden límite. El campononce_index: u8permite al mismo propietario particionar órdenes en hasta 256 flujos de nonce independientes.
Reestructuración de PoolState
| Grupo de campos | Diseño anterior | Nuevo diseño |
|---|---|---|
| Contadores de volumen por dirección | swap_in_amount_token_0, swap_out_amount_token_0, swap_in_amount_token_1, swap_out_amount_token_1 | Integrados en padding5: [u128; 4] |
| Contadores de comisiones acumuladas | total_fees_token_0, total_fees_claimed_token_0, total_fees_token_1, total_fees_claimed_token_1 | Integrados en padding6: [u64; 4] |
| Comisión unilateral | — | fee_on: u8 (0 = FromInput, 1 = Token0Only, 2 = Token1Only) |
| Comisión dinámica | — | dynamic_fee_info: DynamicFeeInfo (embebido) |
PoolState y pasa al anillo Observation o a la API. Los contadores retirados no se ponen a cero en los pools existentes (retienen el último valor que almacenaron), por lo que releerlos tras la actualización devolverá datos obsoletos.
Adiciones a TickState (sin cambios disruptivos)
Se añaden cuatro nuevos campos al final de TickState, reemplazando parte de su padding final:
order_phase: u64— contador que distingue las cohortes de órdenes límite en este tick.orders_amount: u64— total de entrada comprometida por todas las órdenes abiertas en este tick (no todas están completamente sin ejecutar).part_filled_orders_remaining: u64— entrada todavía sin ejecutar en la cohorte que los swaps están consumiendo actualmente.unfilled_ratio_x64: u128— proporción Q64.64 usada para calcular la cuota de ejecución de cada orden.
Nuevas instrucciones
CreateDynamicFeeConfig(admin) — crea un nivelDynamicFeeConfigcalibrado. Autoridad: el mismo multisig de tesorería queCreateAmmConfig.UpdateDynamicFeeConfig(admin) — actualiza los parámetros de un nivel existente.CreateCustomizablePool— punto de entrada para crear pools que exponecollect_fee_on,enable_dynamic_feeydynamic_fee_config. Coexiste conCreatePool; recomendamosCreateCustomizablePoolpara cualquier pool nuevo que necesite las nuevas opciones.OpenLimitOrder— abre una orden límite de un solo tick. IncrementaLimitOrderNonce, reservaLimitOrderStatee inserta la orden en la cohorte FIFO del tick.IncreaseLimitOrder/DecreaseLimitOrder— ajusta la porción no ejecutada de una orden. Revierte en una orden completamente ejecutada conInvalidOrderPhase.SettleLimitOrder— transfiere la salida ejecutada a la ATA del propietario. El llamante puede ser el propietario o el keeperlimit_order_admindel pool.CloseLimitOrder— cierra una orden completamente liquidada para recuperar la renta.
Cambios de comportamiento en SwapV2
La ruta del swap no cambia en su forma, pero ahora ocurren tres cosas durante el proceso:
- Comisión dinámica (cuando está habilitada): el
DynamicFeeInfodel pool se actualiza en cada paso (decaimiento → acumulación → tope), y el recargo resultante se añade sobre la comisión base de ese paso. - Emparejamiento de órdenes límite (cuando el paso cruza un tick inicializado con órdenes abiertas): parte de la entrada del swap se consume en orden FIFO para ejecutar la cohorte en ese tick, actualizando
unfilled_ratio_x64de forma atómica. - Enrutamiento de comisión unilateral (cuando
fee_on != 0): la comisión se toma detoken_0otoken_1independientemente de la dirección del swap, en lugar de tomarse siempre del lado de entrada.
Nuevos códigos de error
El enumErrorCode fue renumerado en esta versión: se eliminaron cinco variantes heredadas (LOK, ZeroMintAmount, InvalidLiquidity, TransactionTooOld, InvalidRewardDesiredAmount) y se añadieron once nuevas variantes. Como Anchor numera los errores por orden en el enum a partir de 6000, todos los códigos de error en o después de las posiciones eliminadas han desplazado su valor — los clientes que hayan codificado los números directamente deben remapearlos.
Los nuevos códigos son:
6040OrderAlreadyFilled6041InvalidOrderPhase6042InvalidLimitOrderAmount6043OrderPhaseSaturated6044InvalidDynamicFeeConfigParams6045InvalidFeeOn6046ZeroSqrtPrice6047ZeroLiquidity6048MissingBaseFlag6049MissingMintAccount6050MissingTokenProgram2022
Qué cambió en el SDK (@raydium-io/raydium-sdk-v2)
- Nuevos métodos en
raydium.clmm:createCustomizablePool,openLimitOrder,increaseLimitOrder,decreaseLimitOrder,settleLimitOrder,settleAllLimitOrder,closeLimitOrder,closeAllLimitOrder. - Nuevos helpers REST en
raydium.api:getClmmDynamicConfigs,getClmmLimitOrderConfigs. - Nuevos tipos: enum
CollectFeeOn,DynamicFeeConfig,DynamicFeeInfo,LimitOrderState,LimitOrderConfig. - Reorganización interna:
utils/se movió alibraries/. El barrel del paquete no cambia; solo las importaciones directas bajo@raydium-io/raydium-sdk-v2/utils/...necesitan actualizarse a…/libraries/....
products/clmm/code-demos.
Qué cambió en las APIs
api-v3— dos nuevos endpoints bajo/main/:GET /main/clmm-dynamic-config— lista de nivelesDynamicFeeConfig.GET /main/clmm-limit-order-config— configuración de órdenes límite por pool.
temp-api-v1— tres nuevos endpoints bajo/limit-order/:GET /limit-order/order/list?wallet=…— órdenes actualmente activas de una billetera (abiertas y parcialmente ejecutadas, servidas desde la caché Redis del indexador; el mismo payload cubre ambas fases mediantetotalAmount/filledAmount/pendingSettle).GET /limit-order/history/order/list-by-user?wallet=…— historial de órdenes límite de una billetera. Filtros opcionales:poolId,mint1,mint2,hideCancel. Paginación por cursor mediantenextPageId/size(máx. 100).GET /limit-order/history/event/list-by-pda?pda=…— registro de eventos por PDA (open/increase/decrease/settle/close) para uno o más PDAs de órdenes límite separados por coma. Paginación por cursor mediantenextPageId/size(máx. 100).
Superficie de autoridad
Ellimit_order_admin es un keeper operativo externo, no un multisig. Solo puede llamar a SettleLimitOrder y CloseLimitOrder en órdenes existentes, y la salida de una liquidación siempre llega a la ATA del propietario. No puede mutar campos del pool, abrir o modificar órdenes ni firmar ninguna otra operación. Consulta Claves admin y multisig → CLMM.
Páginas actualizadas
products/clmm/overview— nueva sección «Novedades» y punteros de siguientes pasos actualizados.products/clmm/accounts— tres nuevas cuentas, reestructuración dePoolStatecon aviso de migración, adiciones aTickState, nuevos helpers de PDA.products/clmm/instructions— siete nuevas instrucciones, addendum al comportamiento deSwapV2, matriz de cambios de estado actualizada.products/clmm/fees— sección de comisión unilateral, sección de comisión dinámica con tabla de parámetros.products/clmm/math— pseudocódigo de emparejamiento de órdenes límite, derivación de comisión dinámica.products/clmm/code-demos— demo decreateCustomizablePool, recorrido completo de órdenes límite, nuevos casos problemáticos.algorithms/clmm-math— referencia cruzada al emparejamiento de órdenes límite y comisión dinámica en el bucle de swap multi-tick.sdk-api/typescript-sdk— sección de adiciones al módulo CLMM, nota de migraciónutils/→libraries/.api-reference/openapi/api-v3.yaml— dos nuevos endpoints con esquemas de respuesta.api-reference/openapi/temp-api-v1.yaml— tres nuevos endpoints de órdenes límite (/limit-order/order/list,/limit-order/history/order/list-by-user,/limit-order/history/event/list-by-pda) con sus esquemas de solicitud y respuesta.api-reference/api-v3/overview— nota sobre los nuevos endpoints de configuración CLMM.api-reference/temp-api-v1/overview— nota sobre los nuevos endpoints de órdenes activas, historial por usuario y eventos por PDA.reference/error-codes— once nuevos códigos de error CLMM (6040–6050) más cinco códigos heredados eliminados; los códigos numéricos a partir de los puntos de eliminación han desplazado su valor.security/admin-and-multisig— nueva fila de adminDynamicFeeConfigy fila de keeperlimit_order_admin, con explicación de autoridad acotada.
- Código fuente de
raydium-clmm. - Código fuente de
@raydium-io/raydium-sdk-v2. - Código fuente de
api-v3ytemp-api-v1.
2026-04-26 — Publicación inicial
Primera versión pública del conjunto de documentación de Raydium. Verificado contra:- Despliegues de programas en vivo en Solana mainnet-beta.
@raydium-io/raydium-sdk-v2@0.2.42-alpha.- Documentación pública de Raydium y referencias on-chain hasta abril de 2026.
Convenciones de la documentación
- Versionado: esta documentación usa versionado basado en calendario (YYYY-MM-DD). Cada actualización crea una nueva entrada al inicio del archivo.
- Fecha de verificación: cada entrada registra cuándo se comprobó por última vez que el contenido coincide con el estado on-chain/API y el código fuente del programa. Si no se indica, se asume la fecha principal de la entrada.
- Cambios disruptivos: se señalan con una advertencia destacada en las páginas afectadas y se etiquetan en la entrada correspondiente.
- Cobertura: este registro de cambios cubre el conjunto de documentación en sí. La línea de tiempo histórica del propio protocolo está en
introduction/history-and-milestonesy es la fuente de verdad sobre «cuándo ocurrió X en Raydium».
Correcciones
Si encuentras un error en esta documentación, abre un issue o un pull request en el repositorio de documentación. Las correcciones se registran en este changelog.Referencias útiles
introduction/history-and-milestones— la línea de tiempo del protocolo.security/audits— historial de auditorías.ray/protocol-fees— distribución de comisiones del protocolo.reference/program-addresses— fuente de verdad de los IDs de programa.


