Bloque nonce predecible

¿Es el bloque nonce predecible de alguna manera? Parece ser una prueba de trabajo por sí mismo, al igual que el hash de bloque, pero ¿puede un minero obligar a un bloque extraído a tener un nonce específico? (si su hashrate se lo permite)

Respuestas (2)

Cuando se usa como se pretende , el nonce generalmente comienza en un punto determinado y se incrementa a partir de ahí. Esto puede reiniciarse cada segundo, ya que hay una marca de tiempo específica de segundo en el bloque, pero los ASIC modernos pueden hacer mucho más que 2^32 hashes por segundo, por lo que parece razonable que los nonces se distribuyan de manera bastante uniforme.

¿Puede un minero obligar a un bloque extraído a tener un nonce específico? (si su hashrate se lo permite)

Sí. Haría esto arreglando el nonce del encabezado de su bloque y cambiando las transacciones en su lugar (la transacción coinbase, también conocida como recompensa de bloque, es un lugar perfecto para esto); al cambiar cualquier transacción, la raíz de Merkle en el encabezado del bloque cambiará.

El ciclo de minería habitual solo requiere dos hashes SHA256 por intento. Si solo incluye la transacción de coinbase en su bloque, esto agregará (al menos; no estoy seguro si tendría que completar 1 para ser un número par, como lo hace para 3) dos hashes SHA256 por intento, lo que significa serías (al menos) el doble de lento de lo normal. Tampoco estoy seguro de si los ASIC existentes son capaces de hacer este cálculo diferente.

El número de hashes crecería con (proporcional al logaritmo de) el número de transacciones en el bloque. Si incluye solo 2 transacciones más (para que pueda reflejar el ejemplo en el wiki ). Tendría que hacer 3 hashes dobles para reconstruir la raíz de Merkle (hay 7 hashes dobles en total, pero algunos de ellos podrían reutilizarse) antes de su hash doble del encabezado del bloque, para un total de 8 hashes SHA256 ( 1/4 de su velocidad normal).

¿Qué quiere decir con "tener su nonce completamente dentro de las transacciones"? ¿Podría extraer un bloque que contenga una sola transacción y un conjunto de nonces arbitrarios hasta que adivine un hash válido que contenga uno de ellos?
Normalmente, hay dos nonces : uno en el encabezado del bloque y un extraNonce en la transacción de coinbase. Si elige mantener fijo el nonce en el encabezado del bloque, debe cambiar algo (muy probablemente el extraNonce) después de cada intento.
He actualizado mi respuesta y comentario para abordar mejor esto.
Gracias Tim, respuesta muy completa. Entonces puedo asumir que nadie puede predecir o codificar un nonce arbitrario.

No, no es predecible. Si lo fuera, rompería el funcionamiento del descubrimiento de bloques.

Para explicarlo en términos muy amplios: un nonce es simplemente un número creciente. Se combina con un conjunto aleatorio de transacciones aún no confirmadas y se pasa a través de un algoritmo hash simple, que lo convierte en un número largo llamado hash.

Es esta respuesta (el hash) la que debe coincidir con la prueba: debe comenzar con un cierto número de ceros para que el bloque de transacciones se haya considerado "descubierto" y, por lo tanto, confirmado.

Si no coincide con esta prueba, el nonce se incrementa y el proceso comienza de nuevo.

Es el hecho de que el número y el contenido de las transacciones combinado con el nonce proporciona la imprevisibilidad esencial del proceso, lo que significa que, en última instancia, nadie puede decir qué minero encontrará el bloque.

Como esta es una tarea informática bastante pesada (probar continuamente nuevos nonces y transacciones hasta que encuentre el bloque), el nonce también tiene otro propósito: ayudar a otros nodos de bitcoin a tomar un atajo para verificar si el bloque que afirma haber descubierto es correcto. Simplemente necesitan tomar todas las transacciones en el bloque (tienes que decirles cuáles) y usar el nonce para llegar al Hash correcto con el número correcto de ceros. Esto, por el contrario, es una tarea informática muy ligera.