¿Cómo puede alguien extraer bitcoins a miles de millones o billones de hashes por segundo cuando el tamaño del nonce es de solo 2^32?

Según otra pregunta similar en Bitcoin Stack Exchange, https://en.bitcoin.it/wiki/Block_hashing_algorithm muestra cómo funciona el algoritmo de minería para Bitcoin. El problema es que muestra que el nonce no es mayor que 2^32. Cuando alguien ha pasado por todos los valores que puede tener el nonce, parece que el tiempo cambia y la búsqueda de un nonce adecuado comienza de nuevo, ya que incluso cambiar el segundo por 1 es suficiente para justificar probar los nonce nuevamente en el algoritmo hash.

En lo que respecta al algoritmo/software de minería real, con todo esto en mente, ¿cómo puede el hardware de minería proporcionar miles de millones o billones de hashes por segundo cuando cada segundo solo proporciona ~4.300 millones de nonces diferentes y requiere un nuevo "segundo de tiempo" para cambiar? el tiempo para empezar de nuevo con los nonces? Parece que en las circunstancias más extremas, incluso tener la "raíz de Merkle" cambiando debido a la adición de una transacción al bloque no ocurriría con la frecuencia suficiente para que los ASIC más poderosos siempre tengan trabajo que hacer.

En la medida de lo posible, estoy buscando una respuesta potencialmente elaborada pero fácil de entender.

Respuestas (1)

La marca de tiempo en bloques no necesita establecerse en el tiempo real del hash actual. Entonces, durante la minería, la marca de tiempo se puede mover cuando se agota el nonce, incluso si el tiempo real no es esa marca de tiempo.

También hay otras formas de cambiar los encabezados de bloque que no requieren cambiar la marca de tiempo. Los mineros con frecuencia agregan un valor a la parte de la base de monedas de su transacción de base de monedas, lo que se conoce como extranonce. Los mineros incrementarán eso para cambiar la raíz de merkle cada vez que agoten un conjunto de nonces para permitir aún más posibilidades de nonce. Además, se pueden hacer otras cosas, como cambiar el orden de las transacciones, seleccionar nuevas transacciones, cambiar los scripts de salida de la base de monedas, etc. Todas estas formas de cambiar el hash del bloque permiten a los mineros hacer trillones de hashes por segundo.

La marca de tiempo elegida por el minero está sujeta a controles de cordura: "mayor que la marca de tiempo mediana de los 11 bloques anteriores y menor que el tiempo ajustado por la red + 2 horas" en.bitcoin.it/wiki/Block_timestamp