Как сверить 80-байтовый заголовок Bitcoin с отображаемым хешем

Экспортёр может вернуть правильные байты заголовка, а проверка ниже по потоку — завершиться ошибкой из-за порядка байтов хеша в отображаемом идентификаторе блока.

Вычислите хеш сериализованных байтов

Для проверки подойдёт текущая вершина любой сети локальной ноды. Запросите заголовок в hex и передайте Python 3. Перед хешированием декодируйте hex, а при выводе разверните байты итогового хеша.

tip=$(bitcoin-cli getbestblockhash)
header=$(bitcoin-cli getblockheader "$tip" false)
python3 -c 'import hashlib,sys; b=bytes.fromhex(sys.argv[1]); d=hashlib.sha256(hashlib.sha256(b).digest()).digest(); print(len(b),d[::-1].hex())' "$header"
printf '%s\n' "$tip"

Разберите результат сверки

Первая строка должна содержать 80 и хеш, совпадающий со второй строкой. Размер 160 байт подсказывает, что программа могла взять ASCII-символы hex вместо исходных байтов. Совпадение подтверждает обработку сериализации и идентификатора этого заголовка. Для проверки транзакций блока и накопленной работы цепочки нужны другие проверки.

bitcoincore.org getblockheader