¿Cuáles son las diferencias entre los distintos MTP en Bitcoin?

Creo que hay 3 MTP diferentes (tiempo pasado medio) en Bitcoin (aunque esto puede ser incorrecto). David Harding dijo en IRC que había un MTP en Bitcoin v0.1 (el primer lanzamiento de Satoshi). También está MTP como se usa en BIP 9 y luego está MTP como se define en BIP 113 .

Si efectivamente hay 3 MTP diferentes en Bitcoin, ¿por qué? ¿Cuál fue la motivación?

¿A qué te refieres con tres diferentes? Todos son iguales: la marca de tiempo mediana de los últimos 11 bloques.

Respuestas (2)

Solo existe un único concepto de tiempo medio pasado (MTP) en Bitcoin, el tiempo medio de un bloque y los 10 bloques que lo preceden en la misma cadena de bloques. MTP siempre se ha utilizado en Bitcoin como parte de las reglas que utilizan los nodos para determinar si un bloque tiene un campo nTime válido en su encabezado. Esas reglas son:

  1. El nTime de un bloque debe ser mayor que el MTP de su bloque padre. Por ejemplo, si el MTP de un bloque es 1618782748(el MTP real del bloque más reciente mientras escribo esto), entonces el nTime del siguiente bloque debe ser 1618782748 + 1.

  2. El nTime de un bloque en UTC no debe estar a más de dos horas en el futuro según el reloj UTC en la computadora del nodo local.

Estas dos reglas permiten que el Protocolo Bitcoin, que no tiene una forma directa de determinar el tiempo, limite el rango de tiempos permitidos. Eso es importante, porque los tiempos proporcionados en los encabezados de los bloques se usan para calcular los ajustes de dificultad que intentan mantener la producción promedio de bloques en aproximadamente un bloque cada diez minutos. Este uso de MTP existe desde Bitcoin 0.1. (Esas reglas por sí solas han demostrado ser lo suficientemente buenas hasta ahora, pero se necesita al menos una regla adicional para evitar que los mineros manipulen significativamente la dificultad; consulte el ataque de distorsión de tiempo para obtener detalles sobre el problema y la bifurcación blanda de Consensus Cleanup propuesta para una solución. )

MTP tiene la propiedad útil de que aumenta monótonamente: solo sube, nunca baja (suponiendo que no se reorganiza la cadena de bloques). BIP9 aprovecha esta propiedad para evitar tener que lidiar con casos en los que el tiempo retrocede.

MTP también tiene la propiedad útil de que está fuera del control de un minero que crea un solo bloque (pueden, como máximo, elegir entre dos opciones posibles cuyos valores precisos fueron establecidos por mineros anteriores). BIP113 aprovecha esta propiedad para eliminar un problema de incentivos relacionado con las transacciones con límite de tiempo en las que siempre se alentaría a los mineros a extraer bloques casi dos horas en el futuro. Eso no sería un gran problema, pero fue bueno permitir que los mineros continuaran informando tiempos precisos para sus bloques de acuerdo con sus propios relojes.

En resumen, Bitcoin no tiene tres MTP diferentes; tiene un reloj monótono que se usa en tres contextos diferentes.

MTP se define como la marca de tiempo mediana de los últimos 11 bloques.

BIP 9 determina una altura de bloque basada en MTP. Cada 2016 bloques BIP 9 dice "¿Este siguiente bloque tiene un MTP pasado tiempo de inicio/tiempo de espera?"

Esperaría poder predecir la altura del bloque correspondiente a un futuro BIP 9 MTP (hora de inicio o tiempo de espera). Para que esta predicción resulte incorrecta, un minero malicioso (o varios mineros) tendría que manipular la marca de tiempo en al menos 6 (mediana de 11) de los 11 bloques. O, alternativamente, los mineros podrían dejar de minar para intentar deliberadamente falsificar la altura de bloque prevista. Obviamente, esto sería muy costoso ya que estarían renunciando a posibles recompensas en bloque.