226 / 736XNONCE

Extranonce

Cómo consiguen los mineros más posibilidades de búsqueda

Alena está aprendiendo cómo se crea un bloque. El minero modifica los datos de entrada y calcula su hash, una huella compacta cuyo valor numérico debe cumplir la condición de la red. Pero ¿qué ocurre si ya ha probado todos los valores de un campo modificable sin éxito? Extranonce permite preparar más variantes y seguir buscando. No relaja las reglas de Bitcoin ni promete una recompensa; ayuda a que las máquinas no repitan siempre los mismos intentos.

Extranonce son datos variables adicionales que el software de minería suele introducir en la coinbase, la primera transacción especial del bloque que asigna la recompensa minera. Cambiarlos modifica la huella conjunta de las transacciones incluida en la cabecera y aporta nuevas entradas para la búsqueda. El campo nonce independiente de la cabecera no aumenta de tamaño.

La cabecera resume los datos del bloque. Un bit almacena un cero o un uno; ocho bits forman un byte. La cabecera incluye un campo nonce de 32 bits que ofrece 2^32 valores si todo lo demás permanece fijo. Volver a probar la misma cabecera con el mismo nonce produce el mismo hash y, por tanto, el mismo resultado. Extranonce no alarga ese campo: modifica otros datos con los que se prepara una cabecera nueva. Alena puede imaginar una nueva tarea para la que recorrer otra vez el contador. En la práctica también pueden modificarse otras partes de la cabecera, dentro de las reglas aplicables. [1] [5]

Aquí coinbase significa la primera transacción de cada bloque, no la plataforma de intercambio. Cuando el software cambia su extranonce, cambian los datos codificados de la transacción y su TXID, el identificador calculado a partir de ella. Un árbol que combina huellas sucesivamente conduce hasta la Merkle root, la huella conjunta de las transacciones almacenada en la cabecera. El software debe recalcular la rama afectada. Las demás transacciones pueden seguir iguales, pero no se puede conservar sin más la raíz anterior. Esa cadena de cálculos aporta nuevas entradas para la minería. [1]

En un modelo sencillo, dejemos todo lo demás fijo y permitamos dos bytes de extranonce completamente libres. Ofrecen 2^16 variantes; junto con el nonce de 32 bits generan 2^48 combinaciones de entrada. Son intentos posibles, no una cantidad de bloques encontrados. Alena no obtiene una condición más fácil ni la certeza de acertar dentro de ese conjunto. La ventaja es práctica: puede seguir buscando. Añadir espacio disponible tampoco acelera por sí mismo la máquina que debe realizar los cálculos. [1]

El espacio para extranonce no es un formulario vacío sin reglas. BIP 34, una regla concreta de Bitcoin, exige que al principio del campo de entrada de la coinbase llamado scriptSig figure la altura del bloque correctamente codificada: su posición en la cadena. El límite de 100 bytes corresponde a todo el scriptSig de la coinbase, no solo a extranonce. El software debe reservar espacio para los datos obligatorios y mantener el formato válido. Si Alena los sobrescribiera, los cálculos posteriores buscarían una solución para un bloque inválido. [3] [4]

Al minar en un pool, conviene que cada máquina busque variantes distintas. Stratum V2, un protocolo para distribuir tareas de minería, utiliza también el reparto de extranonce. El servidor que distribuye las tareas, upstream, asigna un extranonce_prefix fijo: la parte inicial de estos datos. Un intermediario local puede reservar otra parte para sus clientes y transmitir el resto a los destinatarios de las tareas, downstream. Estas direcciones son relativas a cada conexión. El prefijo asignado no es automáticamente una zona que el minero final pueda modificar; mantenerlo fijo ayuda a separar el trabajo de los participantes. [2]

En un canal extendido de Stratum V2, SubmitSharesExtended envía los bytes modificados junto con el resultado. La coinbase se compone en este orden: coinbase_tx_prefix, extranonce_prefix, extranonce y coinbase_tx_suffix. Estos nombres identifican partes de los datos que intercambian los programas de minería. El campo extranonce debe tener la longitud acordada. Aunque una representación más corta parezca el mismo número, una secuencia distinta de bytes puede generar otra transacción. Los ordenadores comparan datos exactos, no una interpretación humana aproximada. [2]

Una Standard Job de Stratum V2 es una tarea con una Merkle root fija. El dispositivo final solo puede modificar las partes permitidas de version, nonce y nTime: versión, contador y hora de la cabecera. Por eso no envía su propia extranonce como lo haría un canal extendido. El software que proporciona las tareas puede preparar otra coinbase y una raíz nueva, y entregar una tarea diferente. Alena quizá no encuentre un control de extranonce en su dispositivo, aunque el mecanismo se utilice en el conjunto del sistema. [2]

Imaginemos que llega un prefijo nuevo mientras se procesa un resultado anterior. SetExtranoncePrefix en Stratum V2 se aplica a las tareas enviadas después por ese canal, es decir, esa sesión de minería. El resultado debe seguir asociado al job_id correcto, el identificador de la tarea, y a su espacio asignado. Sustituirlo todo por el prefijo más reciente podría cambiar los datos que originaron un resultado anterior. Extranonce sirve para crear intentos distintos y mantenerlos identificados, no para reescribir después sus condiciones. [2]

Para obtener la imagen más completa, lee esta entrada junto con Nonce, Merkle Tree, Mining Share, Block Template, Bitcoin. También enlazan con esta entrada ASIC Miner, Stratum V1, Stratum V2, Block Template.

DOC · 001Bitcoin Developer Guide — Mining and nonce spaceDocumentación DOC · 002Stratum V2 — Extended extranonce and jobsEspecificación DOC · 003BIP 34 — Height in coinbaseEspecificación DOC · 004Bitcoin Developer Reference — Coinbase inputDocumentación DOC · 005NIST — Binary data unitsDocumentación
Revisado: Fuentes primero · No es asesoramiento financiero