¿Cómo doblo SHA-256 el encabezado del bloque #59,500?

No estoy seguro de cómo combinar toda esta información. https://blockchain.info/block/00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7

Versión 1

Bits de tiempo 470771548 (¿es este el número correcto para los bits de tiempo?)

Raíz Merkle ff682ef66cd1b56213fd4db9462fb138f6d8c16d706d41969a7eacc819528038

Nonce 16641419

Hash del bloque actual 00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7

Hash del bloque anterior 00000000023bbab0e78a22d27fbd2d0cd13f8302fb3f560138e0e81d087ac7a1

Respuestas (2)

toma los primeros 160 símbolos de https://blockchain.info/block/00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7?format=hex

debo explicar mas? :))))

actualizar:

01000000versión

a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b0200000000hash anterior

38805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ffhachís merkle

27b80a4cmarca de tiempo

5c670f1cpedacitos

8bedfd00mientras tanto

¡Gracias por la respuesta! Pido disculpas, todavía estoy un poco confundido sobre de dónde provienen todos esos números en el enlace que adjuntaste. ¿Y por qué los primeros 160? ¿Está relacionado de alguna manera con RIPE-MD 160? ¡Gracias!
este es un bloque en formato hexadecimal. los primeros 160 símbolos son encabezados de bloque (80 bytes)

Como se indicó anteriormente, debe tomar los primeros 80 bytes del bloque serializado. Dado que estos datos están codificados en hexadecimal y cada byte requiere dos dígitos hexadecimales para codificarse, el encabezado de un bloque son 80 * 2 = 160dígitos.
Notará que algunos campos están invertidos porque están representados en formato little-endian . Una vez que doble-sha256 estos datos, encontrará un hash con ceros al final y no al principio, esto también se debe a endianness.

Así es como se ve el bloque mencionado: Tome el primer encabezado serializado
de 160 dígitos y analice: Versión: (Esto es 1 en little-endian) Hash de bloque anterior: (Observe los ceros finales) Merkle Root : Marca de tiempo : Bits : Nonce :
01000000a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b020000000038805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff27b80a4c5c670f1c8bedfd00

01000000
a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b0200000000
38805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff
27b80a4c
5c670f1c
8bedfd00

Un código de Python 3 que lo hash:

import hashlib
data = bytes.fromhex("01000000a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b020000000038805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff27b80a4c5c670f1c8bedfd00")
h1 = hashlib.sha256(data).digest()
h2 = hashlib.sha256(h1).digest()
print(h2.hex())

Resulta en a7f6f121a9903284d02ebfe1e772d131d1e12195493c120531f46a0900000000, esa es precisamente la versión little-endian de00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7