Я не уверен, как объединить всю эту информацию. https://blockchain.info/block/00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7
Версия 1
Биты времени 470771548 (правильно ли использовать этот номер для битов времени?)
Меркл Рут
Одноразовый номер 16641419
Хэш текущего блока 00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7
Хэш предыдущего блока 00000000023bbab0e78a22d27fbd2d0cd13f8302fb3f560138e0e81d087ac7a1
взять первые 160 символов из https://blockchain.info/block/00000000096af43105123c499521e1d131d172e7e1bf2ed0843290a921f1f6a7?format=hex
я должен объяснить больше? :))))
обновлять:
01000000
версия
a1c77a081de8e03801563ffb02833fd10c2dbd7fd2228ae7b0ba3b0200000000
предыдущий хэш
38805219c8ac7e9a96416d706dc1d8f638b12f46b94dfd1362b5d16cf62e68ff
меркл хэш
27b80a4c
отметка времени
5c670f1c
биты
8bedfd00
одноразовый номер
Как отмечалось выше, вы должны взять первые 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
Бен Столман
амаклин