Итак, теоретическая база
https://github.com/vinced/namecoin/blob/mergedmine/doc/README_merged-mining.mdhttps://en.bitcoin.it/wiki/Alternative_Chains#Sharing_workНа форуме похоже немногие вообще в курсе как это в действительности работает на низком уровне.
Как я понимаю реализацию.
1. Строится дополнительный Merkle Tree (AUX Tree) где то в воздухе, из root Merkle хешей блоков всех доступных AUX чейнов. В простейшем случае неймкоин, это тупо хеш одного AUX'а неймкоина
2. В CoinBase scriptSig биткоина суется рут-хеш этого дерева (там по протоколу может быть что угодно)
Таким образом, если мы майним блок биткоин с рут хешем дерева AUX'ов, то при успехе, у нас есть доказательство работы - намайненый блок биткоин и в нем есть рут этого древа AUX Tree.
Майнится с наименьшей сложностью из всех. Кому подошла - тому повезло. Подошло к наибольшей сложности - повело всем =)
В блок биткоин суется только рут хеш дерева AUX'ов в позволительное место (scriptSig нулевой транзакции).
При этом к AUX блоку цепляется куча левой инфы для верификации:
а) Меркль ветка AUX блока в AUX Tree
б) Индекс а) в AUX Tree (зачем, если ветка есть?)
в) Нулевая транзакция биткоин в найденом блоке, конкретно интересует ее scriptSig с рутом AUX Tree.
г) Меркль ветка предыдущего пункта в дереве Bitcoin блока
д) Хидер блока биткоин
Верификация AUX блока:
1. Из ветки а) вычисляется рут хеш AUX Tree
2. В сохраненном хидере проверяем что этот хеш есть в в)
3. в) должна быть корректно втиснута в г) с соответствующим рут хешем
4. Хеш д) меньше таргета AUX chain
5. а) стоит четко на индексе б) AUX Tree
Таким образом, даже если этот недо-биткоин блок не вошел в "официальную" цепь биткоин, он все равно служит доказательством Proof-Of-Work AUX блока, так как он к нему приаттачен.
Это позволяет майнить AUX'ы и PARENT'ы на разных сложностях, независимо друг от друга, с одной и той же мощностью.
А где хранится весь AUX Tree?
Какие тут могут быть сюрпризы? Один из участников утверждал что это чревато дабл-спендами в AUX'ах.