50 / 736NONCE

Nonce

Contador de minería en el encabezado del bloque

Nonce es un número que los equipos de minería cambian mientras buscan un nuevo bloque de Bitcoin. Cada cambio aporta una entrada distinta al cálculo y otra oportunidad de cumplir las reglas de minería.

El minero calcula un hash, una huella numérica del encabezado del bloque. Para cumplir Proof of Work (una prueba de trabajo computacional), el resultado debe ser menor o igual que un límite llamado target. Nonce es uno de los valores que se pueden cambiar para preparar otro intento. No es una contraseña ni una clave secreta: cualquiera puede verlo cuando se publica el bloque.

Anna tiene un equipo de minería que intenta producir un nuevo bloque de transacciones. A partir de su encabezado, un conjunto compacto de datos sobre el bloque, calcula con SHA-256 una huella numérica llamada hash. Bitcoin aplica el cálculo dos veces, de ahí double-SHA-256. Si el resultado supera el límite permitido, el equipo cambia, por ejemplo, Nonce de 10 a 11 y vuelve a intentarlo. Anna no adivina números a mano: el dispositivo hace una enorme cantidad de intentos automáticamente. Un Nonce mayor no implica un hash menor ni estar más cerca del objetivo. Un encabezado exactamente igual siempre produce el mismo hash, por lo que repetir el cálculo no ofrece una nueva oportunidad. [1] [2]

Nonce ocupa cuatro bytes, es decir, 32 bits. Permiten representar los enteros desde 0 hasta 4.294.967.295, ambos incluidos: en total 4.294.967.296 posibilidades, o 2^32. Parece muchísimo, pero un equipo especializado de minería, llamado ASIC, recorre ese intervalo muy deprisa. Probar todos los valores no garantiza el éxito. Si los demás datos del encabezado no cambian, empezar otra vez solo repite los resultados anteriores. Por eso el software también necesita preparar encabezados distintos. [1] [5]

Una opción es cambiar Extranonce. El nombre parecido puede confundir: no es otro campo del encabezado, sino un dato dentro de la transacción coinbase, la primera del bloque, que asigna la recompensa minera. Al modificarlo cambia el identificador de esa transacción, su txid, y después la Merkle root, la huella conjunta de las transacciones guardada en el encabezado. El equipo dispone así de una entrada diferente. Puede reutilizar los mismos valores de Nonce, pero ahora calcula hashes de otros encabezados. Otras 2^32 posibilidades tampoco garantizan encontrar un bloque. [2] [3]

Un explorador puede mostrar un Nonce pequeño en un bloque y uno grande en otro. El número por sí solo no dice cuánto costó encontrar el bloque ni si es mejor. Un Full Node, un programa que verifica por sí mismo los bloques y las transacciones según las reglas de Bitcoin, calcula el hash del encabezado completo y lo compara con el target válido, cuya representación compacta está en nBits. Lo decisivo es que el hash sea menor o igual que ese límite, no el tamaño de Nonce. La comprobación continúa: también hay que validar las transacciones y las demás reglas del bloque. [1] [8]

También encontrarás nonce al leer sobre firmas de transacciones. Ahí puede designar un número auxiliar secreto, técnicamente un escalar, que el algoritmo utiliza junto con la Private Key, la clave privada que autoriza el gasto. Reutilizarlo incorrectamente para mensajes diferentes puede revelar la clave. El Nonce de minería es distinto: es público y el mismo número puede aparecer en encabezados diferentes. Las partes públicas de una firma tampoco son ese valor auxiliar secreto. Las reglas de un uso no se pueden trasladar al otro sin atender al contexto. [9]

Cuando muchos dispositivos colaboran en un Mining Pool, no conviene que todos calculen hashes de los mismos encabezados. Repetirlos no añade intentos nuevos. Por eso el coordinador asigna datos distintos, por ejemplo para coinbase y Extranonce. Protocolos como Stratum transmiten las tareas; las unidades mineras conectadas también se llaman workers. BIP23 describe además el parámetro opcional noncerange para delimitar el intervalo de Nonce. Eso no significa que todos los pools deban usarlo ni que puedan cambiar las reglas de validez de los bloques. [4] [2]

Un Merkle Tree combina paso a paso las huellas de las transacciones hasta obtener una huella conjunta, la Merkle root. El identificador txid de coinbase entra en ese cálculo como una hoja del árbol. Cambiar Extranonce produce así un nuevo txid y después una nueva Merkle root. El minero puede mantener las demás transacciones y la referencia al bloque anterior y aun así obtener otro encabezado. No se reescribe un bloque confirmado: se modifica una propuesta de bloque nuevo para la que todavía se busca un Proof of Work válido. [1] [2]

El software puede crear más variantes del encabezado cambiando el tiempo, nTime, dentro de los límites permitidos o modificando los bits de versión autorizados. Esta última técnica se llama version rolling. BIP320 propone el uso general de determinados bits nVersion; la propuesta no autoriza a cambiar arbitrariamente todos los bits. Siguen vigentes las reglas de la red y de la tarea minera asignada. Ninguna de estas opciones evita que el hash resultante deba cumplir el target válido. El BIP323 propone más bits y sigue en estado Draft, es decir, borrador. [4] [5] [10]

Para leer documentación técnica también ayuda conocer el formato. El encabezado ocupa 80 bytes: versión, hash del bloque anterior, Merkle root, tiempo, nBits y Nonce de cuatro bytes. Nonce es un entero de 32 bits sin signo, de tipo uint32. Se codifica en orden little-endian, con el byte menos significativo primero. Cambiar solo Nonce modifica el encabezado y su hash double-SHA-256, no la lista de transacciones. El software necesita esta representación exacta, aunque para entender la minería no hace falta construirla a mano. [1]

Un lector avanzado puede usar getblockheader en Bitcoin Core con el hash de un bloque concreto. La salida detallada predeterminada incluye nonce, bits y time. Al poner el parámetro verbose en false se obtienen los 80 bytes exactos del encabezado en hexadecimal. Con ellos se puede calcular double-SHA-256 y comparar el resultado numérico con el target válido. Una implementación propia debe respetar el orden de bytes de Bitcoin: invertirlos incorrectamente cambia la comparación. Leer Nonce en un explorador no sustituye esa verificación. [1] [6] [8]

Para obtener la imagen más completa, lee esta entrada junto con Block Header, Minería, Proof of Work, Mining Target, Transacción coinbase, Bitcoin. También enlazan con esta entrada Block Header, Transacción coinbase, ASIC Miner, Stratum V1.

DOC · 001Bitcoin Developer Reference — Block headersDocumentación DOC · 002Bitcoin Developer Guide — MiningDocumentación DOC · 003Bitcoin Developer Reference — TransactionsDocumentación DOC · 004BIP 23 — getblocktemplate pooled miningEspecificación DOC · 005BIP 320 — nVersion bits for general purpose useEspecificación DOC · 006Bitcoin Core RPC — getblockheaderDocumentación DOC · 007Bitcoin Core RPC — getblocktemplateDocumentación DOC · 008Bitcoin Core v30.0 — Proof of Work validationFuente primaria DOC · 009BIP 340 — Schnorr SignaturesEspecificación DOC · 010BIP 323 — 24 nVersion bits for general purpose useDocumentación
Revisado: Fuentes primero · No es asesoramiento financiero