En guide till Merkle Trees

Har du hört talas om Merkle-träd när du diskuterar blockchain-teknik? Det beror på att Merkle-trädet är kärnan i själva tekniken. 

Så, vad är det exakt??

I den här artikeln kommer vi att gå igenom Merkle-trädet djupare och förstå dess roll för att göra blockchain-tekniken till en framgång.

Låt oss börja.

 

Vad är ett Merkle Tree?

Ett Merkle-träd är en datastruktur som används för säker verifiering av data i en stor innehållspool. Det är också effektivt och konsekvent när det gäller att verifiera data.

Ethereum och Bitcoin använder båda Merkle Trees.

Problemet: Kärnan i det centraliserade nätverket kan komma åt data från en enda kopia. Det betyder att de inte behöver göra mycket för att lagra eller komma åt data. Men när det gäller det decentraliserade blockchain-nätverket går saker och ting haywire när varje data kopieras mellan noderna. Så det är en utmaning att effektivt få tillgång till data. Utmaningen är också att göra en kopia av data och dela den mellan noder. Dessutom måste den delade data verifieras för var och en av de mottagande noder.

Lösningen: Merkle Trees gör det möjligt för decentraliserade blockkedjor att dela data, verifiera dem och göra dem pålitliga. Den organiserar data på ett sådant sätt att det inte behövs mycket bearbetningskraft för att dela och verifiera data. Det underlättar också säker transaktion tack vare användning av hashfunktioner och kryptografi.

Satoshi Nakamoto var den första personen som implementerade Merkle-träd i blockchain-teknik via Bitcoin. Hans användning öppnade en ny gren av datavetenskap där det inte finns något behov av en central myndighet. Han använde också Merkle-träd i överdriven grad och använde Fast Merkle-träd.

Konceptet introducerades dock först av Ralph Merkle, som patenterade det 1979. Det namngavs efter honom.

Läs också, Hyperledger Cactus: A New Hyperledger Framework


Kryptografiska Hash-funktioner

Innan vi diskuterar Merkle-träd måste vi få en bättre förståelse för kryptografisk hashfunktion.

En hash-funktion är ansvarig för att mappa alla former av godtyckliga data av vilken längd som helst till en fast storlek. Det är en kryptografisk funktion och används därför i stor utsträckning i kryptografi.

Hashfunktionerna är effektiva och är kända för sin enda egenskap, dvs. funktionen kan inte omvändas. Det är en enkelriktad funktion som är utformad för att endast fungera på detta sätt. 

Hashing har flera användningsområden inklusive

  • Lösenordsskydd
  • Kontroll och verifiering av filintegritet
  • Kryptovaluta

Det finns flera hashfamiljer där ute, inklusive Message Direct (MD), Secure Hash Function (SHF) och RIPE Message Direct (RIPEMD).

Om du använder en SHA256 hashalgoritm och skickar 101Blockchains som inmatning får du följande utdata

fbffd63a60374a31aa9811cbc80b577e23925a5874e86a17f712bab874f33ac9

Sammanfattningsvis innehåller de viktigaste egenskaperna för hashfunktioner:

  • Deterministisk
  • Pre-Image Resistant
  • Beräkningseffektivt
  • Kan inte göras omvänd
  • Kollisionsresistent

Om du vill lära dig mer om Cryptographic Hash-funktionerna, kolla in de detaljerade artiklarna här: 

Hur fungerar Merkle Trees?

Nu när vi har en något god förståelse för Hash-funktioner är det nu dags att lära sig mer om Merkle Trees.

Så tekniskt sett är Merkle-träd datastrukturträd där den icke-löviga noden definieras som ett hashvärde för sina respektive barnnoder.

Detta innebär också att Merkle-trädet är inverterat där bladnoderna är den lägsta noden. 

För att få en bättre förståelse för vad jag försöker förmedla, låt oss ta en titt på Merkle-trädsexemplet:

Källa: Wikipedia

Kärnan i Merkle-träd behöver vi lära oss tre viktiga termer. De är som nedan:

  • Merkle Root
  • Bladnoder
  • Icke-bladnoder

Om du tittar på Merkle-trädet som helhet är det ett upp och ned träd. Trädet kan sammanfatta en hel uppsättning transaktioner i sig. Detta innebär att användaren kan verifiera om en transaktion är en del av blocket eller inte.

För att få Merkle-träd att fungera används hashing. Det gör bara hashpar av noder upprepade gånger tills bara ett hashvärde är kvar. Det vänstra hashvärdet kallas Merkle Root eller Root Hash. Trädet skapas från botten upp med hjälp av enskilda transaktionshash. De enskilda transaktionshasharna är också kända som transaktions-ID. 

Bladnoderna är de noder som innehåller transaktionsdata-haschar. När det gäller icke-bladnoder lagrar de hash för de två föregående hasharna.

En annan viktig egenskap hos Merkle-träd är att de är binära. Det betyder att det kräver att bladnoder är jämna för att det fungerar. Om det finns ett udda antal bladnoder, kommer det helt enkelt att duplicera den sista hashen och göra den jämn.

 

Ett exempel

Låt oss försöka förstå det genom att ta ett exempel.

Merkle Tree Exempel

Här ser vi att fyra transaktioner har ägt rum i blocket. Dessa transaktioner heter X, Y, Z och W. Transaktionerna hashas sedan och lagras sedan i bladnoder som vi kallar Hash X, Hash Y, Hash Z och Hash W.

När du väl gjort det, hasas bladnoderna för Hash X, Y, Z och W igen och skapas till en kombinerad hash av XY och ZW. Slutligen används dessa två hash för att skapa Merkle Root eller Root Hash.

Hela hashprocessen kan göras på en mycket stor datamängd som gör Merkle Trees datastruktur användbar vid decentraliserade nätverk.

Som vi diskuterade tidigare beror användningen av hashingalgoritmer på implementeringen. En av de vanligaste hashfunktionerna som används inkluderar dock SHA-2 kryptografisk hashfunktion. 

Så en transaktion kan verifieras om de tidigare transaktionerna är verifierbara, tack vare hash-värdena.

 

Vad sägs om dataintegritet?

Merkle-trädet är perfekt för dataintegritet. Det finns inte heller något behov av att gå igenom hela transaktionen för att se dess verifierbarhet. Transaktionerna kan verifieras med hjälp av informationen lagrad i blockrubriken. Merkle-rotvärdet ändras också beroende på tidigare transaktioner.

Detta innebär också att rotvärdena ändras ofta och kan användas för att verifiera transaktioner nästan direkt. 

Alla dessa kan låta lite som hash-listan, men detta är inte sant. För en hash-lista måste du ladda ner hela listan för att verifiera transaktioner eller data.

När det gäller Merkle-trädet kan du ladda ner filialen och sedan använda den för att verifiera transaktionerna.

Det finns inget behov av att ladda ner hela trädet för att verifiera transaktioner. Detta innebär också att hela trädet kan delas in i små datablock som kan användas för att verifiera transaktioner över hela nätverket. Konceptet är känt som Merkle bevis.

Du kan också kolla in Merkle Tree Python – en implementering av Merkle Tree i Python artikel.

 

Hur Merkle Trees fungerar i Bitcoin

Bitcoin var den första kryptovaluta som använde Merkle-träd effektivt. För att säkerställa att hashvärdena är skyddade och inte kan reverseras enkelt använder den den berömda Secure Hashing Algorithm SHA-256. Detta innebär också att hash-värdena är 256 bitar långa. I grunden används Merkle-träd för att lagra data och också beskära transaktioner.

Läs också, hur man kommer igång med Blockchain

I bitcoin är varje block anslutet till tidigare block med hjälp av hash-värden. Så här skapas hela blockchain. I ett block finns blockrubriker som innehåller viktig information som:

  • Merkle Root Hash
  • Blockera versionsnummer
  • Tidsstämpel
  • Nonce
  • Gruvsvårighetsmål
  • Föregående Block Hash

För att få en bättre förståelse, låt oss ta en titt på diagrammet nedan. Det är hämtat från Vitbok i Bitcoin sig.

Bildtext: Merkelträd i Bitcoin

Som du kan se kräver det gruvarbetare att inkludera transaktionerna i blocket. När det väl är gjort, hasas det och blir en del av Merkle-trädet.

Användningen av Merkle Trees på detta sätt kan leda till flera fördelar. Detta inkluderar en anmärkningsvärd fördel, dvs. enkel betalningsverifiering (SPV). Dessa SVP: er är noder som också kan betecknas som lätta kunder. Så vad gör de? De laddar bara ner de längsta kedjeblockhuvuden och behöver därför inte ladda ner hela blockkedjan. För att göra alla dessa måste de verifiera om den har de lagrade blockrubrikerna för den längsta kedjan. Så här genomförs Merkle-trädet i bitcoin.

I slutändan kan ett SPV sedan använda Merkle Proof of Map och verifiera en transaktion med Merkle-trädets rothash. 

Hur Merkle Trees används i Ethereum

Ethereum blockchain använder också Merkle-träd. Men tillvägagångssättet här är annorlunda än hur bitcoin använde det. I Ethereum används Merkle Patricia Tree som är en komplex version av Merkle-trädet. Detta är möjligt eftersom Ethereum är Turing-komplett.

Om du vill lära dig mer om hur Merkle-träd fungerar i Ethereum, kolla in det detaljerade inlägget här.

Andra Implementering av Merkle-träd: Användningsfall

Det finns naturligtvis andra Merkle-träd implementering där ute. En av de mest populära är Git – ett distribuerat versionskontrollsystem. Den används av programmerare från hela världen för att hantera sina projekt. 

En annan användbar implementering ses i Interplanetärt filsystem – ett peer-to-peer-distribuerat protokoll. Det är också öppen källkod och gör det möjligt för datorenheter att gå med och använda ett allestädes närvarande filsystem.

Även certifikatmyndigheter använder Merkle-träd till deras fördel. De använder den i mekanismen för att skapa verifierbara loggar för certifikattransparens. Eftersom loggen är enorm gör Merkle-träd att datorer kan verifiera den utan att slösa för mycket tid och ansträngning.

Det sista användningsfallet som vi ska diskutera är databassystem som Amazon DynamoDB och Apache Cassandra. Dessa distribuerade databaser utan SQL tar kontroll över inkonsekvenser med Merkle-träd under datareplikeringsprocessen. Om det finns några problem kan det uppdatera eller reparera data med anti-entropi-reparationsprocessen.

Kort sagt, användningen av fall av Merkle-träd inkluderar

  • Datasynkronisering
  • Dataverifiering
  • Konsekvensverifiering

Merkle Trees fördelar

I det här avsnittet tittar vi snabbt på fördelarna med Merkle-trädet.

  • Validera dataintegriteten: Den kan effektivt användas för att validera dataintegriteten.
  • Tar lite diskutrymme: Merkle-trädet tar lite diskutrymme jämfört med andra datastrukturer.
  • Liten information över nätverk: Merkle träd kan delas in i liten information för verifiering.
  • Effektiv verifiering: Datastrukturen är effektiv och tar bara ett tag att verifiera dataintegriteten.

Slutsats

Merkle-trädet är ett av de viktiga begreppen inom datavetenskap. Det används ofta i många användningsfall och dess användning i kryptovaluta har gett upphov till en revolutionerande teknik, blockchain.

Så vad vet du om Merkle-träd? Kommentera nedan och låt oss veta.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me
Like this post? Please share to your friends:
Adblock
detector
map