Un arbore Merkle este o structură de date care este folosită în aplicațiile informatice. În bitcoin și alte criptomonede, copacii Merkle servesc la codificarea datelor blockchain mai eficient și mai sigur.
Acestea sunt, de asemenea, denumite "copaci binari".
Ruperea Arborelui Merkle
În blockchain bitcoin, un bloc de tranzacții este rulat printr-un algoritm pentru a genera un hash, care este un șir de numere și litere care poate fi utilizat pentru a verifica dacă un set de date este același cu setul inițial de tranzacții, dar să nu obțină setul inițial de tranzacții. Cu toate acestea, software-ul Bitcoin nu rulează întregul bloc de date despre tranzacții - reprezentând în medie 10 minute de tranzacții - prin funcția hash la un moment dat. Mai degrabă se tranzacționează fiecare tranzacție, apoi fiecare pereche de tranzacții este concatenată și s-a adăugat împreună și așa mai departe până când există un haș pentru întregul bloc. (Dacă există un număr impar de tranzacții, o tranzacție este dublată și hash-ul ei este concatenat cu ea însăși.)
Vizualizată, această structură seamănă cu un copac. În diagrama de mai jos, „T” desemnează o tranzacție, „H” un hash. Rețineți că imaginea este foarte simplificată; un bloc mediu conține peste 500 de tranzacții, nu opt.
Hășile de pe rândul de jos sunt denumite „frunze”, hașe intermediare sub formă de „ramuri”, iar hașa din partea de sus ca „rădăcină”. Rădăcina Merkle a unui bloc dat este stocată în antet: de exemplu, rădăcina Merkle a blocului # 482819 este e045b18e7a3d708d686717b4f44db2099aabcad9bebf968de5f7271b458f71c8. Rădăcina este combinată cu alte informații (versiunea software, hash-ul blocului anterior, momentul de referință, ținta de dificultate și nonce) și apoi parcurgeți o funcție hash pentru a produce hash-ul unic al blocului: 000000000000000000bfc767ef8bf28c42cbd4bdbafd9aa1b5c3c33c2b089594 în cazul blocului # 4828. Acest hash nu este de fapt inclus în blocul relevant, ci în următorul; este distinctă de rădăcina Merkle.
Arborele Merkle este util, deoarece permite utilizatorilor să verifice o tranzacție specifică, fără a descărca întregul blockchain (peste 130 de gigabyte la sfârșitul lunii august 2017). De exemplu, spuneți că ați dorit să verificați că tranzacția T D este inclusă în blocul din diagrama de mai sus. Dacă aveți hash-ul rădăcină (H ABCDEFGH), procesul este ca un joc de sudoku: întrebați rețeaua despre H D, iar aceasta returnează H C, H AB și H EFGH. Arborele Merkle vă permite să verificați dacă totul este contabilizat cu trei hashes: dat H AB, H C, H EFGH, iar rădăcina H ABCDEFGH, H D (singurul hash care lipsește) trebuie să fie prezent în date.
Arborele Merkle poartă numele de Ralph Merkle, care le-a propus într-o lucrare din 1987 intitulată „O semnătură digitală bazată pe o funcție de criptare convențională”. Merkle a inventat și hașura criptografică.
