Мъркле дърво е структура от данни, която се използва в приложения за компютърни науки. В биткойн и други криптовалути, дърветата на Merkle служат за кодиране на данните на блокчейн по-ефективно и сигурно.
Те са също така наричани "двоични хешови дървета".
Разрушаване на дърво Меркле
В блокчейн на bitcoin блокът транзакции се изпълнява чрез алгоритъм за генериране на хеш, който е низ от цифри и букви, които могат да се използват за проверка дали даден набор от данни е същият като оригиналния набор от транзакции, но да не получи първоначалния набор от транзакции. Софтуерът на Bitcoin обаче не изпълнява целия блок от данни за транзакции - представляващи средно 10 минути транзакции - чрез функцията хеш наведнъж. По-скоро всяка транзакция е хеширана, след това всяка двойка транзакции се обединява и хешира заедно и така нататък, докато има един хеш за целия блок. (Ако има нечетен брой транзакции, една транзакция се удвоява и хешът й се свързва със себе си.)
Визуализирана, тази структура наподобява дърво. На диаграмата по-долу "T" обозначава транзакция, "H" хеш. Обърнете внимание, че изображението е силно опростено; средният блок съдържа над 500 транзакции, а не осем.
Хешовете в долния ред се наричат "листа", междинните хешове като "клони", а хешът в горната част като "корен". Коренът на Merkle на даден блок се съхранява в заглавката: например, коренът на Merkle на блок # 482819 е e045b18e7a3d708d686717b4f44db2099aabcad9bebf968de5f7271b458f71c8. Коренът се комбинира с друга информация (версията на софтуера, хешът на предишния блок, времевата марка, целта за трудност и нонсе) и след това се изпълнява чрез хеш функция, за да генерира уникалния хеш на блока: 000000000000000000bfc767ef8bf28c42cbd4bdbafd9aa1b5c3c33c2b089594 4828 в случая, Този хеш всъщност не е включен в съответния блок, а в следващия; отличава се от корен на Меркле.
Дървото Merkle е полезно, защото позволява на потребителите да проверяват конкретна транзакция, без да изтеглят цялата блокчейн (над 130 гигабайта в края на август 2017 г.). Например, кажете, че сте искали да проверите дали транзакция T D е включена в блока в диаграмата по-горе. Ако имате коренния хеш (H ABCDEFGH), процесът е като игра на судоку: питате мрежата за H D и той връща H C, H AB и H EFGH. Дървото Merkle ви позволява да проверите дали всичко е отчетено с три хеша: дадени H AB, H C, H EFGH и корен H ABCDEFGH, H D (единственият липсващ хеш) трябва да присъства в данните.
Дърветата на Меркле са кръстени на Ралф Меркле, който ги предложи в хартия от 1987 г., озаглавена „Цифров подпис, основан на функция на конвенционално шифроване“. Меркле също измисли криптографско хеширане.