Как строится корень Меркла?
Начните с ID каждой транзакции в блоке. Это двойной хеш SHA-256. Расположите их по порядку, сначала coinbase-транзакцию. Объединяйте соседние хеши попарно и хешируйте каждую пару. Теперь хешей вдвое меньше. Повторяйте, пока не останется один: это и есть корень Меркла.
Если на уровне нечётное число хешей, последний объединяется сам с собой. Измените любую транзакцию, даже на один сатоши, и все хеши на пути от неё к вершине изменятся, включая корень. Попробуйте в демо выше.
Почему дерево, а не один большой хеш?
Доказательства. Чтобы показать, что транзакция входит в блок, нужны только хеши на её ветви, а не весь блок. Для блока примерно с 4 000 транзакциями достаточно всего 12 хешей, это несколько сотен байт. В whitepaper Сатоси описаны лёгкие кошельки, которые проверяют платежи таким способом, сохраняя только заголовки блоков.
Это важно и для майнинга. Когда майнер меняет дополнительный nonce в coinbase-транзакции, корень Меркла меняется, и для заголовка блока появляется новый набор nonce, которые можно проверять.
Источники
- Bitcoin: A Peer-to-Peer Electronic Cash System · Сатоши Накамото, 2008
- Справочник по блокчейну: заголовки, деревья Меркла, целевое значение · документация для разработчиков Bitcoin
- Дерево Меркла · Bitcoin Wiki
Актуальные данные на этой странице поступают из API CloudMineCrypto и общедоступных данных блокчейна, регулярно обновляются и отмечены в соответствующих местах. Только в образовательных целях, не финансовая рекомендация.