Mis on Merkle puu? Selle plokiahela komponendi juhend algajatele

Merkle Trees on plokiahelate põhikomponent, mis toetab nende funktsionaalsust. Need võimaldavad tõhusalt ja turvaliselt kontrollida suuri andmestruktuure ning plokiahelate puhul potentsiaalselt piirituid andmekogumeid.

Merkle puude rakendamisel plokiahelates on mitu mõju. See võimaldab neil skaleerida, pakkudes samal ajal räsipõhist arhitektuuri, et säilitada andmete terviklikkus ja triviaalne viis andmete terviklikkuse kontrollimiseks.

Krüptograafilised räsifunktsioonid on aluseks olev tehnoloogia, mis võimaldab Merkle'i puudel töötada, seega on kõigepealt oluline mõista, mis on krüptograafilised räsifunktsioonid.

Kiire kohtuotsus: Merkle'i puud on krüptograafilistest räsidest koosnevad andmestruktuurid, mis võimaldavad tõhusat terviklikkuse kontrollimist ja suurte andmehulkade kaardistamist, muutes need süsteemide, nagu plokiahelad ja hajutatud versioonikontroll, lahutamatuks komponendiks.


Quick faktid

VõtmepunktidKirjeldus
Krüptograafilised räsifunktsioonidRäsifunktsioonid, mis võtavad mis tahes suurusega sisendi ja väljastavad fikseeritud pikkusega räsiväärtuse. Kasutatakse Merkle puude puhul.
Merkle puu struktuurPuu andmestruktuur, kus iga mitteleheline sõlm on oma alamsõlmede räsi. Võimaldab suurte andmehulkade tõhusat kaardistamist ja kontrollimist.
JuurräsiRäsi Merkle'i puu tipus, mis tähistab kogu puu räsi. Toimib sõrmejäljena kogu andmekogumi jaoks.
Merkle'i tõendidLubage andmete terviklikkuse ja asukoha kontrollimine puus ilma täielikku andmekogumit vajamata, ainult juurräsi.
Rakendamine BitcoinisMerkle puud salvestavad tehinguid plokkidena. Ploki päisesse salvestatud juurräsi võimaldab SPV-sõlmedel tehinguid kontrollida.
Muud plokiahela rakendusedKasutatakse paljudes plokiahelates, nagu Ethereum, mis kasutab keerukamaid Merkle Patricia puid.
Hajutatud süsteemidLubage versioonihaldussüsteemidel, nagu Git ja IPFS, hõlpsalt kaaslaste vahel jagatud andmeid kontrollida.

Krüptograafilised räsifunktsioonid

Lihtsamalt öeldes on räsifunktsioon mis tahes funktsioon, mida kasutatakse suvalise suurusega (sisendi) andmete kaardistamiseks fikseeritud suurusega väljundiga. Andmesisendile rakendatakse räsimise algoritmi ja saadud fikseeritud pikkusega väljundit nimetatakse räsiks.

Paljud räsimisalgoritmid on laialdaselt avalikult kättesaadavad ja neid saab valida vastavalt teie vajadustele.

Suvalise sisendi tulemuseks olev räsi ei ole mitte ainult fikseeritud pikkusega, vaid on ka sisendile täiesti unikaalne ja funktsioon ise on deterministlik. See tähendab, et olenemata sellest, mitu korda funktsiooni samal sisendil käivitate, on väljund alati sama.

Näiteks kui teil on sisendiks järgmised andmekogumid, on saadud väljundid iga sisendi jaoks ainulaadsed. Pange tähele, kuidas teises ja kolmandas näites, kuigi sisendite erinevus on ainult üks sõna, on saadud väljundid täiesti erinevad.

See on väga oluline, kuna see võimaldab andmetest "sõrmejälgede võtmist".

Krüptograafiline räsifunktsioon, pilt Wikipediast

Kuna väljundi (näites räsisumma) pikkus on alati sama, mis on määratud kasutatava räsialgoritmiga, saab tohutuid andmehulki tuvastada ainult nende tulemuseks oleva räsi kaudu.

Massiivseid andmemahtusid sisaldavate süsteemide puhul võivad fikseeritud pikkusega väljundiga andmete salvestamise ja tuvastamise eelised säästa tohutult salvestusruumi ja aidata suurendada tõhusust.

Plokiahelates kasutatakse plokiahela oleku määramiseks räsimise algoritme.

Plokiahelad on lingitud loendid, mis sisaldavad andmeid ja räsikursorit, mis osutab eelmisele plokkidele, luues ühendatud plokkide ahela, sellest ka nimi "plokiahel".

Iga plokk on omavahel ühendatud räsikursori kaudu, mis on eelmise ploki andmete räsi koos eelmise ploki aadressiga. Selles vormingus andmeplokkide linkimisel tähistab eelmise ploki iga saadud räsi plokiahela kogu olekut, kuna kõik eelmiste plokkide räsiandmed räsitakse ühte räsi.

Seda esindab (algoritmi SHA-256 puhul) väljund (räsi), näiteks järgmine:

b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7

Ülaltoodud räsi on kogu sellele eelneva plokiahela oleku sõrmejälg. Sisendiks on plokiahela olek enne uut plokki (räsiandmetena) ja saadud räsi on väljund.

Kuigi krüptoräsi on võimalik kasutada ilma Merkle puudeta, on see äärmiselt ebaefektiivne ega skaleeritav. Räside kasutamine andmete salvestamiseks plokki jadavormingus on aeganõudev ja tülikas.

Nagu näete, võimaldavad Merkle'i puud nii andmete terviklikkuse triviaalset lahendamist kui ka nende andmete kaardistamist kogu puu kaudu Merkle'i tõendite abil.


Merkle'i puud ja Merkle'i tõendid

Nimetatud Ralph Merkle'i järgi, kes patenteeris kontseptsiooni 1979. aastal, on Merkle'i puud põhimõtteliselt andmestruktuuripuud, kus iga mitteleheline sõlm on oma vastavate alamsõlmede räsi.

Lehesõlmed on puu madalaim sõlmede tasand. Alguses võib see tunduda raskesti mõistetav, kuid kui vaatate allolevat sageli kasutatavat joonist, muutub see palju lihtsamaks.

Räsipuu

Näide binaarsest räsipuust, pilt Wikipediast

Oluline on tähele panna, kuidas vasakul küljel olevad mitte-lehtede sõlmed või „harud” (mida kujutavad räsi 0-0 ja räsi 0-1) on nende vastavate laste L1 ja L2 räsid. Lisaks pange tähele, kuidas haru räsi 0 on selle ühendatud laste räsi, harude räsi 0-0 ja räsi 0-1.

Ülaltoodud näide on Merkle'i puu kõige levinum ja lihtsam vorm, mida tuntakse binaarse Merkle'i puuna. Nagu näete, on ülemine räsi, mis on kogu puu räsi, mida tuntakse juurräsi nime all. Põhimõtteliselt on Merkle puud andmestruktuur, mis võib võtta "n" arvu räsi ja esitada seda ühe räsiga.

Puu struktuur võimaldab suvaliselt suurte andmemahtude tõhusat kaardistamist ja võimaldab hõlpsalt tuvastada, kus nendes andmetes muutused toimuvad. See kontseptsioon võimaldab Merkle'i tõestusi, mille abil saab keegi kontrollida, kas andmete räsimine on järjepidev kogu puu ulatuses ja õiges asendis, ilma et peaks tegelikult kogu räsikomplekti vaatama.

Selle asemel saavad nad kontrollida, kas andmetükk on juurräsiga kooskõlas, kontrollides ainult väikest räsi alamhulka, mitte kogu andmekomplekti.

Kuni juurräsi on avalikult teada ja usaldusväärne, on kõigil, kes soovivad teha andmebaasist võtmeväärtuse otsingut, kasutada Merkle'i tõendit, et kontrollida andmeosa asukohta ja terviklikkust andmebaasis, millel on konkreetne juur.

Kui juurräsi on saadaval, saab räsipuu vastu võtta mis tahes mitteusaldusväärsest allikast ja ühe puu haru saab korraga alla laadida, kontrollides kohe andmete terviklikkust, isegi kui kogu puu pole veel saadaval.

Merkle'i puustruktuuri üks olulisemaid eeliseid on võimalus autentida meelevaldselt suuri andmekogumeid sarnase räsimehhanismi kaudu, mida kasutatakse palju väiksemate andmehulkade kontrollimiseks.

Puu on kasulik suurte andmehulkade jaotamiseks hallatavateks väiksemateks osadeks, kus terviklikkuse kontrollimise takistus on hoolimata üldisest suuremast andmemahust oluliselt vähenenud.

Juurräsi saab kasutada sõrmejäljena kogu andmekogumi jaoks, sealhulgas kogu andmebaasi jaoks, või esindada kogu plokiahela olekut. Järgmistes osades arutame, kuidas Bitcoin ja teised süsteemid Merkle puid rakendavad.


Merkle puud Bitcoinis

Bitcoini kasutatav krüptograafiline räsifunktsioon on SHA-256 algoritm. See tähistab "turvalist räsimisalgoritmi", mille väljund on fikseeritud 256 bitti pikk. Merkle puude põhifunktsioon Bitcoinis on tehingute salvestamine ja lõpuks kärpimine igas plokis.

Nagu varem mainitud, ühendatakse plokiahelas olevad plokid eelmise ploki räside kaudu. Bitcoinis sisaldab iga plokk kõiki selle ploki tehinguid ja ploki päist, mis koosneb:

  • Blokeeri versiooni number
  • Eelmine plokkräsi
  • Ajatempel
  • Kaevandamise raskusaste
  • Pole
  • Merkle Root Hash

Allolev pilt on pärit Bitcoini valgest paberist ja illustreerib, kuidas Merkle puu igasse plokki sobib.

Merkle puu

Kaevurid kaasavad tehingud plokkidesse ja räsitakse Merkle'i puu osana, mis viib Merkle'i juureni, mis on salvestatud ploki päisesse. Sellel disainil on mitmeid selgeid eeliseid.

Eelkõige, nagu on kirjeldatud dokumendis, võimaldab see lihtsate maksete kinnitamise (SPV) sõlmede olemasolu, mida tuntakse ka kui "kergkliente". Need sõlmed ei pea alla laadima kogu Bitcoini plokiahelat, vaid ainult pikima ahela plokipäiseid.

SPV-sõlmed saavad seda saavutada, esitades päringuid oma partnersõlmedele, kuni nad on veendunud, et salvestatud plokipäised, millega nad töötavad, on osa pikimast ahelast. SPV-sõlm suudab seejärel määrata tehingu oleku, kasutades Merkle'i tõendit, et vastendada tehing konkreetse Merkle'i puuga, mille vastava Merkle'i puu juurräsi on ploki päises, mis on osa pikimast ahelast.

Lisaks võimaldab Bitcoini Merkle puude rakendamine ruumi säästmiseks plokiahelat kärpida. See tuleneb sellest, et ploki päises on salvestatud ainult juurräsi, mistõttu saab vanu plokke kärpida, eemaldades Merkle'i puu mittevajalikud oksad, säilitades samal ajal ainult need, mida on vaja Merkle'i tõendi jaoks.


Merkle'i puude juurutamine teistes plokiahelates ja süsteemides

Kuigi Bitcoin oli esimene plokiahel, mis Merkle puud juurutas, rakendavad paljud teised plokiahelad sarnaseid Merkle puu struktuure või veelgi keerukamaid versioone.

Lisaks ei piirdu Merkle'i puu juurutamine ainult plokiahelatega ja seda rakendatakse paljudes muudes süsteemides.

Ethereum, mis on teine ​​kõige äratuntavam krüptovaluuta, on ka suurepärane näide Merkle'i puu erinevast rakendusest. Kuna Ethereum on palju keerukamate rakenduste ehitamise platvorm, kasutab see Merkle'i puu keerukamat versiooni, mida nimetatakse Merkle Patricia puuks, mis on tegelikult 3 eraldi Merkle'i puud, mida kasutatakse kolme tüüpi objektide jaoks. Nende puude kohta saate lisateavet siit.

Lõpuks on Merkle puud hajutatud versioonihaldussüsteemide (nt Git ja IPFS) olulised komponendid. Nende võime hõlpsasti tagada ja kontrollida arvutite vahel P2P-vormingus jagatud andmete terviklikkust muudab need nende süsteemide jaoks hindamatuks.


Järeldus

Merkle'i puud on plokiahelate lahutamatu osa ja võimaldavad neil tõhusalt toimida tõestatava muutumatuse ja tehingute terviklikkusega.

Nende hajutatud võrkudes mängitava rolli ja nende aluseks oleva krüptograafiliste räsifunktsioonide tehnoloogia mõistmine on krüptovaluutade põhikontseptsioonide mõistmiseks ülioluline, kuna need arenevad edasi suuremateks ja keerukamateks süsteemideks.

Allikas: https://blockonomi.com/merkle-tree/