Wat is een Merkle Tree? Beginnershandleiding voor deze Blockchain-component

Merkle Tree

Merkle Trees zijn een fundamenteel onderdeel van blockchains die hun functionaliteit ondersteunen. Ze zorgen voor een efficiënte en veilige verificatie van grote datastructuren en, in het geval van blockchains, potentieel grenzeloze datasets.

De implementatie van Merkle-bomen in blockchains heeft meerdere effecten. Het stelt hen in staat om te schalen en tegelijkertijd de op hash gebaseerde architectuur te bieden om de gegevensintegriteit te behouden en een triviale manier om de integriteit van gegevens te verifiëren.

Cryptografische hashfuncties zijn de onderliggende technologie waardoor Merkle-bomen kunnen werken, dus eerst is het belangrijk om te begrijpen wat cryptografische hashfuncties zijn.

Cryptografische hash-functies

Simpel gezegd, een hash-functie is elke functie die wordt gebruikt om gegevens van een willekeurige grootte (invoer) toe te wijzen aan een uitvoer met een vaste grootte. Een hash-algoritme wordt toegepast op de gegevensinvoer en de resulterende uitvoer met vaste lengte wordt de hash genoemd.

Veel hash-algoritmen zijn algemeen beschikbaar en kunnen worden geselecteerd op basis van uw behoeften.

De resulterende hash van de willekeurige invoer is niet alleen vast in lengte, het is ook volledig uniek voor de invoer en de functie zelf is deterministisch. Dat wil zeggen, hoe vaak u de functie ook op dezelfde ingang uitvoert, de uitvoer zal altijd hetzelfde zijn.

Als u bijvoorbeeld de volgende datasets hieronder als invoer heeft, zijn de resulterende uitvoeringen uniek voor elke invoer. Merk op dat in het tweede en derde voorbeeld, ook al is het verschil tussen de invoer slechts één woord is, de resulterende uitvoer totaal verschillend is.

Dit is erg belangrijk omdat het “vingerafdrukken” van gegevens mogelijk maakt.

Een cryptografische hash-functie, Afbeelding van Wikipedia

Omdat de lengte van de uitvoer (hash-som in het voorbeeld) altijd hetzelfde is als bepaald door het gebruikte hash-algoritme, kunnen enorme hoeveelheden gegevens alleen worden geïdentificeerd via hun resulterende hash.

Met systemen die enorme hoeveelheden gegevens bevatten, kunnen de voordelen van het kunnen opslaan en identificeren van gegevens met een uitvoer met een vaste lengte enorme opslagbesparingen opleveren en de efficiëntie helpen verhogen.

Binnen blockchains worden hash-algoritmen gebruikt om de status van de blockchain te bepalen.

Blockchains zijn gekoppelde lijsten die gegevens bevatten en een hash-pointer die naar het vorige blok verwijst, waardoor een ketting van verbonden blokken ontstaat, vandaar de naam ‘blockchain’.

Elk blok is met elkaar verbonden via een hash-pointer, die de hash is van de gegevens in het vorige blok, samen met het adres van het vorige blok. Door gegevensblokken in dit formaat te koppelen, vertegenwoordigt elke resulterende hash van het vorige blok de volledige status van de blockchain, aangezien alle gehashte gegevens van de vorige blokken worden gehasht tot één hash.

Dit wordt (in het geval van het SHA-256-algoritme) weergegeven door een uitvoer (hash) zoals deze.

b09a57d476ea01c7f91756adff1d560e579057ac99a28d3f30e259b30ecc9dc7

De hash hierboven is de vingerafdruk van de volledige staat van de blockchain ervoor. De status van de blockchain voorafgaand aan het nieuwe blok (als gehashte gegevens) is de invoer en de resulterende hash is de uitvoer.

Hoewel het mogelijk is om cryptografische hashes te gebruiken zonder Merkle-bomen, is het buitengewoon inefficiënt en niet schaalbaar. Het gebruik van hashes om gegevens in een blok in serieformaat op te slaan, is tijdrovend en omslachtig.

Zoals u zult zien, maken Merkle-bomen een triviale resolutie van gegevensintegriteit mogelijk, evenals het in kaart brengen van die gegevens door de hele boom met behulp van Merkle-bewijzen.

Merkle Trees en Merkle Proofs

Vernoemd naar Ralph Merkle, die het concept in 1979 patenteerde, zijn Merkle-bomen fundamenteel datastructuurbomen waarbij elk niet-bladknooppunt een hash is van zijn respectieve onderliggende knooppunten.

De bladknooppunten zijn het laagste niveau van knooppunten in de boom. In het begin klinkt het misschien moeilijk te begrijpen, maar als je naar de veelgebruikte figuur hieronder kijkt, wordt het veel gemakkelijker te begrijpen.

Hash Tree

Een voorbeeld van een binaire hash-structuur, Afbeelding van Wikipedia

Merk op dat de niet-bladknooppunten of “takken” (voorgesteld door Hash 0-0 en Hash 0-1) aan de linkerkant hashes zijn van hun respectievelijke kinderen L1 en L2. Merk verder op hoe branch Hash 0 de hash is van de aaneengeschakelde kinderen, branches Hash 0-0 en Hash 0-1.

Het bovenstaande voorbeeld is de meest voorkomende en eenvoudige vorm van een Merkle-boom die bekend staat als een binaire Merkle-boom. Zoals je kunt zien, is er een tophash die de hasj is van de hele boom, ook wel bekend als de roothash. In wezen zijn Merkle-bomen een datastructuur die een “n” aantal hashes kan nemen en deze kan weergeven met een enkele hash.

De structuur van de boom zorgt voor een efficiënte mapping van willekeurig grote hoeveelheden gegevens en maakt een gemakkelijke identificatie mogelijk van waar veranderingen in die gegevens optreden. Dit concept maakt Merkle-bewijzen mogelijk, waarmee iemand kan verifiëren dat de hashing van gegevens helemaal in de boomstructuur en in de juiste positie consistent is zonder echt naar de hele set hashes te hoeven kijken.

In plaats daarvan kunnen ze verifiëren dat een gegevensblok consistent is met de root-hash door alleen een kleine subset van de hashes te controleren in plaats van de volledige gegevensset.

Zolang de root-hash publiekelijk bekend en vertrouwd is, is het voor iedereen die een sleutelwaarde-opzoeking in een database wil doen mogelijk om een ​​Merkle-bewijs te gebruiken om de positie en integriteit van een stuk data in een database te verifiëren een bepaalde wortel.

Wanneer de root-hash beschikbaar is, kan de hash-boom worden ontvangen van elke niet-vertrouwde bron en kan één tak van de boom tegelijk worden gedownload met onmiddellijke verificatie van de gegevensintegriteit, zelfs als de hele boom nog niet beschikbaar is.

Een van de belangrijkste voordelen van de Merkle-boomstructuur is de mogelijkheid om willekeurig grote gegevenssets te authenticeren via een soortgelijk hashing-mechanisme dat wordt gebruikt om veel kleinere hoeveelheden gegevens te verifiëren.

De structuur is voordelig voor het verdelen van grote gegevenssets in beheersbare kleinere delen waar de barrière voor de verificatie van de integriteit aanzienlijk wordt verminderd ondanks de algehele grotere gegevensomvang.

De root-hash kan worden gebruikt als de vingerafdruk voor een hele dataset, inclusief een hele database of die de volledige status van een blockchain vertegenwoordigt. In de volgende secties zullen we bespreken hoe Bitcoin en andere systemen Merkle-bomen implementeren.

Merkle Trees in Bitcoin

De cryptografische hash-functie die door Bitcoin wordt gebruikt, is het SHA-256-algoritme. Dit staat voor “Secure Hashing Algorithm”, waarvan de output een vaste lengte heeft van 256 bits. De basisfunctie van Merkle-bomen in Bitcoin is om transacties in elk blok op te slaan en uiteindelijk te snoeien.

Zoals eerder vermeld, zijn blokken in een blockchain verbonden via hashes van het vorige blok. In Bitcoin bevat elk blok alle transacties binnen dat blok, evenals de blokheader die bestaat uit:

  • Blok versienummer
  • Vorige Block Hash
  • Tijdstempel
  • Mijnbouw moeilijkheidsgraad
  • Nonce
  • Merkle Root Hash

De onderstaande afbeelding is van de Bitcoin wit papier en illustreert hoe de Merkle-boom in elk blok past.

Merkle Tree

De transacties worden door mijnwerkers in blokken opgenomen en worden gehasht als onderdeel van een Merkle-boom, wat leidt naar de Merkle-root die wordt opgeslagen in de blokkop. Dit ontwerp heeft een aantal duidelijke voordelen.

Met name, zoals uiteengezet in de whitepaper, maakt dit het bestaan ​​van Simple Payment Verification (SPV) -knooppunten mogelijk, ook wel bekend als “lichtgewicht clients”. Deze knooppunten hoeven niet de hele Bitcoin blockchain te downloaden, alleen de block headers van de langste chain.

SPV-knooppunten kunnen dit bereiken door hun peerknooppunten te bevragen totdat ze ervan overtuigd zijn dat de opgeslagen blockheaders waarop ze werken deel uitmaken van de langste keten. Een SPV-knooppunt kan vervolgens de status van een transactie bepalen door het Merkle-bewijs te gebruiken om de transactie toe te wijzen aan een specifieke Merkle-boom met de root-hash van die respectieve Merkle-boom in een blokheader die deel uitmaakt van de langste keten.

Bovendien maakt de implementatie van Merkle-bomen door Bitcoin het mogelijk om de blockchain te snoeien om ruimte te besparen. Dit is het resultaat van het feit dat alleen de root-hash wordt opgeslagen in de blokheader, daarom kunnen oude blokken worden gesnoeid door onnodige takken van de Merkle-boom te verwijderen terwijl alleen de takken behouden die nodig zijn voor het Merkle-bewijs.

Implementatie van Merkle Trees in andere blockchains en systemen

Hoewel Bitcoin de eerste blockchain was die Merkle-bomen implementeerde, implementeren veel andere blockchains vergelijkbare Merkle-boomstructuren of zelfs complexere versies.

Verder is de implementatie van de Merkle-boom niet alleen beperkt tot blockchains, maar wordt deze ook toegepast op een verscheidenheid aan andere systemen.

Ethereum, de andere meest herkenbare cryptocurrency, is ook een goed voorbeeld van een andere Merkle-tree-implementatie. Omdat Ethereum compleet is als een platform voor het bouwen van veel complexere applicaties, gebruikt het een meer complexe versie van de Merkle-boom, een Merkle Patricia-boom genaamd, die in feite 3 afzonderlijke Merkle-bomen zijn die worden gebruikt voor drie soorten objecten. U kunt meer over deze bomen leren hier.

Ten slotte zijn Merkle-bomen een belangrijk onderdeel van gedistribueerde versiebeheersystemen zoals Git en IPFS. Hun vermogen om eenvoudig de integriteit van gegevens die tussen computers worden gedeeld in een P2P-indeling te waarborgen en te verifiëren, maakt ze van onschatbare waarde voor deze systemen.

Conclusie

Merkle-trees zijn een integraal onderdeel van blockchains en stellen ze effectief in staat om te functioneren met aantoonbare onveranderlijkheid en transactie-integriteit.

Het begrijpen van de rol die ze spelen in gedistribueerde netwerken en hun onderliggende technologie van cryptografische hashfuncties is cruciaal voor het begrijpen van de basisconcepten binnen cryptocurrencies terwijl ze zich blijven ontwikkelen tot grotere en complexere systemen..

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