El timestamp o marca de tiempo es un pequeño dato almacenado en cada bloque a modo de serial único y que tienen como principal función determinar el momento exacto en el que el bloque ha sido sido minado y validado por la red blockchain.
La descentralización es uno de los aspectos fundamentales de la tecnología blockchain y claro, eso implica que cualquiera, desde cualquier parte del mundo se puede añadir a la red y puede operar en esta. Esto a su vez provoca, que no exista un código de tiempo universal. Esto es debido a que nos podemos conectar desde cualquier zona horaria. El timestamp es una marca de tiempo, que se calcula según diferentes parámetros.
El parámetro temporal o timestamp, se basa en un ajuste instantáneo que usa una mediana de las marcas de tiempo devueltas por todos los nodos de la red. Esto se debe a la forma descentralizada de la misma, y busca mantener a los nodos de la red lo mejor sincronizados posible.
Debemos también tener en cuenta que las marcas de tiempo de los bloques no son exactas. Esto debido a que no necesariamente tienen que estar en orden. Sin embargo, siguen ofreciendo una precisión relativa de entre una y dos horas, lo que otorga un margen de validez. Básicamente, todos los nodos se conectan a una misma franja horaria. Para ello se toma como referencia la UTC-0 (Hora local de Londres), donde UTC es en español Tiempo Universal Coordinado. A partir de este, los nodos de la red coordinan el tiempo en el que trabajan. Ahora bien, después de almacenar este dato, el nodo local calcula el tiempo de desplazamiento existente entre la franja UTC y la hora local.
Así se realiza un ajuste entre el tiempo del nodo local con el desplazamiento de todos los nodos que hay conectados a la red. Esto permite que el tiempo de la red se ajusta de manera constante. Con ello se evita la manipulación y suele hacer con ligeras variaciones temporales con respecto la franja horaria. Esto se realiza de este modo, porque pueden haber muchos índices horarios y podrían darse repeticiones y otros problemas. Por lo tanto, se desarrolló un sistema de creación de marcas de tiempo universales para todos los nodos. Este sistema tiene en cuenta el desfase horario que podría existir entre los nodos.
Implementar una marca de tiempo, hace que el bloque sea imposible de ser repetido en un futuro, ya que además de la hora, también se almacena la fecha de creación del bloque, por lo tanto, no existe la posibilidad de que se repita el mismo hash que se dio hace una semana, dos meses o un año.
¿Para qué se usa el timestamp en blockchain?
Uno de los usos principales de los timestamp es para establecer los parámetros del proceso de minería. Esto se debe a que estas marcas de tiempo permite a los nodos ajustar correctamente la dificultad de la minería que se utilizará para cada período de generación de bloques. Los timestamp ayudan a la red a determinar cuánto tiempo se lleva en extraer los bloques de un determinado período y de allí se ajusta el parámetro de dificultad de la minería.
Esto por supuesto puede abrir la puerta a que los mineros manipulen el tiempo con el fin de disminuir la dificultad. Sin embargo, Satoshi Nakamoto previó esto y programó la red para que los nodos ignoren los bloques que están fuera de un cierto rango de tiempo en función de su propio tiempo de reloj interno. Como resultado, si un minero intentara realizar esto, perdería todo su trabajo de minería.
Por otro lado, en el whitepaper de Bitcoin, Nakamoto explica que otra funcionalidad del timestamp es crear un mecanismo para evitar el doble gasto. En tal sentido, Nakamoto escribió lo siguiente:
Para nuestros propósitos, la última transacción es la que cuenta, así que no nos importarán otros intentos de doble gasto posteriores.
El timestamp en Bitcoin y su seguridad
En Bitcoin, cada bloque contiene una marca de tiempo tipo Unix. Esta marca sirve como fuente de variación en el hash del bloque y evitar su manipulación. El hecho de usar una marca de tiempo tipo Unix representa un problema para Bitcoin. Esto se debe a que las marcas de tiempo tipo Unix, tiene capacidad de mostrar periodos de tiempo hasta el año 2038. Para solucionar esto, Satoshi Nakamoto programó el sistema de marcas de tiempo para evitar este fallo y retrasarlo hasta el año 2106.
Sin embargo pese a la seguridad de los timestamp estos no son infalible. Como mencionamos anteriormente, un minero podría alterar el horario de su equipo y minar bloques con una marca de tiempo menor. Este ataque es conocido y recibe el nombre Time Warp Attack o Ataque de Deformación del Tiempo.
El ataque de deformación del tiempo (Time Warp Attack)
Un Time Warp Attack sucede cuando un minero informa marcas de tiempo incorrectas en los bloques que extraen, con el fin de provocar una dificultad menor. Muchas criptomonedas como Bitcoin ajustan periódicamente la dificultad de acuerdo con la tasa de generación de bloques. De este modo que la generación de bloques se mantiene en la cantidad establecida en el código, que es 10 minutos por bloque para Bitcoin.
Así al informar marcas de tiempo incorrectas, un minero puede engañar al algoritmo de dificultad y hacer que disminuya la dificultad. Una situación que le permite extraer bloques más rápido y ganar más dinero. Esto tiene efectos negativos para la economía de una criptomoneda, ya que un ataque de distorsión de tiempo aumenta la tasa de inflación de una criptomoneda, lo que provoca un aumento de la oferta que puede conducir a un precio de mercado más bajo.
Sin embargo, la probabilidad de que se lleve a cabo en Bitcoin es muy baja debido a la enorme dificultad que tiene en la actualidad Bitcoin. Esto disminuye la probabilidad de que se realicen este tipo de ataques. Esta situación ha llevado a que los desarrolladores no quieran solucionar este problema.