Cuprins
Ce este un copac Merkle?
Cum funcționează un arbore Merkle?
De ce este folosită rădăcina Merkel în Bitcoin?
Minerit
verifica
Rezuma
Ce este un copac Merkle?
La începutul anilor 1980, Ralph Merkle, un cunoscut informatician în domeniul criptografiei cu chei publice, a propus conceptul de arbore Merkle.
Structura arborescentă Merkle poate verifica în mod eficient integritatea setului de date și este mai eficientă în rețelele peer-to-peer care necesită participanților să partajeze și să verifice în mod independent informațiile.
Funcțiile hash sunt în centrul structurii arborelui Merkle. Prin urmare, vă recomandăm să înțelegeți ce este hashing înainte de a continua cu acest articol.
Cum funcționează un arbore Merkle?
Să presupunem că doriți să descărcați un fișier mare. În cazul descărcărilor de software open source, este adesea necesar să verificați dacă hash-ul fișierului descărcat se potrivește cu cel făcut public de dezvoltator. Dacă se potrivesc, cele două documente sunt consecvente.
Dacă hashes-urile nu se potrivesc, ai probleme. Fie ați descărcat un fișier rău intenționat deghizat în software, fie l-ați descărcat incorect, iar rezultatul final este că fișierul este inutilizabil. Dacă descărcarea este incorectă, cu siguranță te vei simți enervat pentru că ai așteptat de mult timp descărcarea fișierului. Acum, dacă o iei de la capăt, trebuie să speri că aceeași problemă nu se va mai repeta.
Te-ai gândit vreodată, există o modalitate mai ușoară de a rezolva această problemă? Aici intervine arborele Merkle. Arborii Merkle pot sparge fișierele în mai multe blocuri de date. De exemplu, un fișier de 50 GB poate fi împărțit în 100 de copii, fiecare având o dimensiune de 0,5 GB. Apoi, le puteți descărca unul câte unul. Așa funcționează torrentele.
Sursa fișierului în acest moment este o valoare hash, numită rădăcină Merkle. Această valoare unică hash reprezintă toate blocurile de date care alcătuiesc fișierul. Mai mult, rădăcinile Merkle facilitează validarea datelor.
Pentru a facilita înțelegerea, dăm un exemplu. Mai jos, un fișier de 8 GB este împărțit în opt părți, iar fiecare fragment este numit de la A la H, respectiv. Fiecare fragment este apoi conectat la o funcție hash, rezultând opt valori hash diferite.

Prin funcția hash se calculează valorile hash ale celor opt fragmente.
Sperăm că exemplul de explicație de mai sus este ușor de înțeles. Avem valorile hash ale tuturor fragmentelor Dacă unul dintre ele este greșit, putem găsi problema comparând-o cu fișierul sursă? Poate, dar tot e extrem de ineficient. Dacă fișierul are zeci de mii de fragmente, trebuie să ștergem toate fragmentele și să comparăm rezultatele în detaliu?
inutil. Trebuie doar să combinăm o pereche de valori hash și să efectuăm o operație hash combinată. Adică hașăm cu hA + hB, hC + hD, hE + hF și hG + hH. Rezultatul va fi patru valori hash. Apoi trecem la următoarea rundă de hashuri îmbinate până când obținem două valori hash. Aceste două valori hash sunt apoi combinate și se obține în cele din urmă valoarea hash principală, care este rădăcina Merkle (numită și valoarea hash rădăcină).

Structura arată ca un copac cu susul în jos. Rândul de jos de frunze se combină între ele pentru a crea noduri și, în final, rădăcini.
Acum avem rădăcina Merkle care reprezintă fișierul descărcat. Comparați hash-ul rădăcină cu valoarea fișierului sursă și, dacă se potrivește, toată lumea este fericită! Odată ce valorile hash sunt diferite, se dovedește că datele au fost modificate. Cu alte cuvinte, unul sau mai multe fragmente au generat o valoare hash diferită. Prin urmare, chiar și modificările mici ale datelor pot schimba complet rădăcina Merkel.
Din fericire, este ușor să verificați segmentele eronate. Să presupunem că eroarea este hE. În primul rând, le cerem altora două hashe-uri (hABCD și hEFGH) pentru a genera rădăcina Merkle. Valoarea noastră hABCD ar trebui să se potrivească cu cea a altora, demonstrând că subarborele nu conține erori. Dacă hEFGH nu se potrivește, putem corecta eroarea de aici. Apoi cereți altora pentru hEF și hGH hashes și comparați-le cu al dvs. Dacă hGH este în regulă, hEF este de vină. În cele din urmă, comparăm valorile hash ale hE și hF Odată ce aflăm că sursa erorii este hE, putem re-descărca blocul de date.
Pentru a rezuma, funcția arborelui Merkle este de a împărți datele în mai multe părți și apoi de a efectua operațiuni hash în mod repetat pentru a forma în final rădăcina Merkle, astfel încât să poată verifica în mod eficient unde apar datele eronate. În secțiunea următoare, vom introduce alte aplicații interesante.
Vrei să-ți începi călătoria criptomonedei? Accesați Binance și cumpărați Bitcoin acum!
De ce este folosită rădăcina Merkel în Bitcoin?
Există multe cazuri de utilizare pentru arborii Merkle, dar acest articol se concentrează pe rolul său important în blockchain. Bitcoin și multe criptomonede sunt inseparabile de arborii Merkle. Arborele Merkle este o parte integrantă a fiecărui bloc, de obicei situat la antetul blocului. Prin valoarea hash a tranzacției (TXID) a fiecărei tranzacții din bloc, putem obține frunzele.
În acest context, rădăcina Merkel servește mai multor scopuri. Să aruncăm o privire la aplicarea Merkle Root în minarea criptomonedelor și verificarea tranzacțiilor.
Minerit
Blocurile Bitcoin constau din două părți. Prima parte este antetul blocului, care are dimensiuni fixe și conține metadate ale blocului. A doua parte este corpul blocului, care este variabil ca dimensiune, dar de obicei mult mai mare decât antetul blocului și conține lista de tranzacții.
Minerii trebuie să trimită în mod repetat datele până când se produce un rezultat care îndeplinește anumite condiții înainte de a putea săpa un bloc valid. Pentru a obține rezultatul corect, trebuie să încerce de trilioane de ori. La fiecare încercare, minerul schimbă numărul aleatoriu din antetul blocului, valoarea Nonce, pentru a genera rezultate diferite. Cu toate acestea, restul blocului rămâne același, iar miile de tranzacții din cadrul acestuia trebuie încă să fie hashing de fiecare dată.
Merkel a simplificat foarte mult procesul. Când începe extragerea, toate cozile de tranzacții sunt împachetate și construite într-un arbore Merkle, iar valoarea hash rădăcină de 32 de biți generată este plasată în antetul blocului. Apoi, nu este nevoie de hash întregul bloc, doar antetul blocului.
Această metodă previne manipularea datelor și, prin urmare, este eficientă, permițând ca toate tranzacțiile dintr-un bloc să fie rezumate eficient într-o formă compactă. Lista de tranzacții a antetelor de bloc valide nu poate fi modificată, altfel rădăcina Merkle va fi modificată. După ce blocul este trimis către alte noduri, hash-ul rădăcină este calculat din lista de tranzacții. Dacă nu se potrivește cu valoarea din antetul blocului, blocul poate fi respins.
verifica
Există o altă proprietate interesantă pe care o putem folosi a rădăcinilor Merkle, care se referă la aplicarea clienților ușori (noduri care nu păstrează o copie completă a blockchain-ului). Dacă rulați un nod pe un dispozitiv cu resurse limitate, nu doriți să descărcați și să folosiți hash toate tranzacțiile dintr-un bloc. În schimb, cereți pur și simplu o dovadă Merkle, care este dovada oferită de un nod complet că o tranzacție a fost inclusă într-un anumit bloc. Această dovadă este mai bine cunoscută sub numele de Verificare simplă a plății sau SPV și a fost detaliată în cartea albă Bitcoin de Satoshi Nakamoto.

Pentru a verifica hD, verificați pur și simplu hash roșu.
Să presupunem că dorim să obținem informații despre tranzacție despre TXID hD. Dacă hC este cunoscut, hCD poate fi calculat. Apoi, prin hAB, hABCD poate fi calculat. În cele din urmă, prin referire la hEFGH, puteți verifica dacă rădăcina Merkle calculată este în concordanță cu hash-ul rădăcinii din antetul blocului. O potrivire reușită demonstrează că tranzacția a fost inclusă în bloc, deoarece generarea aceluiași hash folosind date diferite este aproape imposibilă.
În exemplul de mai sus, am aplicat hashing doar de trei ori. Fără certificarea lui Merkel, ar fi nevoie de șapte. Blocurile de astăzi conțin mii de tranzacții, iar dovezile Merkle ne economisesc mult timp și putere de calcul.
Rezuma
Arborii Merkle s-au dovedit importanți în aplicațiile informatice și, după cum am văzut, sunt, de asemenea, valoroși în blockchain. Arborii Merkle fac verificarea informațiilor în sistemele distribuite mai convenabilă și evită congestionarea datelor redundante în rețea.
Fără arborii Merkle și rădăcinile Merkle, Bitcoin și alte blocuri de criptomonede nu ar fi atât de compacte ca în prezent. Deși clienții ușoare nu au avantaje în ceea ce privește confidențialitatea și securitatea, cu dovezile Merkle, utilizatorii pot verifica dacă tranzacțiile sunt incluse în blocuri cu taxe minime.

