Mastering Bitcoin
10. Minería y Consenso » Construyendo la Cabecera de Bloque
Página 72 de 98
Construyendo la Cabecera de Bloque
Para construir la cabecera de bloque, el nodo de minería tiene que llenar seis campos, como se indica en La estructura de la cabecera de bloque.
Tabla 3. La estructura de la cabecera de bloque

En el momento que el bloque 277.316 fue minado, el número de versión que describe la estructura de bloques es la versión 2, que está codificada en formato little-endian en 4 bytes como 0x02000000.
A continuación, el nodo de minería tiene que añadir el «Hash del Bloque Anterior». Ese es el hash de la cabecera de bloque del bloque 277.315, el bloque anterior recibido de la red, que el nodo de Jing ha aceptado y elegido como el padre del bloque candidato 277.316. El hash de la cabecera de bloque para el bloque 277.315 es:
0000000000000002a7bbd25a417c0374cc55261021e8a9ca74442b01284f0569
El siguiente paso es resumir todas las transacciones con un árbol merkle, a fin de añadir la raíz merkle a la cabecera de bloque. La transacción de generación aparece como la primera transacción en el bloque.
Después de ella, se añaden otras 418 transacciones más, para un total de 419 operaciones en el bloque.
Como vimos en el apartado sobre árboles Merkle, debe haber un número par de nodos «hoja» en el árbol, por lo que la última transacción se duplica, creando 420 nodos, cada uno con el hash de una transacción. Los hashes de transacción se combinan de dos en dos, creando cada nivel del árbol, hasta que todas las transacciones se resumen en un solo nodo en la «raíz» del árbol. La raíz del árbol merkle resume todas las transacciones en un solo valor de 32 bytes, que se puede ver marcado como «merkle root» en el bloque 277.316, y aquí:
c91c008c26e50763e9f548bb8b2fc323735f73577effbc55502c51eb4cc7cf2e
El nodo de minería añadirá después un sello de tiempo de 4 bytes, codificado como una fecha «Unix Epoch», que indica el número de segundos transcurridos desde la medianoche UTC/GMT del 1 de enero de 1970. La hora 1388185914 es igual a viernes, 27 de diciembre 2013, 23:11:54 UTC/GMT.
Después, el nodo rellena el objetivo de dificultad, que define la dificultad de la prueba de trabajo que se requiere para hacer que este sea un bloque válido. La dificultad se almacena en el bloque como una métrica «bits de dificultad», que es una codificación exponente-mantisa del objetivo. La codificación tiene un exponente de 1 byte, seguido por una mantisa de 3 bytes (coeficiente). En el bloque 277.316, por ejemplo, el valor de los bits de dificultad es 0x1903a30c. La primera parte 0x19 es un exponente hexadecimal, mientras que la siguiente parte, 0x03a30c, es el coeficiente. El concepto de un objetivo de dificultad se explica en Objetivo de Dificultad y Recálculo de Dificultad y la representación de los «bits de dificultad» se explica en Representación de la Dificultad.
El campo final es el nonce, que se inicializa a cero.
Con todos los otros campos llenos, la cabecera de bloque ya está completa y el proceso de la minería puede comenzar. El objetivo es ahora encontrar un valor para el nonce que resulte en un hash de cabecera de bloque que sea menor que el objetivo de dificultad. El nodo de minería tendrá que probar miles de millones o billones de valores nonce antes de encontrar un nonce que satisfaga el requisito.