¿De dónde viene la limitación de 2 horas en la marca de tiempo de bitcoin?

La wiki de Bitcoin dice que:

Una marca de tiempo se acepta como válida si es mayor que la marca de tiempo mediana de los 11 bloques anteriores y menor que el tiempo ajustado por la red + 2 horas

Mi pregunta es ¿por qué 2 horas? ¿Por qué no 1 o 3? ¿Hay algún cálculo detrás de esto?

Respuestas (1)

No recuerdo haber visto nunca un cálculo real para ello, y sospecho firmemente que la razón es que es "suficientemente bueno".

El uso principal y original de las marcas de tiempo de bloque es en los cálculos de dificultad. Ahora también ajustan el tiempo para las transacciones de tiempo de bloqueo, pero esa es una adición más reciente.

Las marcas de tiempo de un bloque deben:

  • Ser mayor que la mediana de los últimos 11 bloques (11 también parece ser un número elegido porque es lo suficientemente bueno)
  • Dentro de las 2 horas de la hora ajustada de la red

El tiempo ajustado de la red se calcula preguntando a todos sus compañeros por sus marcas de tiempo UTC, y si está dentro de los 70 minutos de su propio nodo, actualizando un cálculo de la mediana del tiempo ajustado de la red sobre todos los tiempos del nodo.

Esto impone límites sobre cuánto puede influir un solo nodo o minero en los parámetros relacionados con el tiempo. Dado que los ajustes de dificultad analizan el tiempo entre bloques y se ajustan para reducir la media o aumentarla hasta 10 minutos, permitir una variación muy grande puede ser contraproducente. 2 horas (para mí) parece una cantidad razonable, ya que incluso si alguien confunde la configuración del horario de verano y tiene un mal reloj, aún estaría apagado en el rango de 1-2 horas, en un sistema razonable.

Por supuesto, con ntp y otros servicios de cronometraje en estos días, los nodos deberían estar mucho menos apagados. Nunca he oído que el límite de 2 horas sea insuficiente, o que sea demasiado grande y cause problemas con el reajuste de dificultad.

Hay varias cosas en la especificación de Bitcoin que existen porque esa es la forma en que se configuró en la implementación original, y no existe una razón apremiante para cambiarla.