Я пытаюсь понять реализацию Ховратовича Equiha sh ( здесь ссылка ), потому что я хочу написать простой майнер Zca sh (пока я не заинтересован в оптимизации аспекты).
Анализируя реализацию, я вижу, что при использовании метода FillMemory()
на каждой итерации хэшируются вместе следующие элементы (с использованием функции Blake2b ha sh):
Полученный ha sh затем сохраняется в массиве 32-битных элементов длины 8, называемых buff[]
( получая так 256-битный буфер). То, что я не могу понять, это причина, по которой рассматриваемые кортежи являются массивами, полученными при копировании содержимого массива buff[]
, но с учетом только младшего значащего бита n / (k + 1) каждой ячейки массива buff[]
(соответствует выполнить операцию сдвига вправо из 32- (n / k + 1) бит).
Алгоритм, после которого выполняется итерация и проверка коллизий для первых n / (k + 1) бит, для второго n / ( k + 1) битов и т. д. каждого кортежа.
В реализации Zi sh для equiha sh выполняется ли операция сдвигового регистра? Как получаются кортежи?