Timewarp Attack es una manipulación coordinada de las marcas temporales de las cabeceras que distorsiona el cálculo de la siguiente dificultad. Puede reducirla sin una caída equivalente del hashrate y acelerar así la producción de bloques.
Bitcoin recalcula la dificultad cada 2016 bloques y busca una media de 10 minutos entre bloques. Resta la hora del primer bloque del periodo a la del último, por lo que solo mide 2015 intervalos. El intervalo entre el último bloque de un periodo y el primero del siguiente queda fuera de esas diferencias. En esa frontera, el tiempo puede retroceder sin que ambos cálculos enlacen los periodos de forma continua. [4] [3]
La hora de un bloque nuevo debe superar Median Time Past (MTP), la mediana de las horas de los 11 bloques anteriores. No tiene que superar la del bloque inmediatamente anterior. Los atacantes pueden fijar casi todas las horas solo 1 segundo por encima de MTP, fechar el último bloque del periodo cerca de la hora real y volver después a una hora antigua. Manipulan bloques recién minados, sin reescribir cabeceras ya confirmadas. [1]
El escenario clásico supone una mayoría del hashrate o una minoría con influencia adicional sobre el orden de los bloques, por ejemplo mediante Selfish Mining. Requiere controlar la secuencia temporal de forma sostenida, no un solo bloque con una hora extraña. Su preparación dura alrededor de un mes y deja huellas públicamente visibles en la cadena. [1]
En el segundo periodo atacado, las horas pueden aparentar una media de 20 minutos por bloque y reducir la dificultad aproximadamente a la mitad. El siguiente periodo se mina más rápido, pero las horas manipuladas vuelven a pedir una reducción. El límite de un factor cuatro por ajuste no impide repetirlo. El límite teórico a largo plazo impuesto por MTP equivale a unos 6 bloques por segundo; no promete una capacidad práctica de la red. [1] [3]
Los bloques más rápidos adelantarían el subsidio futuro a un plazo menor; por sí solos no aumentan el límite de 21 millones de BTC. Los nodos tendrían que verificar y transmitir datos más deprisa. Procesadores saturados, conexiones insuficientes, ramas rivales y reorganizaciones frecuentes reducirían la fiabilidad de las confirmaciones. [1]
BIP 113 usa el MTP del bloque anterior para evaluar bloqueos absolutos nLockTime expresados como una hora. Los expresados como altura de bloque siguen usando la altura. Durante el ataque, MTP puede avanzar mucho más despacio que los relojes reales. Los fondos de un contrato sujeto al tiempo podrían permanecer inaccesibles más de lo previsto, y protocolos más complejos perder la coordinación entre sus pasos. [5] [1]
La propuesta limita la hora del primer bloque de un periodo: no puede preceder en más de 7200 segundos, dos horas, a la del bloque anterior. La hora del último bloque tampoco puede ser menor que la del primero. La especificación tiene estado Complete. Eso significa que la propuesta está terminada, no activada: exigir nuevas reglas de consenso en mainnet requiere una activación independiente. [2]
Compare horas de cabeceras, MTP, fronteras cada 2016 bloques, ritmo real de minería, dificultad y hashrate. Distinga el ataque clásico de la variante Murch–Zawy y las reglas de testnet de las de mainnet. El software puede crear preventivamente plantillas de bloque más seguras; eso no significa que toda la red rechace cada bloque que incumpla la protección propuesta. [3] [2]
Para obtener la imagen más completa, lee esta entrada junto con Difficulty Adjustment, Minería, Proof of Work, Consensus Cleanup, Timelock, Reorg. También enlazan con esta entrada Consensus Cleanup.
01¿Hace falta una mayoría del hashrate?+
El escenario clásico supone una mayoría u otra ventaja que permita influir lo suficiente sobre el orden de los bloques. Un minero pequeño sin esa ventaja no controla suficientemente sus horas.
02¿Basta con Median Time Past?+
No. MTP limita las marcas temporales individuales, pero no cierra la brecha entre periodos. BIP 54 propone restricciones adicionales sobre la relación entre las horas del primer y del último bloque.