Et Merkle Tree tillater datamaskiner i et nettverk for å verifisere individuelle poster uten å måtte gjennomgå og sammenligne versjoner av hele databasen. De gjør det ved å bruke kryptografi som avslører en individuell post, samtidig som de garanterer at alle de andre postene i databasen ikke er endret. Merkle trær ble først patentert i 1979 av Ralph Merkle, og har vært en viktig nøkkel til databasebekreftelse gjennom historien til datamaskiner..

Merkle Trees er spesielt nyttige for distribuerte nettverk der flere datamaskiner beholder kopier av samme database eller hovedbok. Da Satoshi opprettet Bitcoin, var det ikke bra å bruke et Merkle-tre for transaksjonsbekreftelse. På grunn av blockchain-distribusjonen, trenger vi en sikker og rask måte å sikre at alle på nettverket har samme hovedbok.

Hvis du har studert blockchain, har du sannsynligvis hørt om Merkle-trær og Merkle-røtter. Imidlertid vet mange investorer og entusiaster ikke hvordan de fungerer. Tatt i betraktning at de er en viktig del av blockchain-sikkerhet og tillit, er det verdt å forstå det grunnleggende. Denne geniale mekanismen gjør lagring og henting av millioner av blockchain-transaksjoner mulig.

Behovet for effektiv verifisering

La oss begynne med det grunnleggende. Hvorfor trenger vi Merkle-trær og hva som gjør dem nyttige i blockchain-sammenheng?

For å svare på det spørsmålet, bør du vurdere en verden uten Merkle-trær for bekreftelse. Hvis Bitcoin ikke hadde Merkle-trær, måtte hver node i nettverket beholde en komplett kopi av hver eneste transaksjon som noen gang har skjedd på Bitcoin. Så når en bekreftelse av en tidligere transaksjon, må en node nå ut til nettverket og få kopier av hovedboken fra sine jevnaldrende. Linje-for-linje, vil noden trenge å sammenligne hver oppføring med sine egne poster for å sikre at nettverksbøkene samsvarer nøyaktig. Hvis noen endringer glir gjennom, vil det kompromittere sikkerheten til nettverket.

Fordi validering av dataene krever å ha dataene i seg selv, vil hver eneste bekreftelsesforespørsel på Bitcoin kreve enorme pakker med informasjon som sendes over nettverket. Deretter vil den validerende datamaskinen måtte bruke prosessorkraft til å sammenligne hovedbøkene for å sikre at det ikke er noen endringer.

Merkle-trær løser dette problemet ved å hashe postene i en reskontro. Dette kobler effektivt ut beviset på dataene fra selve dataene. Disse hashene er størrelsesordener mindre enn selve hovedboken, så å bevise at en transaksjon er gyldig, innebærer bare å sende små pakker over nettverket. Det lar deg bevise at to versjoner av en reskontro er i samsvar med minimal datakraft og nettverksbåndbredde.

Hvis det høres bra ut, er det fordi det er det. Merkle trær er en veldig kul kryptografisk oppfinnelse. Så, nå er spørsmålet hvordan de fungerer?

En rask forfriskning på Hashing

Før vi kommer inn i detaljene til Merkle-trær, trenger vi kryptografiske fundamenter i hasing. Blokkjeder bruker hashing overalt, fra bevis på arbeidsalgoritmer til filbekreftelse. Hashing er hjørnesteinen i moderne kryptografi.

Uten å komme for langt inn i ugresset, er en hash en type algoritme som tar input, uansett lengde, og gir ut en tilfeldig utgang i standardlengde. For eksempel, i Bitcoin, ender transaksjonen “Alice sender Bob 1 BTC” ut som en streng med tilfeldige tegn:

“3cbcf3e1075b0b3357140de438336733bd6927cd1e78d36cc278324fcce932ad”

Denne strengen av tegn er hasj, og den er deterministisk. Det betyr at “A -> B 1BTC ”hashes alltid til samme utgang.

Imidlertid har hashes en annen flott egenskap. Selv en liten endring i inngangsskredene til en drastisk endring i produksjonen. Hvis vi endrer transaksjonen litt til “A-> B 1.1BTC, ”så blir hasjen helt annerledes. Derfor er det umiddelbart åpenbart om en plate er endret med ett tegn.

Hashes er kjempebra av andre grunner også, men forståelse for at hash er deterministisk og endringer produserer en foss er nok til å få til hvordan et Merkle-tre fungerer.

Hvordan du lager et merkeltre

merkle treet enkelt

Et Merkle-tre. Blockchain Merkle-trær inkluderer tusenvis av hashes. Bare 8 er avbildet her.

Nå er det på tide å bygge vårt Merkle-tre. Vi vil kalle vår Allice / Bob-transaksjon over «Transaksjon A.» Når den transaksjonen legges til i blockchain, blir den en del av en blokk med andre transaksjoner. For enkelhets skyld vil vi bare kalle disse transaksjonene B, C og D.

Hver av disse transaksjonene blir hash, så vi trenger ikke holde fast på detaljene om hvem og hvor mye transaksjonen var. Men vi kan fremdeles bevise at det ikke er blitt tuklet med transaksjonen fordi vi har alle hasjene. Nå har vi H (A), H (B), H (C) og H (D).

Å holde fast i fire hashes er ikke så stor en avtale. Hver Bitcoin-blokk inneholder imidlertid rundt 2000 transaksjoner, så det er for mye lagring og båndbredde å holde på og overføre alle disse hasjene. Et Merkle-tre løser det problemet ved å parre transaksjoner og hashe dem sammen.

Nå er H (A) + H (B) = H (AB) og H (C) + H (D) = H (CD). Ved å kombinere og hashe transaksjonene reduserte vi antall hashes vi må lagre med halvparten. Vi kan gjøre det samme igjen så H (AB) + H (CD) = H (ABCD). Ved å gjøre det har vi nå bare en hash å lagre som er deterministisk basert på hashene til alle de underliggende transaksjonene. Denne enkle hasjen kalles Merkle-roten.

Verifisere transaksjoner ved hjelp av Merkle-roten

Roten hash av Merkle-treet er en viktig del av hver Bitcoin-blokk som blir koblet til neste blokk i kjeden.

Hver Bitcoin-blokk har Merkle-roten i blokkoverskriften. Det er slik vi verifiserer innholdet i blokken og konsistensen til flere hovedbøker. Hvis min kopi av blockchain har samme Merkle-rot for en blokk som din kopi av blockchain, så vet vi at alle transaksjonene i den blokken er de samme, og vi er enige om hovedboken. Selv en liten inkonsekvens vil føre til vidt forskjellige Merkle-røtter på grunn av egenskapene til en hash.

merkle bekreft tx

For å bekrefte transaksjon D, trenger man bare å vite H (AB), H (C), H (D) og H (EFGH).

Hvis det er et avvik i Merkle-roten, kan jeg be om de to underhashingene fra en klarert myndighet. Derfra kan vi begrense hvilken post vi ikke er enige om ved å be om ytterligere underhash. Som et resultat kan vi identifisere avvik uten å måtte gå linje for linje gjennom hele hovedboken.

Konklusjon

Blokkjeder, databaser og nettverk over hele verden bruker Merkle-trær for å raskt og effektivt koordinere poster på flere datamaskiner. Nå som du forstår det grunnleggende, er det lett å se hvorfor denne måten å strukturere data på gjør blockchain sikker og effektiv.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me