¿Qué es el extraNonce?

Esta pregunta ayuda a identificar los diversos componentes del campo de "datos" de getwork, pero tengo curiosidad de dónde proviene el extraNonce. Mi corazonada es que son los primeros cuatro bytes de la segunda mitad de los datos, porque creo que todavía es parte de la raíz de Merkle (y, sin embargo, al estar en la segunda mitad de los datos, no será parte del estado medio) . ¿Es esto correcto? Y si es así, ¿cómo se incrementa el extraNonce y qué significa hacerlo?

Ejemplo de datos de trabajo:00000001a10bacc7e639d1c69a01014bc5db6f2604b3477a3f273a4e019a232700000000a5942372cc60477c8a276e59c8f1a3f58654ea2f6c4402bf1b18e48455b5b8f64f10868b1c07475200000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000

¿Es extraNonce (en little-endian, lo sé) 55b5b8f6?

Respuestas (2)

extraNonce se coloca en la entrada de la transacción de generación. Los clientes de getwork no pueden ver las transacciones, por lo que no pueden actualizar extraNonce. En cambio, algunos mineros modifican nTime ligeramente para darles más espacio de nonce.

bitcoind usa extraNonce, pero no es parte del protocolo. No hay campo extraNonce en bloques o transacciones.

Ah, interesante. Y nTime es lo mismo que la marca de tiempo descrita aquí , ¿correcto?
Sí, nTime es un campo dentro del encabezado del bloque.

Esto realmente me ayudó a entenderlo:

Un minero solitario incrementa Nonce hasta que se desborda. Luego incrementa extraNonce y reinicia Nonce. extraNonce se encuentra en la transacción de coinbase, por lo que cambiarlo altera la raíz de Merkle. extraNonce se restablece en función de la hora.