Как хэши Blake2b генерируются в реализации Equihash Ховратовича?

Я пытаюсь понять реализацию Equihash от khovratovich (здесь ссылка), потому что я хочу написать простой майнер Zcash (пока меня не интересуют аспекты оптимизации).

Анализируя реализацию, я вижу, что инсайдер FillMemory(), на каждой итерации следующие элементы хешируются вместе (с использованием хэш-функции Blake2b):

  • Семя
  • Nonce
  • индекс

Полученный хэш затем сохраняется в массиве из 32-битных элементов длиной 8, который называется buff[](получив так 256-битный буфер). Я не могу понять причину, по которой рассматриваемые кортежи являются массивами, полученными путем копирования содержимого массиваbuff[] но учитывая только n/(k+1) наименее значимый бит каждой ячейки массива buff[] (соответствует выполнению операции сдвига вправо 32-(n/k+1) бит).

Затем алгоритм выполняет итерацию и проверку коллизий для первых n/(k+1) бит, вторых n/(k+1) бит и так далее для каждого кортежа.

Выполняется ли эта операция с регистром сдвига в реализации Zcash с использованием Equihash? Как получаются кортежи?

0 ответов

Другие вопросы по тегам