nBit a ceros iniciales en Block Hash

Estoy tratando de entender cómo puedo verificar si mi Block Hash satisface o no los nBits.

Por ejemplo, para el bloque 506679 ( https://blockchain.info/block-index/506679 ):

nBits: 404454260

Hash de bloque: 000000000000000015A8D88216918C8DE090268A5E7F53FEEF72CD111F7F27FF

¿Cómo puedo verificar que este Block Hash satisfaga los nBits?

PD: Ya he leído el ¿Qué representa el valor de nBits? pero no pude encontrar la respuesta.

La respuesta dada allí es el mismo ejemplo que he visto una y otra vez. Pero no tiene sentido. Porque según ese cálculo, para el bloque 506679, el Block Hash debería tener 21 ceros iniciales, pero en realidad, el Block Hash tiene 16 ceros iniciales.

Respuestas (1)

El valor de bits que ha escrito está en decimal, en hexadecimal es0x181b7b74

Dividimos esto en el exponente y la mantisa como se muestra en esta respuesta: https://bitcoin.stackexchange.com/a/61951/51948

0x18en decimal es 24, por lo que calculamos que el objetivo es:0x1b7b74000000000000000000000000000000000000000000

Ahora que el objetivo ocupa 24 bytes, del total de 32 bytes para un hash de bloque, los 8 bytes restantes deben ser 0 para que el hash sea menor que el objetivo (además de que el resto del número sea menor que , por supuesto). Por lo general, los 0 iniciales se omiten para facilitar la lectura, pero 8 bytes cero se escriben como 16 caracteres cero en hexadecimal, por lo que el hash debe tener al menos 16 ceros iniciales, lo cual es así.

Por lo tanto, el número a comparar es 0x00000000000000001b7b74000000000000000000000000000000000000000000. En otras palabras, el extremo inferior del número igual a 0x1B7B73FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF son las soluciones para el problema. ¿Estoy en lo correcto?