Kas ir Merkles koks? Rokasgrāmata iesācējiem šim blokķēdes komponentam

Merkle Trees ir galvenā blokķēžu sastāvdaļa, kas ir to funkcionalitātes pamatā. Tie ļauj efektīvi un droši pārbaudīt lielas datu struktūras un blokķēžu gadījumā potenciāli neierobežotas datu kopas.

Merkles koku ieviešanai blokķēdēs ir vairākas sekas. Tas ļauj viņiem mērogot, vienlaikus nodrošinot arī uz jaucējfunkciju balstītu arhitektūru, lai saglabātu datu integritāti un triviālu veidu, kā pārbaudīt datu integritāti.

Kriptogrāfiskās jaucējfunkcijas ir pamatā esošā tehnoloģija, kas ļauj Merkle kokiem darboties, tāpēc vispirms ir svarīgi saprast, kas ir kriptogrāfijas jaucējfunkcijas.

Ātrs spriedums: Merkle koki ir datu struktūras, kas sastāv no kriptogrāfijas jaucējkodiem, kas ļauj efektīvi pārbaudīt lielu datu kopu integritāti un kartēt, padarot tos par tādu sistēmu kā blokķēdes un izplatītas versiju kontroles neatņemamu sastāvdaļu.


Ātrie fakti

Galvenie punktiApraksts
Kriptogrāfiskās jaucējfunkcijasJaucējfunkcijas, kas ņem jebkura izmēra ievadi un izvada fiksēta garuma jaucējvērtību. Izmanto Merkles kokos.
Merkles koka struktūraKoka datu struktūra, kurā katrs mezgls, kas nav lapu, ir tā pakārtoto mezglu jauktais mezgls. Nodrošina lielu datu kopu efektīvu kartēšanu un pārbaudi.
Sakņu hashHašs Merkles koka augšdaļā, kas apzīmē visa koka jaukto vērtību. Darbojas kā pirkstu nospiedums visai datu kopai.
Merkles pierādījumiĻaujiet pārbaudīt datu integritāti un atrašanās vietu kokā, neizmantojot visu datu kopu, tikai saknes hash.
Ieviešana BitcoinMerkles koki glabā darījumus blokos. Bloka galvenē saglabātais saknes hash ļauj SPV mezgliem pārbaudīt darījumus.
Citas blokķēdes ieviešanas iespējasIzmanto daudzās blokķēdēs, piemēram, Ethereum, kas izmanto sarežģītākus Merkles Patrīcijas kokus.
Sadalītās sistēmasĻaujiet versiju kontroles sistēmām, piemēram, Git un IPFS, viegli pārbaudīt datus, kas koplietoti starp vienaudžiem.

Kriptogrāfiskās jaucējfunkcijas

Vienkārši sakot, jaucējfunkcija ir jebkura funkcija, kas tiek izmantota, lai kartētu patvaļīga izmēra (ievades) datus uz fiksēta izmēra izvadi. Datu ievadei tiek izmantots jaukšanas algoritms, un iegūtā fiksētā garuma izvade tiek saukta par jaukšanu.

Daudzi jaukšanas algoritmi ir plaši publiski pieejami, un tos var atlasīt, pamatojoties uz jūsu vajadzībām.

No patvaļīgas ievades iegūtais jaucējvārds ir ne tikai fiksēts garumā, tas ir arī pilnīgi unikāls ievadei, un pati funkcija ir deterministiska. Tas ir, neatkarīgi no tā, cik reižu palaižat funkciju vienā ieejā, izvade vienmēr būs tāda pati.

Piemēram, ja jums ir tālāk norādītās datu kopas kā ievade, katrai ievadei iegūtie izvadi ir unikāli. Ievērojiet, kā otrajā un trešajā piemērā, lai gan ievades atšķirība ir tikai viens vārds, iegūtie rezultāti ir pilnīgi atšķirīgi.

Tas ir ļoti svarīgi, jo tas ļauj “noņemt” datus.

Kriptogrāfiska jaukšanas funkcija, attēls no Wikipedia

Tā kā izvades (piemērā jaucējsummas) garums vienmēr ir tāds pats, kādu nosaka izmantotais jaukšanas algoritms, milzīgus datu apjomus var identificēt, tikai izmantojot to iegūto jaucējfunkciju.

Sistēmās, kurās ir milzīgs datu apjoms, priekšrocības, ko sniedz iespēja uzglabāt un identificēt datus ar fiksēta garuma izvadi, var radīt milzīgus krātuves ietaupījumus un palīdzēt palielināt efektivitāti.

Blokķēdes ietvaros blokķēdes stāvokļa noteikšanai tiek izmantoti jaukšanas algoritmi.

Blockchains ir saistīti saraksti, kas satur datus un jaucējrādītāju, kas norāda uz iepriekšējo bloku, veidojot savienotu bloku ķēdi, līdz ar to nosaukumu “blockchain”.

Katrs bloks ir savienots viens ar otru, izmantojot jaucējrādītāju, kas ir iepriekšējā bloka datu jaukšana kopā ar iepriekšējā bloka adresi. Sasaistot datu blokus šajā formātā, katrs iepriekšējā bloka rezultāts atspoguļo visu blokķēdes stāvokli, jo visi iepriekšējo bloku jauktie dati tiek sajaukti vienā jauktā veidā.

Tas tiek attēlots (algoritma SHA-256 gadījumā) ar izvadi (jaucēju), piemēram:

b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7

Iepriekš redzamais jauktais ir visa blokķēdes stāvokļa pirksta nospiedums pirms tā. Blokķēdes stāvoklis pirms jaunā bloka (kā jauktie dati) ir ievade, un iegūtais jauktais ir izvade.

Lai gan ir iespējams izmantot kriptogrāfijas jaucējus bez Merkle kokiem, tas ir ārkārtīgi neefektīvi un nav mērogojams. Jaukšanas izmantošana datu glabāšanai blokā sērijas formātā ir laikietilpīga un apgrūtinoša.

Kā redzēsit, Merkles koki ļauj triviāli izšķirt datu integritāti, kā arī kartēt šos datus visā kokā, izmantojot Merkle pierādījumus.


Merkles koki un Merkles pierādījumi

Nosaukti Ralfa Merkla vārdā, kurš patentēja šo koncepciju 1979. gadā, Merkles koki būtībā ir datu struktūras koki, kur katrs mezgls, kas nav lapas, ir tā attiecīgo pakārtoto mezglu jauktais mezgls.

Lapu mezgli ir zemākais mezglu līmenis kokā. Sākumā tas var likties grūti uztverams, taču, ja paskatās uz bieži lietoto attēlu zemāk, tas kļūs daudz vieglāk saprotams.

Haša koks

Binārā hash koka piemērs, attēls no Wikipedia

Svarīgi, ievērojiet, kā kreisajā pusē esošie mezgli vai “zari” (apzīmēti ar Hash 0-0 un Hash 0-1) ir to attiecīgo atvasinājumu L1 un L2 jaucēji. Turklāt ievērojiet, kā zars Hash 0 ir tā sasaistīto atvasinājumu jaucējvārds, zari Hash 0-0 un Hash 0-1.

Iepriekš minētais piemērs ir visizplatītākā un vienkāršākā Merkles koka forma, kas pazīstama kā binārais Merkles koks. Kā redzat, ir augšējā hash, kas ir visa koka hash, kas pazīstams kā saknes jaucējvārds. Būtībā Merkles koki ir datu struktūra, kas var aizņemt “n” jaucēju skaitu un attēlot to ar vienu jaucēju.

Koka struktūra ļauj efektīvi kartēt patvaļīgi lielu datu apjomu un ļauj viegli noteikt, kur notiek izmaiņas šajos datos. Šī koncepcija nodrošina Merkles pierādījumus, ar kuriem kāds var pārbaudīt, vai datu jaukšana ir konsekventa līdz kokam un ir pareizajā pozīcijā, faktiski neskatot visu jaucēju kopu.

Tā vietā viņi var pārbaudīt, vai datu gabals atbilst saknes jaucējvārdam, pārbaudot tikai nelielu jaucējpunktu apakškopu, nevis visu datu kopu.

Kamēr saknes jaucējfunkcija ir publiski zināma un uzticama, ikviens, kas vēlas veikt atslēgas vērtības meklēšanu datu bāzē, var izmantot Merkle pierādījumu, lai pārbaudītu datu gabala pozīciju un integritāti datu bāzē, kurai ir noteikta sakne.

Kad saknes hash ir pieejams, jaucējkoku var saņemt no jebkura neuzticama avota un vienlaikus var lejupielādēt vienu koka atzaru, nekavējoties pārbaudot datu integritāti, pat ja viss koks vēl nav pieejams.

Viena no svarīgākajām Merkle koka struktūras priekšrocībām ir iespēja autentificēt patvaļīgi lielas datu kopas, izmantojot līdzīgu jaukšanas mehānismu, ko izmanto, lai pārbaudītu daudz mazāku datu apjomu.

Koks ir izdevīgs lielu datu kopu sadalei pārvaldāmās mazākās daļās, kur integritātes pārbaudes barjera ir ievērojami samazināta, neskatoties uz kopējo lielāku datu apjomu.

Saknes jaucējkodolu var izmantot kā pirkstu nospiedumu visai datu kopai, tostarp visai datu bāzei, vai attēlot visu blokķēdes stāvokli. Nākamajās sadaļās mēs apspriedīsim, kā Bitcoin un citas sistēmas ievieš Merkle kokus.


Merkles koki Bitcoin

Bitcoin izmantotā kriptogrāfiskā jaucējfunkcija ir SHA-256 algoritms. Tas apzīmē “Droša jaukšanas algoritmu”, kura izvade ir fiksēta 256 bitu garumā. Merkles koku pamatfunkcija Bitcoin ir darījumu glabāšana un galu galā apcirpšana katrā blokā.

Kā minēts iepriekš, bloki blokķēdē ir savienoti, izmantojot iepriekšējā bloka jaucējus. Bitcoin katrā blokā ir visi darījumi šajā blokā, kā arī bloka galvene, kas sastāv no:

  • Bloķēt versijas numuru
  • Iepriekšējais Block Hash
  • Timestamp
  • Kalnrūpniecības grūtības mērķis
  • Nonce
  • Merkle Root Hash

Zemāk redzamais attēls ir no Bitcoin baltās papīra un parāda, kā Merkles koks iekļaujas katrā blokā.

Merkles koks

Darījumus iekļāvuši kalnrači blokos, un tie tiek sajaukti kā Merkle koka daļa, kas noved pie Merkles saknes, kas tiek glabāta bloka galvenē. Šim dizainam ir vairākas atšķirīgas priekšrocības.

Jo īpaši, kā norādīts dokumentā, tas ļauj pastāvēt vienkāršā maksājuma verifikācijas (SPV) mezgli, kas pazīstami arī kā “vieglie klienti”. Šiem mezgliem nav jālejupielādē visa Bitcoin blokķēde, tikai garākās ķēdes bloku galvenes.

SPV mezgli to var panākt, vaicājot to līdzvērtīgos mezglus, līdz tie ir pārliecināti, ka saglabātās bloku galvenes, ar kurām tie darbojas, ir daļa no garākās ķēdes. Pēc tam SPV mezgls var noteikt darījuma statusu, izmantojot Merkle pierādījumu, lai kartētu darījumu uz konkrētu Merkle koku ar attiecīgā Merkle koka saknes jaucējkodu bloka galvenē, kas ir daļa no garākās ķēdes.

Turklāt Bitcoin ieviestā Merkle koki ļauj atzarot blokķēdi, lai ietaupītu vietu. Tas ir rezultāts tam, ka bloka galvenē tiek saglabāts tikai saknes jaucējvārds, tāpēc vecos blokus var apgriezt, noņemot nevajadzīgos Merkles koka zarus, vienlaikus saglabājot tikai tos, kas nepieciešami Merkles pierādījumam.


Merkles koku ieviešana citās blokķēdēs un sistēmās

Lai gan Bitcoin bija pirmā blokķēde, kurā tika ieviesti Merkle koki, daudzas citas blokķēdes ievieš līdzīgas Merkle koka struktūras vai pat sarežģītākas versijas.

Turklāt Merkle koka ieviešana neaprobežojas tikai ar blokķēdēm un tiek piemērota daudzām citām sistēmām.

Ethereum, kas ir otra atpazīstamākā kriptovalūta, ir arī lielisks piemērs atšķirīgai Merkle koka ieviešanai. Tā kā Ethereum ir pilnībā izstrādāta kā platforma daudz sarežģītāku lietojumprogrammu veidošanai, tajā tiek izmantota sarežģītāka Merkles koka versija, ko sauc par Merkle Patrīcijas koku, kas patiesībā ir 3 atsevišķi Merkle koki, ko izmanto trīs veidu objektiem. Vairāk par šiem kokiem varat uzzināt šeit.

Visbeidzot, Merkle koki ir svarīga sastāvdaļa izplatītajās versiju kontroles sistēmās, piemēram, Git un IPFS. To spēja viegli nodrošināt un pārbaudīt datu integritāti, kas tiek kopīgoti starp datoriem P2P formātā, padara tos par nenovērtējamiem šīm sistēmām.


Secinājumi

Merkles koki ir blokķēžu neatņemama sastāvdaļa un efektīvi ļauj tiem darboties ar pierādāmu nemainīgumu un darījumu integritāti.

Lai izprastu kriptovalūtu pamatjēdzienus, jo tās turpina attīstīties lielākās un sarežģītākās sistēmās, ir ļoti svarīgi izprast to lomu izplatītajos tīklos un to pamatā esošo kriptogrāfijas jaucējfunkciju tehnoloģiju.

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