¿Por qué los bloques de testnet tienen una marca de tiempo futura?

Estoy haciendo experimentos con testnet blockchain y parece que el mejor bloque siempre se establece aproximadamente 2 horas en el futuro.

Por ejemplo, ahora, el bloque tiene una marca de tiempo de 90 minutos en el futuro. No estoy vinculando el bloque en sí, ya que quedará desactualizado rápidamente de todos modos, pero puede consultar https://testnet.blockexplorer.com y el bloque más nuevo siempre estará en el futuro.

¿Cómo es eso posible? ¿No debería la red verificar las marcas de tiempo, si son sensatas? Además, si alguien puede falsificar las marcas de tiempo, ¿tiene alguna razón para existir?

Esto se extiende tanto a mainnet como a testnet; sin embargo, no he visto que suceda en mainnet. ¿Por qué?

Esa "marca de tiempo" varía según desde dónde acceda al sitio web. Si accedo a testnet.blockexplorer.com/block/… desde Alemania, dice "7 de octubre de 2016 1:13:20 a. m.". Sin embargo, si accedo desde Francia, dice "6 de octubre de 2016 23:13:20".
@ UTF-8 siempre debe indicar la hora local. Es extraño, porque, hasta donde yo sé, Alemania y Francia tienen la misma zona horaria.
Alemania y Francia comparten la misma zona horaria. Para probar si mi declaración es correcta, simplemente conéctese a una VPN o use Tor o algo así. En general, me resulta extraño usar la hora localizada en un sitio web internacional (pero eso podría deberse a mi disgusto general por la localización). Si se utiliza la localización de la hora (¡lo cual no debería!), la zona horaria utilizada debe indicarse junto a ella.
@ UTF-8 sí, no es genial. Pero no es realmente el problema que pregunté; si trato de mirar las marcas de tiempo reales de Unix de los bloques, todavía están 90 minutos en el futuro. Puede informar el problema de tiempo a bitpay en su github - github.com/bitpay/insight-ui

Respuestas (1)

Testnet es frecuentemente atacado, abusado, debido a la completa falta de valor y prueba de trabajo. Una pieza de código que está destinada a permitir que un bloque de dificultad 1 no se haya encontrado en 20 minutos también permite que una persona "deforme" hacia adelante y extraiga múltiples en una fila. Si esto se aprovecha sobre el ajuste de dificultad, toda la cadena de dificultad se restablece a dificultad 1.

El resultado es que es trivial hacer bifurcaciones de cientos de miles de bloques de largo, con marcas de tiempo insanas que solo coinciden vagamente con la realidad dentro de las reglas de consenso. Como resultado, nunca tendrán mucho sentido. Esto no sucede en la red principal porque el código de restablecimiento de dificultad no existe allí.

Bien, entiendo eso. ¿Hay algún plan para agregar dificultad a testnet? Tal comportamiento hace que el entorno de prueba esté bastante alejado de la realidad. Además, agregar dificultad autoajustable haría que los tiempos de bloque fueran más estables, ¿no es así?
Tenga en cuenta que el ajuste de dificultad temporal en testnet después de 20 minutos sin que se encuentre ningún bloque no es lo mismo que un ataque de distorsión de tiempo en el que los mineros intentan crear bloques con las marcas de tiempo más tempranas posibles para cada bloque excepto el último bloque en un período de dificultad ( dando a ese bloque la última marca de tiempo posible).