Aspectos Técnicos de Bitcoin

¿Qué Es Una Timestamp? [Bitcoin]

Qué Es Una Timestamp

El Timestamp, o Marca de Tiempo, en Bitcoin se utiliza para establecer cuando un cierto bloque fue minado.

El inventor de Bitcoin, Satoshi Nakamoto, escribió en el whitepaper que presento este proyecto que el objetivo del timestamp era eliminar la amenaza de un conteo doble.

Este parámetro es parte fundamental del proceso de minería, donde los mineros reciben una compensación por el trabajo realizado a la hora de encontrar un nuevo bloque.

La razón de esto tiene que ver con que el timestamp sirve para determinar la dificultad con la que fue minado el bloque y cuanto tiempo tardo en minarse, lo que se conoce como tiempo de bloque.

Para asegurarse de que la dificultad es calculada de forma precisa, estas marcas de tiempos son utilizadas en lugar del tiempo real.

Cuando se crea un nuevo bloque de Bitcoin, 2 timestamp son utilizados:

  1. En la cabecera del bloque, que es agregada por el minero.
  2. La segunda para determinar cuando el bloque fue creado.

Si bien en teoría ambos tiempos deberían ser iguales, siempre existe el pequeño riesgo de que el minero se equivoque a la hora de ingresarla el timestamp, o que simplemente esté lo haga apropósito.

Por suerte hay dos formas de prevenir que algo así suceda, las cuales veremos más adelante en este artículo. Lo importante es que la primera permite que el tiempo de bloque no se atrase, mientras que la segunda que no se vaya muy adelante en el futuro.

Al final las dos quieren mantener la integridad de la cadena de bloque de la criptomoneda.

Problema del tiempo en Bitcoin

Uno podría pensar que el tiempo en la red de Bitcoin no es algo muy importante, ya que los bloques surgen de forma secuencial y se encuentran ordenados uno encima del otro. Todo gracias a los hash que apuntan al anterior.

Sabemos que los bloques de Bitcoin contienen las transacciones, el árbol de Merkle y otros parámetros como el hash del propio bloque.

Con esto diríamos que es suficiente para las transacciones y el sistema de consenso. Sin embargo, existe un mecanismo que necesita de este valor para funcionar, la dificultad de la minería.

Si muchos mineros se unen a la red, las probabilidades de encontrar un nuevo bloque son más grandes, lo que se traduce a tiempos de bloques más cortos. O si hay menos mineros que antes, el tiempo de bloque será menor.

Todo eso hace que la red funciona de forma impredecible, lo que requiere una solución que no necesite de una entidad central para dirimir esta cuestión.

Para eso se ajusta la dificultad de la minería cada 2 semanas, intentando aumentar o disminuir la misma en función de si es necesario que los bloques surjan más lento o más rápido.

La idea en Bitcoin es que estos tengan un tiempo de 10 minutos, y para conseguirlo se utilizan los timestamp de los bloques para realizar el cálculo promedio de bloques que han surgido durante ese lapso de 2 semanas.

Reglas de seguridad del timestamp en el bloque

Sabemos que cuando se crea un nuevo bloque hay 2 tipos de tiemstamps. Y también sabemos la razón de que haya un par de ellos es que el minero pueden mentir.

Existe un incentivo para que el minero mientan acerca del tiempo en que fue creado el bloque, en especial si informan que el bloque ha sido minado en el futuro.

Un minero puede decir que tardo 15 minutos en minar un bloque de Bitcoin, en lugar de los típicos 10. Simplemente, debe poner un timestamp 5 minutos adelantados.

Si esto se mantiene durante las 2 semanas, lo que dura el ajuste de la minería, cuando se realice el cálculo se llegara a la conclusión de que los bloques toman en promedio 15 minutos, lo cual sabemos que no es cierto.

Luego la dificultad se ajustaría hacia abajo para el próximo periodo, incrementando las ganancias de los mineros, que ahora podrían minar bloques más rápido. Lo que provoca también que el reloj de Bitcoin se aleje cada vez de la realidad.

Para resolver esto, o al menos mitigarlo, Bitcoin utiliza dos mecanismos:

  1. Regla de la Mediana del Tiempo Pasado (MPT, por sus siglas en inglés): el timestamp debe estar adelante de la media de los últimos 11 bloques. La mediana de estos 11 bloques significa que se podría generar un fork de hasta 6 bloques y el tiempo aún no se encontraría por detrás. Esta regla además hace juego con la idea de que alguien con el 10% del hashrate de la red tendría un 0,1% de posibilidades de revertir una transacción con 6 confirmaciones.
  2. Regla del Tiempo de Bloque Futuro: el timestamp no puede ser más de 2 horas en el futuro basado en la constante MAX_FUTURE_BLOCK_TIME, relativo a la mediana de los otros nodos pares. Otro mecanismo de defensa es que la diferencia máxima permitida entre la hora proporcionada por los nodos y el reloj de sistema es de 90 minutos. Hay que destacar que esta regla no es un consenso total, sino que aquellos bloques con un tiempo demasiado lejano en el futuro pueden volverse válidos a medida que el tiempo transcurre.

La regla número 1 asegura que la cadena de bloques continúe moviéndose hacia adelante en el tiempo, mientras que la regla número 2 asegura que la cadena no se vaya demasiado adelante.

Es verdad que las reglas no son infalibles, ya que un minero, por ejemplo, podría establecer un timestamp muy adelante, siempre que sea dentro del periodo de las dos semanas. Aun así, el impacto no sería demasiado grabe.

Debido a que 2 horas es una pequeña fracción de 2 semanas, el impacto por el intento de manipulación de la red sería algo limitado.

Que haga algo así equivaldría a que el tiempo de bloque de 10 minutos pasaría a tener una duración de 9 minutos y 54 segundos, en las dos semanas posteriores al ajuste de la dificultad.

Además, sería un cambio puntual, ya que una vez realizado el cambio de tiempo de dos horas, no puede volverse a producir sin retroceder primero.

También, es necesario entender que este periodo de 2 horas es importante para que los mineros tengan la seguridad de que han agregado el suficiente margen de tiempo hacia adelante. Esto se realiza para que cuando a un nodo le llegue este nuevo bloque, no lo rechace por tener una timestamp anterior a la hora actual.

Hasta el momento estas 2 reglas han demostrado ser bastantes efectivas cuando se trata de evitar que los mineros manipulen los timestamp para sacar un provecho de ello.

Problemas de tiempo de bloque teórico de Bitcoin Cash

Creada en agosto de 2017, Bitcoin Cash es una criptomoneda alternativa que surgió de un fork de Bitcoin. Su principal objetivo era poder incrementar el tamaño del bloque.

Una de las mayores preocupaciones de los desarrolladores de Bitcoin Cash en el momento de su creación era que no muchos mineros se unieran al proyecto, y de esta forma el tiempo entre el descubrimiento de un bloque y otro sería demasiado alto.

Como resultado de esto, se implementó algo llamado Emergency Difficult Adjustment (EDA), que tenía el objetivo de aliviar este problema.

No hablaremos en detalle de como funciona este algoritmo aquí, pero si es importante decir que este mecanismo era muy complejo y acabo teniendo fallas fundamentales.

El algoritmo en particular debía analizar si no habían surgido una cierta cantidad de bloques dentro de un periodo determinado, y en ese caso la dificultad sería reducida.

El problema era que la política era demasiado agresiva, ya que si encontraba una diferencia muy grande entre bloques, el ajuste de dificultad también lo era. Una oportunidad única para que los mineros aprovecharan a manipular.

Los mismos dejaban apropósito grandes tiempos en donde no se minaba un bloque, resultando en cambios muy bruscos de la dificultad para minar, seguido de periodos de dificultad bajo donde los bloques se producían con gran frecuencia. De esta forma la red se volvió inestable.

El resultado de la falla hizo que más bloques de Bitcoin Cash se produjesen de los que se esperaban, y que las ganancias de los mineros se incrementen durante esos periodos.

Como consecuencia, Bitcoin Cash género más de 5.000 bloques pro delante de Bitcoin, una ventaja que a día de hoy aun conserva.

Un par de meses después, en noviembre de 2017, una corrección fue lanzada. El EDA fue eliminado y reemplazado con un nuevo sistema de ajuste de dificultad, uno mucho más simple que funcionaba cada 24 horas.

Sin embargo, esto aún es diferente a como lo hace Bitcoin y sus 2 semanas de periodo. Bitcoin Cash tienen un sistema más dinámico y rápido.

Si bien esto puede significar una volatilidad más grande en el ajuste de la dificultad en el corto plazo, la moneda también se ajusta más rápido a cualquier cambio en la dificultad, todo mientras a Bitcoin le toma más tiempo corregir.

CriptomonedaPeríodo de CálculoAjuste de DificultadComentarios
Bitcoin2 semanasCada 2 semanas– Menos probable de que sufra una discrepancia en el tiempo de bloque.
– Cualquier discrepancia toma más tiempo solventarse.
Bitcoin Cash1 díaCada bloque– Más probable de que sufra una discrepancia en el tiempo de bloque.
– Cualquier discrepancia es resuelta más rápido.

A diferencia de Bitcoin donde las 2 horas no eran una cantidad muy grande como para crear un efecto enorme en la dificultad, en Bitcoin Cash si lo es.

Un tiempo de 2 horas en 24 es mucho mayor a 2 horas en 2 semanas. Es el equivalente a reducir el tiempo de bloque de 10 minutos a 9 minutos y 10 segundos.

Esto puede ser potencialmente significativo y resultar en un cambio en la rentabilidad de la minería, si es que es abusado. Por tanto, Bitcoin Cash es vulnerable, o al menos más que Bitcoin, a la manipulación del timestamp.

La buena noticia es que si bien es más vulnerable, también puede resolver el problema mucho más rápido, haciendo que los efectos de este ataque no sean tan perjudiciales.

Resumen

  • Un valor que indica cuando un bloque fue minado.
  • Se utiliza para ajustar la dificultad de la minería, calculando cuantos bloques han surgido durante un tiempo específico y realizando los cambios necesarios.

Acerca del autor

Criptotario

Me llamo Martin, soy ingeniero y apasionado de las inversiones y la tecnología. Me gusta mucho leer libros y todo aquello que me haga mejorar día a día.

Agrega un Comentario

Haz clic aquí para añadir un comentario