При вычислении хэша вам нужно что-нибудь после количества битов сложности?

Я собираюсь испортить много терминологии здесь. Я пытаюсь понять алгоритм Биткойна и хотел использовать этот JS-майнер — https://github.com/howardchung/jsminer . В частности, я пытаюсь понять, как создавать данные, которые кто-то пытается хэшировать. Они пытаются сделать это в майнере JS следующим образом.

    var header = version + prevhash + merkle_root + ntime + nbits + '00000000' + '000000800000000000000000000000000000000000000000000000000000000000000000000000000000000080020000';
    curr_block.data = header;

Я слежу за большей частью этого, используя биткойн-вики в качестве справочного материала, но я совсем не могу понять, что это за последние две числовые константы — «00000000» и большая, начинающаяся с «0000008». Я видел, как они появлялись в других примерах, но я не могу понять, зачем они нужны или это жестко закодированные значения в майнере JS, которых не должно быть в реальной жизни. Любая помощь приветствуется.

Ответы (1)

Первый 00000000предназначен для одноразового использования. Nonce изменяется, чтобы получить другой заголовок блока без повторного выбора транзакций. Это то, что используется в основном для поиска действительного хэша блока.

Длинная строка байтов, начинающаяся с, 0000008является дополнением SHA-256. На самом деле это не часть заголовка блока, и все, что делает хеширование SHA-256, должно выяснить и добавить это дополнение для вас. Это часть этапа предварительной обработки SHA-256.

Да, я вытащил этот фрагмент из раздела кода, где они делают эту предварительную обработку. Поскольку строка, начинающаяся с «0000008», является дополнением, может ли это быть что угодно? Должна ли быть именно эта последовательность?
Да. Заполнение фиксировано и должно быть одинаковым для всех блоков. Это действительно должно быть вычислено динамически функцией SHA-256, а не чем-то, что вы жестко кодируете.
Чтобы уточнить ваше «Да», вы имеете в виду «Да, это может быть что угодно» или «да, это должна быть эта конкретная последовательность»?
Да, это должна быть именно эта последовательность.