Saltar al contenido
buybitcoinsmart

Glosario / Minería y consenso

Nonce

¿Qué es un nonce?
Un nonce es el contador de cuatro bytes de un encabezado de bloque que los mineros incrementan mientras buscan un hash por debajo del objetivo, lo que da solo 4.294.967.296 intentos por encabezado.

Se especifica en el BIP-320.

La palabra es una abreviatura de "number used once" (número usado una vez), y en bitcoin designa el único campo del encabezado que existe solo para que se cambie. Cuatro bytes parecían generosos en 2009 y hoy son una nimiedad: una sola máquina moderna agota todo el rango en una fracción de segundo. Por eso los mineros varían también otras partes del encabezado, y el nonce es solo el bucle más interno de la búsqueda.

Cómo funciona

Un nonce ocupa los cuatro últimos bytes del encabezado de 80 bytes, y minar consiste en recorrer sus valores.

El minero construye un encabezado candidato, le aplica SHA-256 dos veces y compara el resultado con el objetivo. Si el resultado es demasiado grande, el contador se incrementa y se vuelve a calcular el hash del encabezado. No tiene que cambiar nada más, lo que mantiene barato el bucle: SHA-256 trabaja con segmentos de 64 bytes, así que los primeros 64 bytes del encabezado pueden procesarse una sola vez y reutilizarse en cada intento.

El problema es el rango. En cuatro bytes caben 4.294.967.296 valores distintos, y un ASIC con una capacidad nominal de 200 terahashes por segundo los recorre todos en aproximadamente 21 microsegundos. Por eso la búsqueda tiene tres bucles exteriores. El minero varía el nonce extra, unos pocos bytes libres en el script de desbloqueo de la transacción coinbase, lo que cambia esa transacción, lo que cambia la raíz de Merkle, lo que produce un encabezado completamente nuevo en el que buscar. Puede adelantar la marca de tiempo dentro de lo que permiten las reglas. Y desde BIP320 puede variar dieciséis bits del campo de versión, con la máscara 0x1fffe000, lo que multiplica el espacio por otros 65.536 sin tocar en absoluto la lista de transacciones.

La propia búsqueda de Satoshi dejó constancia. El encabezado del bloque génesis lleva el valor 2083236893, encontrado con una CPU en 2009 sin variar ningún nonce extra y sin bits de versión a la vista.

Dónde aparece

Todas las páginas de bloque de todos los exploradores de bloques muestran el nonce ganador, y ese número no le dice casi nada.

Como las máquinas recorren el espacio en un orden impredecible, y como la mayor parte de la variación real procede hoy del nonce extra y del version rolling (variación de los bits de versión), el número de un bloque minado es casi aleatorio. Atribuir significado a uno bajo o alto es un error típico de principiante. El campo importa más a quienes escriben firmware: Stratum asigna a cada máquina conectada su propia porción del nonce extra para que dos trabajadores del mismo pool nunca dupliquen el esfuerzo, y Stratum V2 rediseña la negociación de tareas en torno al mismo problema de coordinación.

También encontrará la palabra muy lejos de la minería. Los esquemas de cifrado usan nonces para evitar que dos mensajes produzcan el mismo texto cifrado, Ethereum usa un nonce de cuenta como contador de transacciones y los inicios de sesión web usan uno para bloquear los ataques de repetición. Ninguno de ellos es el campo del encabezado de bloque, y la palabra compartida causa más confusión evitable que cualquier otro término prestado en bitcoin.

Preguntas frecuentes

¿Por qué el nonce del bloque solo tiene cuatro bytes?

Bastaba en 2009, cuando ninguna máquina podía probar cuatro mil millones de hash con rapidez. Los mineros modernos agotan el rango al instante y encuentran espacio de búsqueda adicional en el nonce extra de la transacción coinbase y en el version rolling.

¿Qué es un nonce extra?

Son bytes libres dentro del script de desbloqueo de la transacción coinbase que un minero cambia cuando se agota el nonce del encabezado. Cambiarlos modifica la raíz de Merkle, lo que produce un encabezado totalmente nuevo con un rango de nonces nuevo.

Términos relacionados

Más en la sección Minería y consenso

Leer esta página en inglés