Bitcoin Forum

Local => Кодеры => Topic started by: pent on March 05, 2012, 05:52:54 PM



Title: Пора разобраться с Merged Mining
Post by: pent on March 05, 2012, 05:52:54 PM
Итак, теоретическая база

https://github.com/vinced/namecoin/blob/mergedmine/doc/README_merged-mining.md
https://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'ах.


Title: Re: Пора разобраться с Merged Mining
Post by: ufasoft on March 07, 2012, 01:00:48 PM
А где хранится весь AUX Tree?

Формат блока при Merged Mining  расширен. То есть некоторые блоки NameCoin содержат в себе еще Header-ы Bitcoin-блоков




Title: Re: Пора разобраться с Merged Mining
Post by: pent on March 07, 2012, 03:03:22 PM
Формат блока при Merged Mining  расширен. То есть некоторые блоки NameCoin содержат в себе еще Header-ы Bitcoin-блоков

Ну так я ж написал
Quote
При этом к AUX блоку цепляется куча левой инфы для верификации:
а) Меркль ветка AUX блока в AUX Tree
б) Индекс а) в AUX Tree (зачем, если ветка есть?)
в) Нулевая транзакция биткоин в найденом блоке, конкретно интересует ее scriptSig с рутом AUX Tree.
г) Меркль ветка предыдущего пункта в дереве Bitcoin блока
д) Хидер блока биткоин

непонятно где здесь это дерево хранится.


Title: Re: Пора разобраться с Merged Mining
Post by: ufasoft on March 07, 2012, 05:40:50 PM
Формат блока при Merged Mining  расширен. То есть некоторые блоки NameCoin содержат в себе еще Header-ы Bitcoin-блоков

Ну так я ж написал
Quote
При этом к AUX блоку цепляется куча левой инфы для верификации:
а) Меркль ветка AUX блока в AUX Tree
б) Индекс а) в AUX Tree (зачем, если ветка есть?)
в) Нулевая транзакция биткоин в найденом блоке, конкретно интересует ее scriptSig с рутом AUX Tree.
г) Меркль ветка предыдущего пункта в дереве Bitcoin блока
д) Хидер блока биткоин

непонятно где здесь это дерево хранится.
Merkle-дерево само не хранится, оно строится из TxHash-ей. Ну в Namecoin-блоке же присутствуют namecoin транзакции, так же как в bitcoin-блоке.  Суть в том, чтобы два параллельных блока разных сетей ссылались друг на друга.