comienzo
comienzo

Si te interesa la informática, es posible que ya hayas oído hablar del famoso error del año 2038, que afectará a todos los sistemas informáticos que utilicen la marca de tiempo de Unix almacenada como un entero con signo de 32 bits. En el caso de Bitcoin, este error no nos afectará. Sin embargo, las marcas de tiempo de Bitcoin también tienen un valor máximo que no se puede superar. Este umbral se alcanzará el 7 de febrero de 2016.
Entonces, ¿el año 2106 significará la sentencia de muerte para Bitcoin? En este artículo, hacemos un balance de este suceso relativamente desconocido con vosotros.
En el protocolo Bitcoin, se utiliza una cadena de bloques para evitar el doble gasto. Cada transacción se coloca en un bloque con un marco de tiempo. En otras palabras, colocamos una hora y un día en cada bloque para poder ordenarlos cronológicamente. Este marco de tiempo es lo que llamamos una «marca de tiempo».

Gracias a este mecanismo, cuando un nodo recibe una nueva transacción de Bitcoin en espera de confirmación, puede comprobar que, en el pasado, esos mismos Bitcoins no se habían gastado ya. De esta forma, evitamos duplicar el gasto en el sistema, sin hacer que dependa de una autoridad central.
La marca de tiempo está en el encabezado de cada bloque. Es un entero de 32 bits que se basa en la hora de UNIX. Para determinar este período de tiempo, contamos el número de segundos que han transcurrido desde el 1 de enero de 1970 y obtenemos un número entero. Por ejemplo, cuando escribo este artículo, han pasado 1.693.498.694 segundos desde 1970. Todo lo que tengo que hacer es convertir este entero en binario para obtener mi marca de tiempo. En este caso, esto nos daría: 01100101110001100100100101011111110. Así es como se marca la hora de los bloques en Bitcoin.

La marca de tiempo en Bitcoin se realiza en enteros de 32 bits sin signo. Esto significa que puedes poner 32 ceros o uno en una fila para representar el tiempo, pero no uno más. Por lo tanto, hay un límite en la interpretación del tiempo en Bitcoin. El valor máximo que se puede utilizar es el siguiente: 1111111111. En decimal, esto nos da 4.294.967.295 segundos, y este tiempo corresponde a la fecha del 7 de febrero de 2106.
Una vez superada esta fecha, la marca de tiempo se desbordará y se restablecerá a cero. Los sistemas informáticos que utilicen este formato interpretarán la fecha actual como el 1 de enero de 1970, cuando en realidad será 2106.

Para entender mejor este fenómeno, hagamos una analogía. Algunos cuentakilómetros de automóviles antiguos están limitados a 6 dígitos. Como resultado, el valor máximo que se puede mostrar es de 999.999 km. Una vez alcanzado este límite, el contador vuelve a cero y comienza a contar de nuevo desde el principio. Sin embargo, se han realizado los kilómetros ya recorridos por el coche. Por lo tanto, hay una diferencia entre el valor interpretado y el valor real, debido a la cantidad de dígitos que se pueden mostrar. En cuanto a la marca de tiempo en Bitcoin, es exactamente el mismo principio.
Si no se cambia nada en el protocolo de Bitcoin, esta discrepancia entre la interpretación de la marca de tiempo y la realidad significará que no se podrán publicar nuevos bloques. De hecho, hay dos restricciones sobre la marca de tiempo de un bloque para que los nodos lo acepten:
Cuando la marca de tiempo de 32 bits alcance su valor máximo el 7 de febrero de 2016, podrás seguir publicando un máximo de 6 bloques (esto se debe a que el límite inferior es una mediana). Entonces, la cadena de bloques debería detenerse y no se podrían confirmar más transacciones.
Afortunadamente, existen muchas soluciones para poder saltarse esta fecha y así evitar posibles repercusiones en Bitcoin.
📌 La diferencia entre enteros de 32 bits con y sin signo radica en la cantidad de bits disponibles. Los que no están firmados utilizan al máximo 32 bits (eso es lo que tenemos en Bitcoin), mientras que los firmados reservan un bit para el signo, dejando 31 bits para representar un número positivo (esto es lo que se utiliza en los sistemas afectados por el error de 2038).
➤ Obtenga más información sobre cómo crear un bloque en Bitcoin.
¡No te preocupes, nos quedan más de 80 años para resolver este pequeño problema! Para ello, existen varias soluciones. La que resulta más natural sería cambiar el tamaño del entero utilizado para anotar la marca de tiempo en Bitcoin. Por lo tanto, podríamos usar números enteros de 64 bits, lo que nos permitiría ampliar el límite de tiempo a varios cientos de miles de millones de años en el futuro.
Otra solución sería mantener una marca de tiempo de 32 bits, pero interpretarla como un entero de 64 bits. En el encabezado del bloque solo se anotarían los últimos 32 bits del entero, pero en cada desbordamiento, los nodos añadirían 2^32 al valor anotado para obtener el valor real. Los nodos podrían detectar los desbordamientos tan pronto como la marca de tiempo de 32 bits disminuyera bruscamente en comparación con los bloques anteriores.
Sin embargo, estas dos soluciones son bifurcaciones duras. La comunidad de Bitcoin tendrá que ponerse de acuerdo en los próximos 80 años para prever este cambio, antes de que llegue la fatídica fecha del 7 de febrero de 2016.
➤ Descubra la diferencia entre una horquilla dura y una horquilla blanda.
En los encabezados de bloque de Bitcoin, la marca de tiempo es un entero de 32 bits sin signo. Permite asociar un marcador de tiempo al bloque. De esta forma, podemos determinar el orden cronológico de las transacciones, y así evitar el doble gasto de las monedas de bitcoin.
Esta marca de tiempo alcanzará su valor máximo el 7 de febrero de 2016 y provocará que la cadena de bloques de Bitcoin se detenga si no se hace nada. Afortunadamente, este error no solo es muy remoto, sino que también es muy fácil de solucionar. Los operadores de nodos completos deberán actualizar el protocolo mediante un hard fork antes de esta fecha límite. El objetivo será cambiar la interpretación de la marca temporal de los enteros o ampliar su tamaño a 64 bits, lo que permitirá a Bitcoin funcionar durante unos cientos de miles de millones de años más.
Recursos:

