226 / 691XNONCE

Extranonce

Datos variables adicionales para minería

Extranonce amplía el espacio de búsqueda al cambiar coinbase y su compromiso en la cabecera. No es otro campo independiente de la cabecera, y el pool no permite a cada minero modificar todos sus bytes.

Extranonce son datos variables que suelen insertarse en la entrada de la transacción coinbase. Cambiarlos proporciona nuevos datos para la raíz de Merkle y el hash de cabecera sin ampliar su campo nonce de 32 bits.

El campo nonce tiene 32 bits y ofrece 2^32 valores para una cabecera por lo demás idéntica. Extranonce no amplía ese campo. Cambia otros datos para construir otra cabecera y volver a probar valores nonce. [Bitcoin Developer Guide — Mining and nonce space]

Cambiar extranonce de coinbase cambia su serialización y TXID; se recalculan la rama correspondiente del árbol de Merkle y la raíz de Merkle de la cabecera. No hace falta cambiar las demás transacciones. No puede conservarse simplemente la raíz anterior sin recalcularla. [Bitcoin Developer Guide — Mining and nonce space]

Dos bytes totalmente libres permiten 2^16 variantes. Con un nonce de 32 bits y los demás datos fijos, el modelo ofrece 2^48 combinaciones de entrada. Es un espacio de intentos distintos, no una cantidad de bloques encontrados ni una garantía de éxito al agotarlo. [Bitcoin Developer Guide — Mining and nonce space]

BIP 34 exige la altura del bloque correctamente codificada al inicio de scriptSig de coinbase. El límite de 100 bytes afecta a todo ese scriptSig, no solo a extranonce. El área libre no debe sobrescribir la altura ni romper el formato de la transacción. [BIP 34 — Height in coinbase] [Bitcoin Developer Reference — Coinbase input]

Stratum V2 divide extended extranonce en un prefijo fijo de upstream, una parte reservada local y espacio downstream. El reparto evita búsquedas superpuestas inútiles. Un extranonce_prefix asignado no es automáticamente una zona que el minero final pueda cambiar libremente. [Stratum V2 — Extended extranonce and jobs]

En SubmitSharesExtended, coinbase se construye en el orden coinbase_tx_prefix, extranonce_prefix, extranonce y coinbase_tx_suffix. Los bytes extranonce enviados deben tener la longitud acordada. El mismo número codificado con menos bytes no necesariamente produce la misma transacción. [Stratum V2 — Extended extranonce and jobs]

Un Standard Job de Stratum V2 usa una raíz de Merkle fija; solo varían las partes permitidas de version, nonce y nTime. El equipo estándar no envía por sí mismo extranonce como un canal extended. Un nodo superior puede modificar coinbase al preparar una tarea nueva. [Stratum V2 — Extended extranonce and jobs]

SetExtranoncePrefix de Stratum V2 se aplica a tareas enviadas después del mensaje en ese canal. El resultado debe mantener el job_id y el espacio asignado correctos. El último prefijo no sustituye el registro de qué tarea produjo un resultado anterior. [Stratum V2 — Extended extranonce and jobs]

Para obtener la imagen más completa, lee esta entrada junto con Nonce, Árbol de Merkle, Mining Share, Block Template. También enlazan con esta entrada Block Template, getblocktemplate.

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