Как удвоить SHA-256 в заголовке блока № 59 500?

Я не уверен, как объединить всю эту информацию. https://blockchain.info/block/00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7

Версия 1

Биты времени 470771548 (правильно ли использовать этот номер для битов времени?)

Меркл Рут

Одноразовый номер 16641419

Хэш текущего блока 00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7

Хэш предыдущего блока 00000000023bbab0e78a22d27fbd2d0cd13f8302fb3f560138e0e81d087ac7a1

Ответы (2)

взять первые 160 символов из https://blockchain.info/block/00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7?format=hex

я должен объяснить больше? :))))

обновлять:

01000000версия

a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b0200000000предыдущий хэш

38805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ffмеркл хэш

27b80a4cотметка времени

5c670f1cбиты

8bedfd00одноразовый номер

Спасибо за ваш ответ! Я прошу прощения, я все еще немного сбит с толку тем, откуда все эти цифры берутся в прикрепленной вами ссылке. А почему первые 160? Это как-то связано с RIPE-MD 160? Спасибо!
это блок в шестнадцатеричном формате. первые 160 символов — заголовок блока (80 байт)

Как отмечалось выше, вы должны взять первые 80 байтов из сериализованного блока. Поскольку эти данные закодированы в шестнадцатеричном формате , а каждый байт кодируется двумя шестнадцатеричными цифрами, заголовок блока состоит из 80 * 2 = 160цифр.
Вы заметите, что несколько полей инвертированы, потому что они представлены в формате с прямым порядком байтов . После двойного sha256 этих данных вы найдете хэш с завершающими нулями, а не с ведущими, это также связано с порядком байтов.

Вот как выглядит упомянутый блок:
Возьмите первый 160-значный сериализованный заголовок
01000000a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b020000000038805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff27b80a4c5c670f1c8bedfd00
И проанализируйте:
Версия: 01000000(Это 1 в прямом порядке байтов)
Хэш предыдущего блока: a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b0200000000(Обратите внимание на конечные нули)
Merkle Root : 38805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff
Timestamp : 27b80a4c
Bits : 5c670f1c
Nonce :8bedfd00

Код Python 3, который его хэширует:

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

Это приводит к a7f6f121a9903284d02ebfe1e772d131d1e12195493c120531f46a0900000000, это точно версия с прямым порядком байтов00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7