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 →
El invariante
Un creador de mercado de producto constante (CPMM) mantiene dos reservasx e y y cumple:
k es el producto de las reservas antes de la operación. Para un mercado sin comisiones, x · y = k exactamente. Con comisiones, k crece estrictamente (la parte de la comisión correspondiente al LP se retiene en las reservas).
El invariante es deliberadamente geométrico: garantiza que sin importar cuán pequeña se vuelva una reserva, la otra crece sin límite para compensar — es decir, el pool nunca puede vaciarse completamente en ningún lado.
Precios
Precio spot
El precio marginal dey denominado en x en cualquier instante es la tangente de la curva:
x · y = k da dy/dx = −y/x; ignorando el signo, |dy/dx| = y/x).
Este es el precio que el pool cotiza para una operación infinitesimalmente pequeña. Para cualquier operación de tamaño finito, el precio realizado es peor debido al slippage a lo largo de la curva.
Swap de entrada exacta (dar Δx, recibir Δy)
Con comisiones, sea f la tasa de comisión (por ejemplo, f = 0.0025 para 25 bps). Aplica la comisión a la entrada y luego usa el invariante para resolver la salida:
Δx entra en las reservas. La parte de comisión del LP permanece en x'; la parte de protocolo se excluye de la curva mediante un paso de contabilidad separada (ver Variantes de contabilidad de comisiones abajo).
Swap de salida exacta (recibir Δy, pagar el mínimo Δx)
Δx se redondea hacia arriba para garantizar que el pool no cobre menos de lo debido.
Slippage e impacto de precio
Impacto de precio mide cuánto se mueve el precio spot del pool como resultado de la operación:Δx / x pequeño, una expansión de primer orden da:
p_before y effective es slippage. El slippage en la interfaz on-chain generalmente se expresa como (effective − p_before) / p_before; la función computeAmountOut del SDK devuelve tanto amountOut como priceImpact por esta razón.
Verificación del invariante en código
Después de un swap, los protocolos re-verifican:Variantes de contabilidad de comisiones
La verificación del invariante asume que la comisión del LP permanece en las reservas. Diferentes productos Raydium manejan los componentes de protocolo, fondo y creador de manera diferente:Convención CPMM
Las comisiones son tasas de tipo basis-pointu64 con denominador 1_000_000. La comisión de operación se divide en trade_fee_rate (total) y luego se subdivide mediante protocol_fee_rate, fund_fee_rate, creator_fee_rate. En cada swap:
protocol_fees_*, fund_fees_*, creator_fees_*) que se excluyen de las reservas utilizadas en el invariante. Así es como las comisiones pueden retirarse sin mover la curva. Ver products/cpmm/fees.
Convención AMM v4
Las comisiones son ratiosnumerator / denominator con denominador 10_000. La división se fija en la creación del pool y se almacena en AmmInfo.fees:
pnl_share se acumula en state_data.need_take_pnl_* y se excluye de las reservas; lp_share permanece en el vault. Ver products/amm-v4/fees.
Ambas convenciones preservan el invariante de la misma manera — la diferencia es cosmética (denominador + número de subcategorías).
Reglas de redondeo
- El cálculo de comisión redondea hacia arriba. Garantiza que el pool nunca cobre una comisión insuficiente.
- El monto de salida redondea hacia abajo. Garantiza que el invariante se mantenga estrictamente (
k' > kincluso antes de que se agregue la comisión). - El monto de entrada exacta de salida redondea hacia arriba. Garantiza que el usuario no pague de menos.
u128 para los productos x · Δx intermedios para evitar desbordamiento en reservas grandes. Los resultados finales se convierten de nuevo a u64 con una verificación de saturación.
Casos especiales
Pool vacío
Antes del primerDeposit, x = y = 0. Las instrucciones de swap rechazan las operaciones previas al depósito.
Salida cero
SiΔx es lo suficientemente pequeño como para que Δy redondeado hacia abajo sea 0, la instrucción se revierte con ZeroTradingTokens. Esto previene la extracción de valor sin pago; también significa que los swaps de polvo en pools altamente desequilibrados fallan.
LP de polvo
El primerDeposit tiene manejo especial: calcula el suministro inicial de LP como sqrt(x · y) y quema una pequeña cantidad de «quemado inicial» (generalmente 100 unidades de LP) para prevenir el «ataque de inflación del primer depositante» (donde un atacante dona al vault e infla el valor del token LP). Los depósitos posteriores usan matemáticas pro-rata.
Relación con el arbitraje
El precio de un pool CPMM solo cambia mediante:- Operaciones a través del pool mismo (usuarios caminando la curva).
- Donaciones (envío de tokens al vault sin un swap).
Ejemplos elaborados
Ejemplo 1 — operación pequeña, slippage negligible
Pool:x = 1_000_000, y = 2_000_000, k = 2·10^12. Comisión f = 0.0025.
Trade Δx = 1_000:
1000 / 1993.01 ≈ 0.5018. Spot antes: 0.5. Impacto: ~0.36%.
Ejemplo 2 — operación de tamaño medio, slippage visible
Mismo pool,Δx = 100_000 (10% de x):
100_000 / 181_405 ≈ 0.5513. Impacto: ~10.3% — aproximadamente la mitad de la regla de 2 · 10% = 20% (la regla es un techo de peor caso para una curva de producto constante sin comisiones; la comisión de operación más la inversión en la fórmula la reduce).
Referencias
products/cpmm/math— elecciones específicas de redondeo y denominador de comisión de CPMM.products/amm-v4/math— cómo las reservas integradas de OpenBook de AMM v4 extienden este modelo.algorithms/slippage-and-price-impact— página dedicada al dimensionamiento de tolerancia de slippage para interfaces.
- Whitepaper Uniswap v2 — la declaración canónica de
x · y = k. - Código fuente del programa CPMM de Raydium.
- Código fuente del programa AMM v4 de Raydium.


