En capítulos anteriores, introdujimos el concepto de ticks, los cuales discretizan la curva de precios. Un tick es un precio definido por la fórmula , donde se denomina tick index.
Los tick indexes son números enteros dentro del rango , resultando en 1,774,545 ticks a lo largo de la curva de precios, desde hasta .
Los ticks son puntos en la curva donde la liquidez puede cambiar. Por ejemplo, un proveedor de liquidez puede añadir liquidez entre dos ticks, pero no puede hacerlo entre dos puntos arbitrarios que no sean ticks.
Lo que veremos en este capítulo es que no todos estos 1,774,545 ticks se pueden utilizar en un pool, y los ticks específicos que se pueden utilizar dependen de una elección realizada en el momento de crear el pool.
Tick spacing
Cada pool define un valor llamado tick spacing, que determina la distancia entre dos ticks permitidos consecutivos.
Por ejemplo, si el tick spacing del pool se establece en 10, solo los tick indexes que son múltiplos de 10 son utilizables, como -20, -10, 0, 10, 20, etc. Si el tick spacing se establece en 60, solo se permiten múltiplos de 60, como -120, -60, 0, 60, 120, etc., como se ilustra en la figura a continuación. En ambos escenarios, un tick como 55 no puede ser utilizado como límite para proveer liquidez.

La variable que define el tick spacing en un pool se llama tickSpacing y se establece en el momento de la creación del pool. De hecho, tickSpacing está vinculado a la comisión del pool, donde cada nivel de comisión (fee tier) determina un tick spacing correspondiente.
La relación entre la volatilidad, el nivel de comisión y el tick spacing
Tick spacing y volatilidad
Uniswap V3 soporta diferentes tick spacings para tener en cuenta la variabilidad en la volatilidad de los pares de activos. Cruzar un tick en un swap incurre en un costo de gas, por lo que los ticks deben cruzarse con la menor frecuencia posible durante un intercambio típico.
Los pares más volátiles se benefician de un tick spacing más amplio para reducir cruces excesivos de ticks. Sin embargo, si el espaciado es demasiado amplio, los proveedores de liquidez no pueden posicionar con precisión su liquidez alrededor de las regiones de precio donde esperan que esté el valor de mercado del par.
Observa la animación a continuación, donde presentamos dos casos. En el primer caso, que involucra un par altamente volátil, el precio puede variar significativamente. Por lo tanto, si queremos intentar limitar los swaps para que crucen solo dos ticks permitidos, la distancia entre los ticks permitidos debe ser grande. En el segundo caso, que involucra un par más estable, el tick spacing puede ser menor.
Volatilidad y comisiones
Además, considera el riesgo de pérdida impermanente (impermanent loss) para los proveedores de liquidez. Los activos altamente volátiles tienden a causar una mayor pérdida impermanente, mientras que los activos más estables tienden a causar menos pérdida impermanente. Por ejemplo, un par de stablecoins prácticamente no tiene riesgo de pérdida impermanente, mientras que un par de memecoins conlleva un riesgo extremadamente alto.
Por lo tanto, los LPs exigirán comisiones más altas para compensar la pérdida impermanente cuando proporcionen liquidez para activos altamente volátiles. Del mismo modo, los traders pueden tolerar comisiones más altas en activos volátiles, ya que los rendimientos potenciales de operar con ellos son mucho mayores.
Esto indica que la relación entre la volatilidad del par, el tick spacing y las comisiones debería ser la siguiente: para pares volátiles con un alto riesgo de pérdida impermanente, tanto el tick spacing como las comisiones deben ser mayores, mientras que para pares más estables con un bajo riesgo de pérdida impermanente, ambos pueden ser menores.
Depende del usuario decidir qué pares son más estables o volátiles. Lo que define el protocolo es la relación entre el tick spacing y el nivel de comisión.
El contrato factory de Uniswap V3 proporciona algunos valores predeterminados, pero la gobernanza de Uniswap puede añadir pares adicionales de tick spacing y comisión. Este es el tema de la siguiente sección.
Comisión y tick spacing en el código
La relación entre la comisión y el tick spacing está contenida en el mapping feeAmountTickSpacing (recuadro amarillo en la figura a continuación) en el contrato UniswapV3Factory.sol. El contrato factory es responsable de crear nuevos pools.
La relación inicial entre la comisión y el tick spacing se definió durante el despliegue del contrato Factory, como se muestra en el constructor en la imagen a continuación (recuadro verde).

La relación actual entre la comisión y el tick spacing se muestra en la siguiente tabla. No hay una relación “matemática” estricta entre la comisión y el tick spacing. Depende de la gobernanza del protocolo decidir la comisión óptima para un tick spacing dado.
| nivel de comisión | nivel de comisión (puntos básicos) | tick spacing |
|---|---|---|
| 0.01% | 1 | 1 |
| 0.05% | 5 | 10 |
| 0.3% | 30 | 60 |
| 1% | 100 | 200 |
Como podemos ver, una comisión del 0.01% corresponde a un tick spacing de 1, mientras que una comisión del 0.3% corresponde a un tick spacing de 60.
Puntos básicos
Las comisiones se miden en puntos básicos (basis points). Un punto básico es 1/100 de un 1 por ciento, o 0.01%. Por ejemplo, 5 puntos básicos equivalen a 5 * 0.01%, o 0.05%.
Los niveles de comisión se pueden actualizar
El mapping de la comisión al tick spacing se puede actualizar utilizando la función enableFeeAmount, que solo puede ser llamada por la gobernanza.

El nivel de 1 punto básico (la comisión del 0.01%) no está en el constructor, pero la gobernanza de Uniswap añadió el nivel de comisión de 1 punto básico el 5 de marzo de 2022. Puedes ver la transacción en el panel de Tally.
Los niveles de comisión disponibles pueden variar en diferentes cadenas. Por ejemplo, en la L2 Base, están disponibles los niveles de comisión de 2, 3 y 4 puntos básicos. Esta adición fue ejecutada por la gobernanza el 16 de septiembre de 2024.
Creación de un nuevo pool usando el contrato factory
Para crear un nuevo pool, un usuario debe pasar las direcciones de ambos tokens y el nivel de comisión deseado. El tick spacing se calcula luego a partir del mapping feeAmountTickSpacing.
Un pool se define de manera única por estos tres parámetros. Por lo tanto, es posible crear pools con el mismo par de tokens pero con diferentes niveles de comisión. En este caso, el mercado determina cuál de estos pools se convierte en el “popular”.
El despliegue del pool por el contrato factory
Cuando el pool es desplegado por el contrato factory, se le pasan tanto la fee como el tickSpacing, y estas se establecen como variables inmutables públicas.

Ten en cuenta que no hay restricciones sobre quién puede llamar a createPool — es permissionless (no requiere permisos) siempre que el pool para ese par de tokens y nivel de comisión no haya sido creado todavía.
Ambas variables inmutables (fee y tickSpacing) son públicas en UniswapV3Pool.sol. De hecho, todos los argumentos pasados al constructor del pool se almacenan en variables inmutables públicas:

Ejemplos
Usemos el Pool USDC/ETH como ejemplo práctico. Podemos ver que la comisión es de 5 puntos básicos y tiene un tick spacing de 10:

Así es como el frontend para ese pool sabe que el nivel de comisión es del 0.05%.

Resumen
- No todos los ticks en un pool pueden ser utilizados; solo están permitidos aquellos que son múltiplos del tick spacing.
- La relación entre el tick spacing y las comisiones se establece en un mapping en el Factory. La gobernanza puede añadir más opciones de tick spacing y comisiones.
- El cruce frecuente de ticks resulta en mayores costos de gas, como aprenderemos al estudiar los swaps. Por lo tanto, los pools con mayor volatilidad de precios y/o menor liquidez deberían utilizar un tick spacing más grande para minimizar la frecuencia con la que se cruzan los ticks permitidos.
- Por otro lado, para pools con menor volatilidad de precios y/o pares altamente líquidos, el tick spacing puede ser menor, ya que los proveedores de liquidez tendrán una idea más clara de dónde concentrar su liquidez.
Ejercicios prácticos
Revisa los Pools de Uniswap V3.
- ¿Cuál es el tick spacing para USDC/USDT en la mainnet? Dado que podría haber múltiples pools con el mismo par pero diferente comisión, busca el pool que tenga al menos un millón de dólares en volumen en el último día.
- ¿Cuál es el tick spacing para un par que contiene una memecoin?