50 / 691NONCE

Nonce

Un nonce en la minería de Bitcoin es un campo de 32 bits en un encabezado de bloque de 80 bytes que los mineros cambian cuando buscan un hash doble SHA-256 de un objetivo de prueba de trabajo menor o igual a uno. (target)

El nonce en el encabezado del bloque son las coordenadas públicas uint32 del espacio de búsqueda, no un nonce de firma secreta o criptográfica. Solo hay 2^32 valores para un encabezado fijo, por lo que los ASIC modernos se quedarán sin este espacio muy rápidamente. Por lo tanto, el software de minería también cambia el extranonce en la transacción de coinbase, la raíz de Merkle, nTime y, a veces, los bits de versión permitidos. (Merkle root)

El encabezado del bloque de Bitcoin tiene 80 bytes: versión, hash del bloque anterior, raíz de Merkle, tiempo, nBits y un nonce de cuatro bytes. Un nonce es un entero de 32 bits sin signo. Cambiarlo cambia el encabezado serializado y, por lo tanto, el doble SHA-256 sin cambiar la lista de transacciones en sí.

SHA-256 no proporciona ninguna dirección útil para un pequeño cambio en la entrada. Un nonce incrementado en uno crea un hash de 256 bits prácticamente no relacionado, por lo que cada prueba es otra prueba probabilística. El valor ganador no puede progresar mediante gradiente.

Un nonce de cuatro bytes ofrece exactamente 4.294.967.296 posibilidades para un único encabezado fijo. Los ASIC actuales pasan por este rango muchas veces por segundo, por lo que el encabezado nonce por sí solo no es suficiente para la minería moderna.

Los pools y el software de minería utilizan extranonce dentro de una transacción de coinbase. A pesar del nombre, no es otro campo de encabezado de bloque. Cambiar el extranonce cambia el txid de coinbase, luego la raíz de Merkle, y esto crea un encabezado completamente nuevo con un nuevo espacio de 2^32 valores de nonce.

Una transacción de Coinbase es una hoja de árbol de Merkle. Una vez que se cambia su txid, el cambio se propaga a través del árbol hasta la raíz de Merkle en el encabezado. De este modo, el minero recibe un nuevo encabezado con el mismo hash del bloque anterior y casi el mismo contenido del bloque.

Se puede obtener espacio adicional cambiando nTime dentro de los límites permitidos y rodando los bits de versión permitidos. BIP320 describe el uso general de bits nVersion seleccionados. Nada de esto cambia el consenso: el hash del encabezado resultante aún debe cumplir con el objetivo.

En la minería en grupo, el grupo o negociador de trabajo asigna a los trabajadores una base de moneda/extranonce única y otros parámetros para que los dispositivos no realicen el mismo hash. BIP23 también funciona con rangos nonce; Los protocolos Stratum distribuyen el espacio de búsqueda entre una gran cantidad de ASIC de manera más eficiente.

El valor numérico del nonce en sí no es ni bueno ni malo. El nodo completo aplica hash a todo el encabezado específico y compara el resultado con el objetivo derivado de nBits. Un nonce bajo no prueba nada; la prueba de trabajo es simplemente un hash suficientemente bajo de todo el encabezado.

La palabra nonce también se usa en firmas, donde puede ser un escalar secreto de una sola vez y su repetición puede comprometer la clave privada. La minería nonce, por otro lado, es información pública en el encabezado del bloque y no necesita ningún secreto. Estos dos significados no deben confundirse.

Bitcoin Core devuelve, entre otras cosas, nonce, bits y tiempo para el bloque a través de getblockheader. Para una verificación independiente, se puede serializar con precisión el encabezado de 80 bytes, realizar un doble SHA-256 y verificar que el valor numérico resultante cumpla con el objetivo.

Para obtener la imagen más completa, lee esta entrada junto con Cabecera de bloque, Minería, Proof of Work, Mining Target, Transacción coinbase, Bitcoin. También enlazan con esta entrada Cabecera de bloque, Transacción coinbase, Mining Target, Extranonce.

DOC · 001Bitcoin Developer Reference — Block headersDocumentaciónDOC · 002Bitcoin Developer Guide — MiningDocumentaciónDOC · 003Bitcoin Developer Reference — TransactionsDocumentaciónDOC · 004BIP 23 — getblocktemplate pooled miningEspecificaciónDOC · 005BIP 320 — nVersion bits for general purpose useEspecificaciónDOC · 006Bitcoin Core RPC — getblockheaderDocumentaciónDOC · 007Bitcoin Core RPC — getblocktemplateDocumentaciónDOC · 008Bitcoin Core source — mining interfacesDocumentación
Revisado el 1 de agosto de 2026Fuentes primero · No es asesoramiento financiero