Mikä on Merkle-puu? Aloittelijan opas tähän Blockchain-komponenttiin

Merkle-puut ovat lohkoketjujen peruskomponentti, joka tukee niiden toimivuutta. Ne mahdollistavat suurten tietorakenteiden tehokkaan ja turvallisen todentamisen ja lohkoketjujen tapauksessa mahdollisesti rajattomien tietojoukkojen todentamisen.

Merkle-puiden käyttöönotolla lohkoketjuissa on useita vaikutuksia. Sen avulla he voivat skaalata ja tarjota heille myös hash-pohjaisen arkkitehtuurin tietojen eheyden ylläpitämiseksi ja triviaalin tavan varmistaa tietojen eheys.

Kryptografiset hajautusfunktiot ovat taustalla oleva tekniikka, joka mahdollistaa Merkle-puiden toiminnan, joten ensin on tärkeää ymmärtää, mitä kryptografiset hajautusfunktiot ovat.

Nopea päätös: Merkle-puut ovat tietorakenteita, jotka koostuvat kryptografisista tiivisteistä, jotka mahdollistavat suurten tietojoukkojen tehokkaan eheyden varmentamisen ja kartoituksen, joten ne ovat olennainen osa järjestelmiä, kuten lohkoketjuja ja hajautettua versionhallintaa.


Lyhyesti

AvainkohdatKuvaus
Kryptografiset hash-funktiotHash-funktiot, jotka ottavat minkä tahansa kokoisen syötteen ja tulostavat kiinteän pituisen hajautusarvon. Käytetään Merkle-puissa.
Merkle-puun rakennePuun tietorakenne, jossa jokainen ei-lehtisolmu on hajautus alisolmuistaan. Mahdollistaa suurten tietojoukkojen tehokkaan kartoituksen ja todentamisen.
Root hashMerkle-puun yläosassa oleva tiiviste, joka edustaa koko puun tiivistettä. Toimii sormenjäljenä koko tietojoukolle.
Merklen todisteetSalli tietojen eheyden ja sijainnin tarkistaminen puussa tarvitsematta koko tietojoukkoa, vain juurihajautus.
Toteutus BitcoinissaMerkle-puut tallentavat tapahtumat lohkoissa. Lohkon otsikkoon tallennettu juurihajautus antaa SPV-solmuille mahdollisuuden tarkistaa tapahtumat.
Muut blockchain-toteutuksetKäytetään monissa lohkoketjuissa, kuten Ethereum, joka käyttää monimutkaisempia Merkle Patricia Trees -puita.
Hajautetut järjestelmätAnna versionhallintajärjestelmien, kuten Gitin ja IPFS:n, tarkistaa helposti vertaisten välillä jaetut tiedot.

Kryptografiset hash-toiminnot

Yksinkertaisesti sanottuna hash-funktio on mikä tahansa toiminto, jota käytetään mielivaltaisen kokoisen datan (syöte) yhdistämiseen kiinteän kokoiseen ulostuloon. Hajautusalgoritmia sovelletaan datasyötteeseen ja tuloksena olevaa kiinteäpituista tulostetta kutsutaan hashiksi.

Monet hajautusalgoritmit ovat yleisesti saatavilla, ja ne voidaan valita tarpeidesi mukaan.

Mielivaltaisesta syötteestä saatu tiiviste ei ole vain kiinteän pituinen, se on myös täysin yksilöllinen syötteelle ja itse funktio on deterministinen. Toisin sanoen riippumatta siitä, kuinka monta kertaa suoritat toiminnon samalla tulolla, tulos on aina sama.

Jos sinulla on esimerkiksi seuraavat tietojoukot alla syötteinä, tuloksena saadut lähdöt ovat yksilöllisiä jokaiselle syötteelle. Huomaa, kuinka toisessa ja kolmannessa esimerkissä, vaikka syötteiden ero on vain yksi sana, tuloksena olevat lähdöt ovat täysin erilaisia.

Tämä on erittäin tärkeää, koska se mahdollistaa tietojen "sormenjälkien oton".

Salaushajautustoiminto, kuva Wikipediasta

Koska tulosteen (esimerkissä tiivistesumma) pituus on aina sama kuin käytetyn hajautusalgoritmin määrittelemä, valtavat tietomäärät voidaan tunnistaa pelkästään niiden tuloksena olevan hajautusarvon perusteella.

Suuria tietomääriä sisältävissä järjestelmissä kiinteäpituisten tietojen tallentamisen ja tunnistamisen edut voivat säästää valtavia tallennustilaa ja lisätä tehokkuutta.

Lohkoketjuissa hajautusalgoritmeja käytetään lohkoketjun tilan määrittämiseen.

Lohkoketjut ovat linkitettyjä luetteloita, jotka sisältävät dataa ja hash-osoittimen, joka osoittaa edelliseen lohkoon, luoden yhdistettyjen lohkojen ketjun, mistä johtuu nimi "blockchain".

Jokainen lohko on yhdistetty toisiinsa hash-osoittimen kautta, joka on edellisen lohkon sisältämien tietojen hash yhdessä edellisen lohkon osoitteen kanssa. Linkittämällä datalohkoja tässä muodossa, jokainen edellisen lohkon tuloksena oleva tiiviste edustaa lohkoketjun koko tilaa, koska kaikki edellisten lohkojen hajautustiedot tiivistetään yhdeksi tiivisteeksi.

Tätä edustaa (SHA-256-algoritmin tapauksessa) tulos (hash), kuten tämä:

b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7

Yllä oleva hash on sitä edeltävän lohkoketjun koko tilan sormenjälki. Lohkoketjun tila ennen uutta lohkoa (hajautettuna datana) on syöte, ja tuloksena oleva hash on tulos.

Vaikka on mahdollista käyttää kryptografisia tiivisteitä ilman Merkle-puita, se on erittäin tehotonta eikä skaalautuva. Hajautusarvojen käyttäminen tietojen tallentamiseen lohkoon sarjamuodossa on aikaa vievää ja hankalaa.

Kuten näette, Merkle-puut mahdollistavat tietojen eheyden triviaalisen ratkaisemisen sekä näiden tietojen kartoittamisen koko puun läpi Merkle-todistuksia käyttämällä.


Merkle-puut ja Merkle-todisteet

Konseptin vuonna 1979 patentoineen Ralph Merklen mukaan nimetyt Merkle-puut ovat pohjimmiltaan tietorakennepuita, joissa jokainen ei-lehtisolmu on hajautus vastaavista lapsisolmuistaan.

Lehden solmut ovat puun alin solmutaso. Aluksi se saattaa kuulostaa vaikealta ymmärtää, mutta jos katsot alla olevaa yleisesti käytettyä kuvaa, se on paljon helpompi ymmärtää.

Hash Tree

Esimerkki binaarisesta hash-puusta, kuva Wikipediasta

Tärkeää on, että huomaa, kuinka vasemmalla puolella olevat ei-lehtiset solmut tai "haarat" (jota edustavat Hash 0-0 ja Hash 0-1) ovat vastaavien lastensa L1 ja L2 tiivisteitä. Huomaa lisäksi, kuinka haara Hash 0 on sen ketjutettujen lapsien tiiviste, haarat Hash 0-0 ja Hash 0-1.

Yllä oleva esimerkki on yleisin ja yksinkertaisin muoto Merkle-puusta, joka tunnetaan nimellä Binary Merkle Tree. Kuten näette, on ylähajautus, joka on koko puun tiiviste, joka tunnetaan nimellä juurihaja. Merkle-puut ovat pohjimmiltaan tietorakenne, joka voi ottaa "n" määrän tiivistettä ja esittää sen yhdellä tiivisteellä.

Puun rakenne mahdollistaa mielivaltaisen suurten tietomäärien tehokkaan kartoituksen ja mahdollistaa helpon tunnistamisen, missä datassa tapahtuu muutoksia. Tämä konsepti mahdollistaa Merkle-todistukset, joiden avulla joku voi varmistaa, että tietojen hajautus on johdonmukainen koko puuhun asti ja oikeassa paikassa ilman, että joutuisi tarkastelemaan koko tiivistesarjaa.

Sen sijaan he voivat varmistaa, että tietokappale on yhdenmukainen juurihajautusarvon kanssa, tarkistamalla vain pienen tiivisteiden osajoukon koko tietojoukon sijaan.

Niin kauan kuin juurihajautus on julkisesti tiedossa ja siihen luotetaan, jokainen, joka haluaa tehdä avainarvohaun tietokannasta, voi käyttää Merkle-todistusta varmistaakseen tietokannassa olevan datan sijainnin ja eheyden. tietty juuri.

Kun juurihaja on saatavilla, tiivistepuu voidaan vastaanottaa mistä tahansa ei-luotetusta lähteestä ja yksi puun haara voidaan ladata kerrallaan, jolloin tietojen eheys varmistetaan välittömästi, vaikka koko puu ei olisi vielä saatavilla.

Yksi Merkle-puurakenteen tärkeimmistä eduista on kyky todentaa mielivaltaisesti suuria tietojoukkoja samanlaisen hajautusmekanismin avulla, jota käytetään paljon pienempien tietomäärien tarkistamiseen.

Puu on edullinen suurten tietojoukkojen jakamiseksi hallittaviin pienempiin osiin, joissa eheyden varmentamisen este on huomattavasti pienempi, vaikka datan kokonaiskoko on suurempi.

Juuritiivistettä voidaan käyttää sormenjäljenä koko tietojoukolle, mukaan lukien koko tietokanta, tai edustaa koko lohkoketjun tilaa. Seuraavissa osioissa keskustelemme siitä, kuinka Bitcoin ja muut järjestelmät toteuttavat Merkle-puita.


Merkle-puut Bitcoinissa

Bitcoinin käyttämä kryptografinen hash-funktio on SHA-256-algoritmi. Tämä tarkoittaa "Secure Hashing Algorithm", jonka ulostulo on kiinteä 256 bittiä pitkä. Merkle-puiden perustehtävä Bitcoinissa on tallentaa ja lopulta karsia transaktioita jokaisessa lohkossa.

Kuten aiemmin mainittiin, lohkoketjun lohkot yhdistetään edellisen lohkon hajautusten kautta. Bitcoinissa jokainen lohko sisältää kaikki tapahtumat kyseisessä lohkossa sekä lohkootsikon, joka koostuu:

  • Estä versionumero
  • Edellinen Block Hash
  • Aikaleima
  • Kaivosvaikeustavoite
  • seksuaalirikollinen
  • Merkle Root Hash

Alla oleva kuva on peräisin Bitcoinin valkoisesta paperista ja havainnollistaa, kuinka Merkle-puu sopii kuhunkin lohkoon.

Merkle-puu

Kaivostyöläiset sisällyttävät tapahtumat lohkoihin, ja ne hajautetaan osana Merkle-puuta, mikä johtaa Merkle-juureen, joka on tallennettu lohkon otsikkoon. Tällä suunnittelulla on useita erillisiä etuja.

Erityisesti, kuten selvityksessä esitetään, tämä mahdollistaa SPV (Simple Payment Verification) -solmujen, jotka tunnetaan myös nimellä "kevyt asiakkaat". Näiden solmujen ei tarvitse ladata koko Bitcoin-lohkoketjua, vain pisimmän ketjun lohkootsikot.

SPV-solmut voivat saavuttaa tämän tekemällä kyselyitä vertaissolmuistaan, kunnes he ovat vakuuttuneita siitä, että tallennetut lohkootsikot, joita ne käyttävät, ovat osa pisintä ketjua. SPV-solmu pystyy sitten määrittämään tapahtuman tilan Merkle-todisteen avulla yhdistämään tapahtuman tiettyyn Merkle-puuhun, jossa on vastaava Merkle-puun juurihajautus lohkootsikossa, joka on osa pisintä ketjua.

Lisäksi Bitcoinin Merkle-puiden toteutus mahdollistaa lohkoketjun karsimisen tilan säästämiseksi. Tämä johtuu siitä, että lohkon otsikkoon on tallennettu vain juurihake, joten vanhoja lohkoja voidaan karsia poistamalla Merkle-puun tarpeettomat oksat säilyttäen vain Merkle-todistukseen tarvittavat oksat.


Merkle-puiden käyttöönotto muissa lohkoketjuissa ja järjestelmissä

Vaikka Bitcoin oli ensimmäinen lohkoketju, joka otti käyttöön Merkle-puut, monet muut lohkoketjut toteuttavat samanlaisia ​​Merkle-puurakenteita tai jopa monimutkaisempia versioita.

Lisäksi Merkle-puun toteutus ei rajoitu vain lohkoketjuihin, vaan sitä sovelletaan moniin muihin järjestelmiin.

Ethereum, joka on toinen tunnistetuin kryptovaluutta, on myös loistava esimerkki erilaisesta Merkle-puun toteutuksesta. Koska Ethereum on täydellinen alustana paljon monimutkaisempien sovellusten rakentamiseen, se käyttää Merkle-puun monimutkaisempaa versiota, nimeltään Merkle Patricia Tree, joka on itse asiassa kolme erillistä Merkle-puuta, joita käytetään kolmenlaisia ​​esineitä varten. Voit oppia lisää näistä puista täältä.

Lopuksi Merkle-puut ovat tärkeä osa hajautettua versionhallintajärjestelmiä, kuten Git ja IPFS. Niiden kyky helposti varmistaa ja tarkistaa tietokoneiden välillä P2P-muodossa jaettujen tietojen eheys tekee niistä korvaamattomia näille järjestelmille.


Yhteenveto

Merkle-puut ovat olennainen osa lohkoketjuja ja mahdollistavat niiden tehokkaan toiminnan todistettavasti muuttumattomalla ja tapahtuman eheydellä.

Niiden roolin ymmärtäminen hajautetuissa verkoissa ja niiden taustalla olevan kryptografisten hajautustoimintojen teknologian ymmärtäminen on ratkaisevan tärkeää kryptovaluuttojen peruskäsitteiden ymmärtämiseksi, kun ne kehittyvät yhä suuremmiksi ja monimutkaisemmiksi järjestelmiksi.

Lähde: https://blockonomi.com/merkle-tree/