Descripción General
El nonce ("número usado una vez") es un campo de 32 bits en la cabecera del bloque de Bitcoin que los mineros manipulan al buscar una prueba de trabajo válida. Al cambiar el nonce y recalcular el hash de la cabecera del bloque, los mineros producen diferentes salidas de hash, buscando una que caiga por debajo del objetivo de dificultad actual.
El Nonce en la Cabecera del Bloque
Cabecera de Bloque (80 bytes):
┌──────────────┬──────────────────┬──────────────┐
│ Versión (4B) │ Hash Bloque Prev │ Raíz Merkle │
│ │ (32B) │ (32B) │
├──────────────┼──────────────────┼──────────────┤
│ Marca Tiempo │ Bits Dificultad │ Nonce │
│ (4B) │ (4B) │ (4B) │
└──────────────┴──────────────────┴──────────────┘
↑
Los mineros varían esto
El Problema del Espacio de Nonce
El nonce es solo de 32 bits, lo que significa que proporciona 2^32 (alrededor de 4.300 millones) valores posibles. Los modernos mineros ASIC pueden agotar todo el espacio de nonce en menos de un segundo. Cuando esto ocurre, los mineros deben cambiar otros campos para obtener un nuevo conjunto de hashes a probar:
- Marca de tiempo: Puede ajustarse dentro de un rango válido
- Transacción coinbase: Cambiar los datos coinbase altera la raíz Merkle, produciendo un espacio de nonce completamente nuevo
- Extra nonce: Un campo dentro de la transacción coinbase usado específicamente para este propósito
Bucle de Minería
while true:
for nonce in 0 to 2^32 - 1:
hash = SHA256(SHA256(cabecera_con_nonce))
if hash < objetivo:
return bloque // ¡Bloque válido encontrado!
// Espacio de nonce agotado
modificar_extra_nonce_coinbase()
recalcular_raiz_merkle()
Conceptos Erróneos Comunes
El nonce no es un valor secreto o criptográfico — es simplemente un contador que los mineros iteran. No hay nada especial en el nonce ganador; cualquier valor que produzca un hash por debajo del objetivo es igualmente válido. El proceso es pura fuerza bruta sin atajos matemáticos.