Solo con fines educativos; no constituye asesoramiento de inversión. Invertir puede ocasionar pérdidas.
Respuesta directa
Un oráculo de precio medio ponderado por tiempo obtiene una referencia de observaciones acumuladas durante un intervalo definido. No existe una fórmula universal. Uniswap v2 acumula el precio marginal lineal del pool en cada dirección, por lo que las diferencias entre extremos producen TWAP aritméticos. Uniswap v3 acumula tick, una coordenada logarítmica del precio, de modo que el tick medio aritmético se transforma en un precio relativo medio geométrico.
El resultado solo tiene sentido tras fijar blockchain, pool, implementación, nivel de comisión, orden de tokens, dirección base/cotizada, decimales, extremos, tiempo transcurrido, historial poblado y redondeo. Una lectura correcta no demuestra valor razonable ni profundidad ejecutable. Una ventana más larga diluye una distorsión breve, pero aumenta el retraso y no vence la manipulación sostenida, los vacíos de liquidez concentrada, el control del proponente o secuenciador, las reorganizaciones ni a un consumidor cuyo valor extraíble supere el coste de manipulación.
La actualidad de las observaciones y la del mercado son distintas. Un promedio calculado ahora puede conservar intencionadamente un régimen antiguo; un pool activo puede seguir siendo poco líquido o estar separado de mercados externos. El consumidor necesita comprobar historial, liquidez y divergencia, imponer límites por acción y definir expresamente el comportamiento degradado o pausado.
Cómo funciona
- Fije blockchain y bloque, fábrica y dirección del pool, versión del protocolo y nivel de comisión,
token0ytoken1, decimales, dirección base/cotizada, acción consumidora, ventana y valor en riesgo. - Identifique el objeto acumulado y sus unidades:
price0Cumulativeoprice1Cumulativelineal de v2,tickCumulativede v3 u otra estadística documentada. No traslade la aritmética entre implementaciones. - Verifique marcas de tiempo de los extremos, tiempo positivo, historial inicializado más antiguo, cardinalidad actual y reglas de interpolación o construcción contrafactual.
observationCardinalityNextes capacidad objetivo, no historial ya poblado. - En v2, divida la variación del precio acumulado por los segundos transcurridos y normalice unidades de punto fijo y decimales. Calcule cada dirección por separado: el TWAP aritmético inverso no suele ser el recíproco del directo.
- En v3, llame a la interfaz de observación documentada, divida la variación del tick acumulado por la ventana, redondee un cociente negativo no exacto hacia menos infinito como hace
OracleLibraryy transforme el tick medio en cotización normalizada medianteprice = 1.0001^tick. - Mida liquidez actual en rango, armónica, de rango amplio, por nivel de comisión y de mercados externos. Someta a tensión rutas de uno y varios bloques, comisiones, arbitraje, ordenación, censura, pérdida al deshacer, reorganizaciones, retraso y valor extraíble del consumidor.
- Compare el TWAP con spot y referencias independientes bajo límites explícitos de actualidad y desviación; vigile historial, rangos de liquidez, upgrades del pool y condiciones de la cadena, y ensaye historial insuficiente, divergencia, pausa, fallback, liquidación y recuperación.
Uniswap v2 guarda dos valores acumulados direccionales y los incrementa con el tiempo. Uniswap v3 guarda observaciones en un búfer circular y puede interpolar entre ellas o construir un acumulado actual contrafactual. Esos extremos construidos son aritmética válida del protocolo, no prueba de que se negociara en ese instante. Aumentar la cardinalidad crea espacio para observaciones futuras; no rellena periodos anteriores.
Ejemplos resueltos
- Precio acumulado v2. Si
C_start = 1,000,000 price-seconds,C_end = 1,360,000 price-secondsyelapsed = 3,600 seconds, entoncesTWAP = (1,360,000 - 1,000,000) / 3,600 = 100 quote/base. Extremos, dirección, escala y marcas de tiempo forman parte del resultado. - Trampa del recíproco. Un precio directo vale
100durante900 secondsy400durante900 seconds; su TWAP aritmético es250. Los spots inversos son0.01y0.0025; su TWAP aritmético es0.00625, cuyo recíproco es160, no250. Promediar e invertir no conmutan. - Tick medio negativo. Sea
tickCumulativeDelta = -39,601durante3,600 seconds. La división con signo de Solidity trunca a-11con resto, pero el auxiliar v3 redondea hacia abajo ameanTick = -12. El precio geométrico relativo es1.0001^-12 = 0.998800779636. Un error de signo o redondeo sesga sistemáticamente la cotización. - Dilución y retraso. Un pool cotiza a
100durante1,740 secondsy a400durante60 secondsen una ventana de1,800-second. El TWAP aritmético tipo v2 es(100 * 1,740 + 400 * 60) / 1,800 = 110; la media geométrica tipo v3 es100^(29/30) * 400^(1/30) = 104.7294122821. Ambos difieren del spot actual400y entre sí; ninguno determina por sí solo coste de manipulación o tamaño ejecutable.
Riesgos
- Blockchain, fábrica, pool, nivel de comisión, implementación o estado de upgrade incorrectos.
- Dirección base/cotizada o
token0/token1invertida. - Decimales, escala de punto fijo o normalización de cotización incorrectos.
- Se tratan un precio aritmético v2 y uno geométrico v3 como la misma estadística.
- Se calcula el TWAP aritmético inverso como recíproco del directo.
- Se usan extremos, tiempo, frontera de ventana o bloque actual erróneos.
- Se gestiona mal aritmética temporal cero, negativa, envuelta o específica de la implementación.
- El historial solicitado precede a la observación inicializada más antigua.
- Se confunde
observationCardinalityNextconobservationCardinalitypoblada. - Se toman observaciones interpoladas o contrafactuales por operaciones reales.
- El tick medio negativo se redondea hacia cero y no hacia menos infinito.
- La conversión de tick, rango entero, overflow o redondeo de cotización no es segura.
- La liquidez activa en rango o armónica es insuficiente para la exposición protegida.
- Falta profundidad de rango amplio, se retira o se ignora al analizar manipulación.
- La liquidez está fragmentada entre pools, niveles, cadenas o mercados correlacionados.
- Una ventana corta sigue expuesta a manipulación de un bloque, atómica o transitoria.
- Una ventana larga retrasa revaloraciones reales, desvinculaciones o migración de liquidez.
- Proponentes multibloque, secuenciador, censura, congestión, MEV o reorganizaciones reducen la corrección o aumentan el control.
- Se trata el TWAP como valor razonable reciente o precio ejecutable a cualquier tamaño sin comprobar divergencia ni profundidad.
- La exposición del consumidor supera el coste de manipulación y fallback, cortacircuitos, pausa, liquidación o recuperación son inseguros.
Errores frecuentes
- «TWAP siempre significa media aritmética de precios». v3 promedia tick y produce un precio relativo medio geométrico.
- «La cotización inversa siempre es uno dividido por el TWAP directo». Esa simetría no existe para precios lineales promediados por separado.
- «Una ventana más larga hace imposible manipular». Cambia sensibilidad a distorsión breve por retraso y aún admite control sostenido o liquidez débil.
- «Aumentar cardinalidad crea más historial inmediatamente». Solo amplía la capacidad futura; las observaciones deben inicializarse después.
- «Una lectura reciente y correcta prueba valor razonable ejecutable». El éxito de la interfaz no demuestra actualidad económica, profundidad, independencia ni exposición segura.
Temas relacionados
Fuentes
- Uniswap v2 Core - Uniswap (consultado: 2026-08-13)
- Oracles - Uniswap Developers (consultado: 2026-08-13)
- Uniswap v3 Core - Uniswap (consultado: 2026-08-13)
- Price Oracles - Uniswap Developers (consultado: 2026-08-13)
- Oracle.sol - Uniswap v3 Core (consultado: 2026-08-13)
- OracleLibrary.sol - Uniswap v3 Periphery (consultado: 2026-08-13)
- Uniswap v3 TWAP Oracles in Proof of Stake - Uniswap Labs (consultado: 2026-08-13)
- SC03:2026 Price Oracle Manipulation - OWASP Smart Contract Security (consultado: 2026-08-13)