Sé que un bloque se basa en un número aleatorio llamado nonce, pero si ese número es aleatorio y desconocido para el minero, ¿cómo se verifica ese número como el nonce correcto y no como un número arbitrario?
Básicamente, no existe un nonce "correcto", solo un conjunto de posibles bloques "correctos" que pueden usar cualquier nonce que deseen para obtener un hash aceptable. Entonces el nonce es solo "un número arbitrario". Pero para comprender cómo funcionan los nonces, primero debe comprender el proceso de hashing mediante el cual se producen los bloques.
Los hashes criptográficos son una forma matemática de convertir cualquier conjunto de datos en un número aleatorio, llamado hash. El proceso de hashing está diseñado para que sea fácil calcular el hash de algunos datos, pero casi imposible encontrar datos que se ajusten a un hash específico , tener incluso un conjunto de datos ligeramente diferente producirá un hash totalmente diferente, y para que la única manera encontrar un hash con una propiedad en particular (digamos, estar por debajo de cierto número) es calcular muchos de ellos hasta que tengas suerte.
En la red Bitcoin, solo se aceptan e incluyen en la lista oficial bloques con ciertos hashes. El criterio por el cual los bloques "cuentan" es que su hash debe estar por debajo de un cierto número llamado objetivo. La red ajusta este número hacia arriba y hacia abajo de acuerdo con la frecuencia con la que los bloques pasan la prueba; así es como puede mantener la tasa de producción de bloques en un promedio de 10 minutos por bloque. Entonces, si el objetivo es
00000692856290566183958127638592383846392938562929689273923968
luego un bloque con un hash de
00000739485762992939239823472938472569106923385616929838472389
no serán aceptados, pero bloques con hashes de
00000683060299472046094517810601040976920106812102601296720934
00000000000000000000000000000000000000000000000000000000453737
o
00000692856290566183958127638592383846392938562929689273923967
todo pasará con gran éxito. Estos no son hashes reales, son solo ejemplos.
Un minero está tomando una lista de transacciones verificadas y válidas, juntándolas en el formato correcto y luego calculando su hash criptográfico. Pero digamos que el hash que obtienen no cumple con los criterios (como la mayoría de ellos no). ¿Qué se supone que deben hacer? La única forma de obtener un hash diferente es usar al menos datos ligeramente diferentes. Entonces, en lugar de estropear su lista de transacciones válidas o algo así, los bloques tienen algo llamado nonce en ellos. El nonce es solo un número sin sentido que se puede cambiar tantas veces como desee para que pueda verificar un montón de hashes diferentes y ver si pasan la verificación de dificultad de la red.Entonces, cuando un minero está verificando miles de millones de hashes por segundo (como muchos de ellos), simplemente está cambiando el nonce a otra cosa, verificando el hash de todo el bloque; cambiando el nonce a otra cosa, verificando el hash del bloque (ahora ligeramente diferente); cambiando el nonce otra vez, etc.
En este sentido, un nonce "correcto" es simplemente el que permite que el bloque se convierta en un número aceptable. Así como hay muchos hashes aceptables, hay muchos nonces diferentes que funcionarán para el mismo bloque. Pero un minero solo tiene que encontrar uno de ellos. Cualquiera que encuentren primero está bien.
También te puede interesar cómo se calcula el objetivo.
Nayuki