В блокчейнах, в частности
в блокчейне биткоина, оно используется для распределения транзакций по блокам,
то есть это содержимое блоков,
элементом этого дерева является транзакция.
Транзакции попарно выстраиваются, сортируются.
От каждых двух транзакций считаются хеш-указатели.
Если у нас получилось больше чем две таких структуры,
мы от них еще идем вверх,то есть,
получается такое двоичное дерево,
корнем которого является Меркл рут,
корневой хеш, и таким образом получается такая структура.
Зачем она нужна? Опять же,
если мы подделываем информацию в какой-то одной транзакции в блоке,
что происходит? У нас не сходится один из хешей,
непосредственно который идет после этой транзакции.
Но тогда не сходится и хеш, который чуть выше,
потому что он считается от этого хеша,
не сходится и корневой хеш.
В результате, зная только корневой хеш,
мы можем всегда подтвердить
целостность информации всего блока, каждой отдельной транзакции.
Зачем же нужна такая структура в принципе,
почему нельзя блокчейн было бы делать каждой транзакцией в отдельном блоке?
Просто намного удобнее получается.
Достоинством дерева Меркла является то, что можно проверить,
есть ли в нем какой-то элемент с помощью сложности алгоритма логорифм N, а не M,
то есть там не нужно проверять все транзакции,
нам нужно проверить только эту ветку, которой транзакция принадлежит.
То есть, мы предоставляем саму транзакцию, хеши,
которые попали в эту ветку Меркл рут и, соответственно,
имея все это, мы можем подтвердить то,
что такая транзакции есть.
Второе достоинство - это доказательство того,
что какой-то транзакции нету в блоке,
потому что даже если у нас есть две соседние транзакции,
если они у нас отсортированы, нам достаточно эти две транзакции проверить,
что между ними ничего нет.
На этом все о дереве Меркла.
В следующем видео мы перейдем к цифровым подписям.