Вот майнер решил блок найти, берет транзакции из мемпула, вычисляет для них дерево, далее с использованием этого дерева перебирает параметр nonce (выполняет POW) как я понял вы утверждаете, что дерево (либо производный от него набор данных) присутствует в каждом акте перебора, или я не прав?
a) Есть в мемпуле транзакции T
1, T
2, ... T
nб) Считаем от них хэш. Повторю, можно считать хэш любым криптографически-строгим способом,
но очень удобно считать как Merkle-hash
в) Получили некие 32 байта, записали их в 80-байтный заголовок блока наряду с другими
данными хранящимися там.
г) там в заголовке остались еще 4 байта свободных, которые могут быть любыми (nonce)
д) перебираем от 0 до FFFFFFFF эти 4 байта (это можно как раз делать параллельно на чипах)
и хэшируем. Если получили хэш заголовка блока с ноликами в начале - вуаля. Если нет -
переходим к пункту (б), поменяв еще что-то в coinbase-транзакции (extra-nonce)
Нельзя ли осуществлять перебор nonce без участия дерева и транзакций, а добавить их после перебора nonce (перелопачивания доказательства работы), а дерево припаять к этому доказательству путем какого-нибудь хитрого шифрования.
А кто тогда обеспечит иммутабельность? Я не понимаю вашу идею.
Тут смысл-то вот в чем. Майнеры в пул объединяются не просто так. А потому что им
выгодно,
чтобы нода занимающаяся транзакциями и блоками была одна, а не держать 10 нод по одной у каждого.
А остальная черновая работа по хэшированию распараллеливается на 10 владельцев асиков,
а внутри каждого асика распараллеливается на 100 чипов.