¿Por qué el objetivo se almacena de forma compacta en el encabezado del bloque?

¿Por qué el objetivo se convierte en "Bits" y no se almacena en su totalidad en el encabezado del bloque?

Por ejemplo, por qué:

{
"hash" : "000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506",
"height" : 100000,
"bits" : "1b04864c",
"difficulty" : 14484.16236123,
}

y no:

{
"hash" : "000000000003ba27aa200b1cecaad478d2b00432346c3f1f3986da1afd33e506",
"height" : 100000,
"target" : "000000000004864c000000000000000000000000000000000000000000000000",
"difficulty" : 14484.16236123,
}

¿Es para ahorrar espacio?

No es necesario ese nivel de precisión, pero sí es necesario conservar espacio en el encabezado, porque los clientes suelen almacenar los encabezados de bloque en la RAM.

Respuestas (1)

Su interpretación es más larga, al menos, el encabezado completo tiene solo 80 bytes de largo. La codificación de "bits" es histórica y es un remanente del cliente 0.1.0 previo al lanzamiento. Hay otras cosas en el encabezado que podrían haberse codificado mejor (el nonce debería haber sido más largo, y la versión se lee como un campo de bits, no como un int, y una raíz aux merkle hubiera sido buena), pero tal como está, no hay realmente gran razón para cambiar cualquier cosa debido a la cantidad de inercia detrás de la formación actual.

¿Qué quieres decir con auxraíz de merkle? Además, sería bueno tener tiempos precisos tanto en el encabezado (y asociado con Txs individuales)
Una parte dedicada del árbol merkle solo para datos auxiliares como compromisos UTXO. Las marcas de tiempo en las transacciones no tendrían ningún sentido, solo existen para permitir ajustes de dificultad. No sirven de nada si no confían en que sean correctos hasta cierto punto, si hubiera una forma de asegurarnos de que las marcas de tiempo fueran correctas, no necesitaríamos una cadena de bloques para empezar.
"histórico"? ¿Significa esto que no hay un uso actual para bitsen el encabezado del bloque? Me pregunto por qué está ahí, asumiendo que un nodo completo se sincroniza desde el bloque 0 y puede calcular la dificultad por sí solo para cada bloque...