Mi az a Merkle-fa 🌳
Utoljára frissítve: 2019. november 5.
A Merkle-fa a blockchain szerves részét képezi; lehetővé teszi, hogy bizonyíthatóan változtathatatlan tranzakciós integritással működjön. ⛓
Általa elérhető a nagy adatstruktúrák hatékony és biztonságos ellenőrzése, ami a blokklánc esetén határtalan adatkészletet jelent. 📑
Nevét Ralph Merkle után kapta, aki 1979-ben szabadalmaztatta a koncepciót.
A Merkle-fák alapvetően adatszerkezeti fák, ahol minden nem levélcsomópont a "gyermek" csomópontjainak hash-e. A levélcsomópontok a csomópontok legalacsonyabb szintjei a fában. Először nehéz lehet megérteni, de ha megnézzük az általánosan használt ábrát, sokkal könnyebb lesz feldolgozni a fent olvasott információkat. 🤔
Fontos megjegyezni, hogy a bal oldalon lévő nem leveles csomópontok vagy „ágak” (amelyeket Hash 0-0 és Hash 0-1 képviselnek) a gyermekek, az L1 és L2 hash-jei. Továbbá, hogy a Hash 0 ága összekapcsolt gyermekeinek hash-e, a Hash 0-0 és Hash 0-1 ágai.
A fenti példa a Merkle-fa legelterjedtebb és legegyszerűbb formája, amelyet bináris Merkle-fának neveznek. Mint látható, van egy felső hash, amely az egész fa hash-je, ez "gyökér hash" néven ismert. Lényegében a Merkle fa olyan adatszerkezet, amely „n” számú hash-t tartalmazhat, és egyetlen hash-el ábrázolható.
A fa szerkezete lehetővé teszi nagy mennyiségű adat hatékony leképezését, valamint az adatok egyszerű azonosítását.
Mindaddig, amíg a gyökér hash nyilvános, mindenki, aki keresést szeretne végezni, Merkle-bizonyíték használatával ellenőrizheti az adatbázisban lévő adat helyét és integritását egy adott gyökérrel kapcsolatban. Ha a gyökér-hash elérhető, a hash-fa bármely nem megbízható forrásból is fogadható, valamint a fa egy ága egyszerre letölthető az adatok integritásának azonnali ellenőrzésével, még akkor is, ha az egész fa még nem áll rendelkezésünkre.
A Merkle-fa egyik legfontosabb előnye, hogy képes tetszőlegesen nagy adatállományokat hitelesíteni hasonló mechanizmuson keresztül, amelyet sok kisebb adatmennyiség ellenőrzésére is lehet használni. A fa előnyös a nagy adatcsoportok kisebb részekbe történő elosztására, ahol az integritás ellenőrzéséhez szükséges akadály lényegesen csökken az általános nagyobb adatméret ellenére.
A gyökér hash használható ujjlenyomatként egy teljes adatkészlethez, beleértve egy teljes adatbázist, vagy egy blokklánc teljes állapotát.
Az alábbi képek a Bitcoin fehér könyvéből származnak, és bemutatják, hogyan illeszkedik a Merkle fa az egyes blokkokba.
A Bitcoin által használt kriptográfiai hash függvény az SHA-256 algoritmus. Ez a „Secure Hashing Algorithm” (biztonságos hashelő algoritmus) kifejezés, amelynek kimenete 256 bit hosszú. A Merkle fának a Bitcoinban az alapfunkciója, hogy minden blokkban tárolja és végül "csonkolja" a tranzakciókat.
A blokkláncon lévő blokkok az előző blokk hash-eivel vannak összekötve. A Bitcoinban minden blokk tartalmazza az adott blokk összes tranzakcióját, valamint a blokk fejlécét, amiben az előző blokk hash-ét, a merkle gyökeret, egy időbélyeget és egy számlálót találunk.
A tranzakciókat a bányászok blokkokba sorolják, és a Merkle-fa alapján "hashelik", ami a Merkle-gyökérhez vezet, amelyet ezután a blokkfejlécben tárol a rendszer.
Amint azt a Bitcoin fehér könyvében vázolták, ez lehetővé teszi az egyszerű fizetési hitelesítés (SPV) csomópontok létezését, amelyek „lightweight clients” (könnyű ügyfelek) néven is ismertek. Ezeknek a csomópontoknak nem kell letölteniük a teljes Bitcoin-blokkláncot, csak a leghosszabb lánc blokkfejlécét.
Az SPV-csomópontok elérhetik ezt a saját csomópontjaik lekérdezésével, amíg meg nem győződnek arról, hogy a tárolt blokkfejlécek a leghosszabb lánc részét képezik. Egy SPV-csomópont képes feltérképezni egy tranzakció állapotát a Merkle-bizonyíték segítségével.