Introducción

El timestamp o marca de tiempo, es un dato temporal que podemos ver en cada uno de los bloques, transacción y red de nodos de una blockchain. Esta es una información de vital importancia para determinar con exactitud el momento en el que se ha generado un bloque, o en el cual ha sido recibida una transacción por la red. La finalidad de la misma es permitir crear una cronología de esta información que ayude mantener un historial inalterado de todo lo que pasa en la blockchain.

Pero ¿Cómo funciona el timestamp? ¿Qué reglas o protocolos se siguen para su creación? ¿Qué impacto tienen en la tecnología blockchain? Conozcamos las respuestas a estas preguntas a continuación.

Orígenes de los timestamp

Desde los inicios de la historia escrita, el hombre ha usado marcas temporales o timestamps para crear una narración cronológica de hechos que son de su interés. Los antiguos utilizaban tiempos basados en ciclos lunares, en estaciones, calendarios estelares o solares, para medir el tiempo y con ello crear estas marcas temporales. Y es que la narración y almacenamiento de hechos históricos de forma ordenada necesita de la organización temporal.

Pero el concepto fue evolucionando hasta llegar a los medios analógicos como los cronómetros, relojes y calendarios solares bien definidos. Para un mundo analógico y macro observacional, estos métodos de medir y cronometrar eventos en el tiempo son suficientes. Sin embargo, el avance científico exigía profundizar el alcance de estos sistemas. Se crearon entonces, relojes más avanzados, sensibles y estables. Todo en un esfuerzo por comprender fenómenos que así lo exigían. Por ejemplo, la experimentación con fenómenos de la luz o estudios atómicos, llevaron al máximo la creación y utilización de estos avanzados métodos.

Fue, sin embargo, la llegada de las computadoras la que disparó el uso de los timestamps y los métodos para alcanzarlos a un nuevo nivel. Las computadoras nos permitían crear métodos de cronometrar eventos con gran exactitud, sin la utilización de mecanismos muy complejos. Pero adicional a esto, la misma evolución de las computadoras dependía de contar con sistemas de timestamping de gran exactitud. Esto llevó al máximo la exigencia en el desarrollo de estos sistemas, permitiendo una rápida evolución de los mismos.

Momentos claves como la carrera espacial, la creación de los primeros procesadores, la creación de los primeros computadores completamente digitales, fueron solo un mayor impulso para crear sistemas más sencillos y exactos de timestamping. De hecho, la creación de los primeros procesadores de silicio llevó la capacidad de cronometrar el tiempo un nivel nunca visto. El silicio y sus relojes de cuarzo permitían medir en tiempo hasta llegar a la escala de los nanosegundos. Algo impensable de hacer con un cronómetro analógico. De esto se desprendería luego una evolución y avance sin precedentes para toda la humanidad.

La llegada de la informática general y el tiempo UNIX

La llegada de la informática general y la masificación de las computadoras a nivel empresarial, impulsó aún más el uso de timestamp. La creación de documentos, su almacenamiento, manejo y procesamiento exigía medir y estampar tiempos en dicha información digital. Y con la llegada de las primeras redes de computadoras, el timestamping se volvió aún más crucial. Después de todo enviar y recibir información por redes requería de sincronizar los relojes de comunicación entre las computadoras de la red.

Sin embargo, mucho del esfuerzo de timestamping en informática se hacía de forma desordenada. Cada sistema tenía su propia escala y muchos eran incompatibles entre sí. Esto cambió radicalmente con la llegada del UNIX Time o Tiempo de UNIX. UNIX era un sistema operativo muy avanzado diseñado en la década de los 70. Fueron sus creadores los que diseñaron el sistema de marcas de tiempo más avanzado y flexible de ese entonces. Un sistema que aún en la actualidad aún es ampliamente utilizado en todo el mundo.

 

https://lh3.googleusercontent.com/kD-Qo9GtX8n1jOMu3avFvJl-Xr1VFZh9bVkpRZ3tseT09k5DIdbSJa62pxBKPytaWBIe6sk_hg1ZO-LVsyfOlOAF-AZL7FM_znglrgg3BUi88TWeGZ9RSCAUi-NHdwf5Mrayr6gK

Ejemplo de un UNIX Timestamp

Esto ayuda a estandarizar los protocolos de comunicación en red de computadoras y la forma en cómo medía el tiempo para las distintas tareas dentro de las mismas computadoras. Comenzaba así un periodo de estandarización, ya los distintos sistemas podían comunicarse y compartir información unos con otros. Esto incluso sin importar el lugar del mundo donde se encontrarán.

De allí en adelante, el uso de timestamp en informática se hizo una ley. De hecho, prácticamente todo en nuestros computadores actuales dependen de tener un mecanismo de timestamp o timestamping lo más exacto posible. La geoubicación por GPS, las comunicaciones celulares, los certificados de seguridad de servidores Web, todo depende de los timestamps. Internet es quizás la mayor muestra de cómo el timestamp es crucial para el desarrollo de nuestra sociedad actual. Todo en la red de redes tiene una marca de tiempo, con el cual podemos interactuar y obtener información.

Timestamp y blockchain, una relación de gran necesidad

Lo anterior es también válido para la tecnología blockchain. Después de todo, una blockchain es una cadena de bloques de información digital que se organiza de forma cronológica. Pero más allá de eso, el funcionamiento de la blockchain depende de la sincronización temporal entre los distintos actores de la red.

Y es que la descentralización de la tecnología blockchain necesita de un mecanismo de medición de tiempo fuerte y confiable para cohesionar el trabajo. Para lograr esto, Satoshi Nakamoto diseñó Bitcoin tomando en cuenta un mecanismo de timestamp seguro para la red. Este diseño tiene como base un ajuste temporal instantáneo que usa la mediana de las marcas de tiempo devueltas por todos los nodos de la red. En pocas palabras, todos los nodos de la red informan de la hora que marcan sus sistemas en local, y la mediana de todos esos tiempos, da como resultado el tiempo real de la red.

Para lograr esto, el sistema de medición de tiempo de Bitcoin se define usando el estándar de Tiempo Coordinado Universal o UTC, junto al tiempo UNIX. Juntos estos datos, permiten realizar un ajuste en tiempo real entre el tiempo de los distintos nodos que forman parte de la red. Como resultado, el tiempo de la red es lo más exacto posible y se convierte en un recurso capaz de resistir posibles ataques a la red en los que la medición del tiempo es vital.

Además, la implementación de este sistema permite, por ejemplo, que sea imposible que se repita un bloque en el futuro. Esto gracias a que la hora de la red se usa para crear una marca de tiempo única en cada bloque. Y dado que esta información temporal es usada para el proceso de minería y de generación de los hash de bloque o Block ID, cada bloque resultante es único en todo sentido.

Usos del timestamp en Bitcoin

Uno de los usos principales de los timestamp es para establecer los parámetros del proceso de minería de Bitcoin. En primer lugar, como hemos comentado, la generación de los hash de los bloques tienen en cuenta el timestamp de los bloques. Esta variable permite agregar un recurso de información única e irrepetible que permite que cada bloque de la blockchain sea único.

Adicionalmente, el timestamp permite ajustar la dificultad de la minería dentro de la red. Esto se debe a que la minería se ajusta tomando en cuenta la media del tiempo que tarda la red en generar los últimos 2016 bloques. Pero este mecanismo también tiene otra utilidad y es evitar que los mineros deshonestos puedan manipular los timestamps de los bloques que minan para obtener una ventaja de minería disminuyendo la dificultad de minería. Es el llamado Time Warp Attack, una vulnerabilidad que el mismo Satoshi Nakamoto explicó y corrigió creando un rango de tiempo aceptable entre los timestamps de los bloques y el tiempo de la red.

Adicionalmente, los timestamp evitan que por ejemplo, un actor malicioso pueda emitir dos transacciones manipulando el tiempo de su cliente con el fin de realizar un doble gasto.

https://lh6.googleusercontent.com/ujbpUHcaL3m24sAzTK1z7rTv6FMIRCr-ypQuEzfEfdAp2KSC1rXoMqtahDQJNDzoP447Wi1LkRhp1MzjUM8k7O09xVCdJIjUzf5qitIDVWGknvul1YX3iDSOIScCwISvzWtptFps

Información de un bloque donde podemos ver el timestamp claramente marcado. Adicional también podemos ver el Median time o tiempo de red.

Otro dato curioso es que Bitcoin hace uso de timestamps creadas usando el formato de tiempo de UNIX. Estas marcas de tiempo usan mediciones en segundos para representar una determinada fecha con exactitud. Sin embargo, dependiendo de su implementación pueden presentar determinados problemas. Por ejemplo, los sistemas GNU/Linux antiguos que usan tiempo UNIX, no pueden representar fechas más allá del año 2038. Satoshi Nakamoto sin embargo programó el sistema de marcas de tiempo Bitcoin para evitar este fallo y retrasarlo hasta el año 2106.

Relacionado: Qué es y cómo funciona la minería de Bitcoin. Todo sobre cómo minar bitcoins

Timestamping y otros proyectos blockchain

Pero el uso de timestamps no solo se limita a Bitcoin. Todas las blockchain usan este mecanismo para garantizar el buen funcionamiento de sus redes. Uno de los ejemplos más complejos en este sentido lo podemos ver en Ethereum. Esta blockchain usa timestamps no solo para las transacciones con Ether, sino también para cada token estándar representado en su sistema. Lo mismo pasa con los distintos smarts contracts que están contenidos en su blockchain. Orquestar todos estos procesos requiere de manejar el tiempo de forma precisa y realizar las acciones de forma cronológica y sin errores.

La misma situación se presenta en otros proyectos blockchain, sin importar cual elija. Incluso podríamos llamarlo como la Dictadura del Tiempo, porque simplemente no podemos escapar de ella y su alcance.

Esto claramente nos dice la importancia de los timestamps y el manejo del tiempo en los proyectos blockchain. No es solo una curiosidad, es una necesidad estructural insorteable que siempre estará allí presente.