Как сверить 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 вместо исходных байтов. Совпадение подтверждает обработку сериализации и идентификатора этого заголовка. Для проверки транзакций блока и накопленной работы цепочки нужны другие проверки.