De acuerdo con la Referencia del desarrollador de Bitcoin , el encabezado del bloque tiene un total de 80 bytes:
NOMBRE DE BYTES 4 versión 32 hash de encabezado de bloque anterior 32 hachís de raíz de merkle 4 veces 4 veces
Según tengo entendido, el estado medio (primer bloque SHA) contiene 64 bytes del encabezado del bloque (qué campos en particular no sé, pero sé que no contiene el nonce), y el segundo bloque SHA contiene el resto , solo 80-64 = 16 bytes. ¿Significa esto que el segundo bloque SHA se rellena con 64 - 16 = 48 bytes? Si es así, ¿por qué no hacer que el campo nonce, por ejemplo, 48 - 4 = 42 bytes sea más grande (es decir, 52 bytes en lugar de 4 bytes)?
De esa manera, extranonce no tiene que estar en la transacción de generación, lo que acelera el hash, ¿no?
Podría haberse hecho de esa manera, a costa de aumentar la cantidad de espacio que se necesita para almacenar y enviar encabezados de bloque. Parece que el almacenamiento de encabezados de bloques era una gran preocupación para Satoshi (incluso hay una sección en el documento técnico al respecto), pero resultó que no importaba mucho.
¿Significa esto que el segundo bloque SHA se rellena con 64 - 16 = 48 bytes?
Sí, (fuente) pero su razonamiento es defectuoso. Incluso si el espacio de nonce fuera tan grande que se extendiera a otro bloque, eso solo significaría que midstate representaría el estado después de hacer hash de todo menos el último bloque (bloque en el sentido de criptografía, no en el sentido de Bitcoin).
Además, si el encabezado del bloque tuviera exactamente 128 bytes, el relleno lo extendería a un tercer bloque. Solo tienes 119 bytes antes de que eso suceda.
De esa manera, extranonce no tiene que estar en la transacción de generación, lo que acelera el hash, ¿no?
Realmente no. Puede verificar 2 ^ 32 hashes antes de incrementar la extranoncia, después de lo cual solo necesita hacer diez o más hashes antes de volver a la minería.
Generalmente, en los ASIC modernos, incluso esa parte se ha descargado. Habrá algún tipo de pequeño procesador dentro del ASIC, como un núcleo ARM, que toma una plantilla de bloque como encabezados de bloque de entrada y salida para que funcionen los núcleos SHA256.
Entonces, el costo no es de velocidad, sino de complejidad.
Como muchas cosas en Bitcoin, creo que esta es una decisión técnica que tenía sentido en ese momento, pero que envejeció mal.
codificador morse
Geremia
codificador morse
Geremia
codificador morse
Geremia
marca messa
<nBits> 4-bytes denoting the target threshold
.