Merkle-Bäume sind eine Datenstruktur, die mit dem Ziel erstellt wurde, die Überprüfung großer Mengen organisierter Daten zu erleichtern, indem sie mithilfe verschiedener kryptografischer und Informationsmanagementtechniken in Beziehung gesetzt werden.
DIch betrete von jedem Block Im Bitcoin-Netzwerk finden wir eine Struktur namens «Merkle-Baum».
Ein Merkle-Baum ist eine Datenstruktur, die in mehrere Schichten unterteilt ist und darauf abzielt, die einzelnen Schichten miteinander in Beziehung zu setzen Knoten mit einer einzigen Wurzel, die ihnen zugeordnet ist. Um dies zu erreichen, muss jeder Knoten mit einer eindeutigen Kennung identifiziert werden (Hash-). Diese anfänglichen Knoten, sogenannte untergeordnete Knoten (Blätter), werden dann einem übergeordneten Knoten zugeordnet, der als übergeordneter Knoten (Zweig) bezeichnet wird. Der übergeordnete Knoten verfügt über eine eindeutige Kennung, die sich aus dem Hash seiner untergeordneten Knoten ergibt. Diese Struktur wird bis zum Erreichen des wiederholt Wurzelknoten oder Merkle-Wurzel (Merkle Root), dessen Abdruck mit allen Knoten des Baums verknüpft ist.
Dank dieser einzigartigen Struktur ermöglichen Merkle-Bäume die Zuordnung einer großen Datenmenge zu einem einzigen Punkt (Merkle-Wurzel). Auf diese Weise kann die Verifizierung und Validierung dieser Daten sehr effizient gestaltet werden, da nur die Merkle-Wurzel und nicht die gesamte Struktur überprüft werden muss.
Dieses Design wurde von erstellt Ralph Merkle, im Jahr 1979, um den Verifizierungsprozess großer Datenmengen zu beschleunigen.
Wie funktioniert ein Merkle-Baum?
Ein Merkle-Baum ist eine Struktur, die alle Transaktionen in Beziehung setzt und sie in Paare gruppiert, um eine zu erhalten Wurzel-Hash o "Root-Adresse“. Dieser Root-Hash bezieht sich auf alle Hashes im Baum. Alle überprüfen Transaktionen eines Netzwerks wäre extrem langsam und ineffizient. Aus diesem Grund wurde dieses System implementiert. Denn wenn ein Hash geändert wird, würden sich alle anderen ändern, bis der Root (Root-Hash) erreicht wird. Dadurch wird die Authentizität der Informationen für den gesamten Baum ungültig. Es ist genau diese Funktion, die es Merkels Bäumen ermöglicht, das hohe Maß an Sicherheit zu bieten, das sie auszeichnet.
Um die Funktionsweise eines Merkle-Baums genauer zu verstehen, sehen Sie sich das folgende Beispiel an:
Stellen Sie sich einen Datenblock vor, der einen einzigartigen und nicht wiederholbaren Abdruck oder Hash trägt. Jeder dieser Blöcke ist in Schichten organisiert, die wir als Pyramidenstruktur bezeichnen würden. Diese Blöcke werden durch diese Hashes mit einer höheren Ebene verknüpft. Auf diese Weise zeigen die oberen Blöcke immer auf die unteren Blöcke, aber was noch wichtiger ist, der Hash dieser oberen Blöcke ist das Ergebnis der Summe der im neuen Block enthaltenen Informationen mit dem Hash des vorherigen Blocks. Auf diese Weise wiederholt sich beim weiteren Skalieren dieselbe Struktur, während alle Blöcke zu einem großen Datenblock verbunden werden.
Die Tatsache, dass es auf diese Weise funktioniert, bedeutet, dass die Änderung des Hashs eines Blocks die Hashes der übrigen Blöcke ungültig macht. Auf diese Weise ermöglicht das System zwei Dinge. Erstens erleichtert es die Überprüfung von Datenblöcken. Zweitens dient es als Mechanismus zur Vermeidung von Manipulationen. Dies liegt daran, dass dieser Mechanismus die Erkennung von Hash-Änderungen in jedem Datenblock ermöglicht. Wenn eine Änderung festgestellt wird, wird der gesamte Baum ungültig, da er geändert wurde und seine Daten ungültig sind.
Eigenschaften von Merkle-Bäumen
Einige der bemerkenswertesten Merkmale von Merkle-Bäumen sind:
- Sie sind ein effizientes Mittel zur Generierung einer verteilten Datenstruktur.
- Sie bieten große Sicherheit und Widerstandsfähigkeit gegen Datenveränderungen.
- Sie ermöglichen eine hohe Datenübertragungsleistung in verteilten Netzwerken. Dadurch wird die für das ordnungsgemäße Funktionieren erforderliche Datenmenge reduziert.
- Sie sind rechenintensiv und effizient bei der Erstellung, Verarbeitung und Überprüfung von Informationen.
- Sie ermöglichen eine „Dissektion“, um Überprüfungssuchen schneller durchzuführen. Und das alles, ohne die Sicherheit und Rückverfolgbarkeit der durchgeführten Transaktionen zu beeinträchtigen.
- Dank der „Dissektion“-Funktion können sie zudem Speicherressourcen einsparen.
- Sie bieten eine große Anpassungsfähigkeit an verschiedene Rechenprobleme. Aus diesem Grund wurden Merkle-Bäume in verschiedenen Systemen häufig verwendet. Zum Beispiel Datenbanksoftware, Dateisysteme, öffentliche Schlüsselstrukturen, Versionierungssysteme, verteilte Netzwerke (P2P) und andere.
Aktuelle Verwendungen
Merkle-Bäume finden derzeit vielfältige Einsatzmöglichkeiten in Computersystemen, und hier werden wir über einige davon sprechen.
Blockchain-Technologie
Die Verwendung von Merkle-Bäumen in der Technologie Blockchain Es ist lebenswichtig. Dank seiner Verwendung kann die Client-Software den gesamten Verlauf der Blockchain herunterladen und im laufenden Betrieb überprüfen. Tatsächlich erleichtert seine Verwendung den Prozess, indem er ermöglicht „Pflaume» (Nur einen Teil des Verlaufs übernehmen) und die Downloadgröße reduzieren.
Beispielsweise muss ein Benutzer, der einen Bitcoin-Client installieren möchte, nicht den gesamten Blockchain-Verlauf herunterladen. Stattdessen können Sie Ihren Download auf einige Hundert oder Tausende Blöcke reduzieren. Auf diese Weise haben Sie Zugriff auf eine vereinfachte Version des Verlaufs, die Ihren Anforderungen besser entspricht.
Anders als Sie vielleicht denken, beeinträchtigt dies nicht die Sicherheit des Kunden. Nun, dank des Merkle-Baums ist es möglich, einen bestimmten „Root-Hash“ herunterzuladen und von dort aus mit der Erstellung eines Verlaufs zu beginnen. Da dieser „Root-Hash“ mit den Blöcken davor zusammenhängt, muss er nur noch überprüft werden. Dazu können Sie zu einer Reihe vollständiger Bitcoin-Knoten (mit dem gesamten Verlauf) gehen und überprüfen, ob der entnommene „Root-Hash“ übereinstimmt. Da in diesem Punkt absoluter Konsens besteht, wird der „Root-Hash“ als gültig angesehen. Und ab diesem Zeitpunkt kann der Benutzer seinen neuen Bitcoin-Client-Knoten perfekt nutzen.
Dateisysteme
Ein weiterer Nutzen, den wir in Merkle-Bäumen sehen können, spiegelt sich in Dateisystemen wider. Ein Dateisystem ist eine Datenstruktur, die ein Betriebssystem verwendet, um den Überblick über die von ihm gespeicherten Dateien zu behalten. Normalerweise wird diese Struktur auf einer Festplatte und sogar in den Speicherkarten unserer Smartphones angewendet.
Einige dieser eigenartigen Kreationen nutzen Merkle-Bäume, um die korrekte Verwendung der gespeicherten Daten zu verwalten und zu gewährleisten. Als Sonderfälle in dieser Gruppe sind Dateisysteme zu nennen ZFS y btrfs.
ZFS sogenannte Zettabyte-Dateisystem, gilt in der Computerwelt als das beste Ablagesystem. Seine Fähigkeiten übertreffen die bekannteren Konkurrenten bei weitem NTFS, FETT, exFAT o ext3/4. Es bietet Ausfallsicherheit, Fehlerbehebung und -korrektur, Datendeduplizierung, Replikation, Copy-on-Write (CoW) und hohe Skalierbarkeit. All dies macht es zu einer perfekten Option für den Einsatz in kritischen Umgebungen. Entworfen von Sun Microsystems Es wurde 2004 eingeführt und ist derzeit führend bei Dateisystemen für Computer.
Um dies zu erreichen, verfügt ZFS jedoch über ein geheimes Tool in seinem gesamten Code: die umfangreiche und intensive Nutzung von Merkle-Bäumen. All dies, um über ein System zu verfügen, das eine schnelle Überprüfung der in seinen Strukturen gespeicherten Daten ermöglicht. Seine Fehlerwiederherstellung, Deduplizierung, CoW (Copy-On-Write) und Replikationseigenschaften hängen stark von dieser Technik ab, da sie andernfalls einen hohen Rechenaufwand mit sich bringen würde, der ihre Vorteile zunichte machen würde.
Versionskontrollsysteme
Wir können eine weitere Verwendung von Merkle-Bäumen in Software-Versionierungssystemen sehen, bekannte Fälle von Git y Quecksilber-. Von beiden ist Git das bekannteste, dasselbe, das den Betrieb von Plattformen wie z. B. ermöglicht Gitlab y Githuboder die Entwicklung des Linux-Kernels, letzteres war das erste Projekt, das es in der Produktion verwendete, da der Schöpfer von Git Linus Torvalds ist.
Die Verwendung von Merkle-Bäumen in dieser Art von Software hängt mit dem Änderungsverfolgungssystem innerhalb des Repositorys oder Arbeitsbereichs zusammen, in dem die Dateien gespeichert sind. Auf diese Weise durchläuft jede vorgenommene Änderung (neue Datenblöcke) einen Hashing-Prozess, der beim Durchsuchen des gesamten Inhalts des Repositorys einen eindeutigen Hash des besagten Arbeitsbereichs generiert, der als Commit bezeichnet wird.
Dieses Markierungssystem ermöglicht es uns beispielsweise, zu einem bestimmten Commit zu gehen, um zu sehen, wie der Status des Projektcodes zu einem bestimmten Zeitpunkt war, während der allgemeine Status des Projekts intakt bleibt. Einfacher betrachtet ermöglichen uns Merkle-Bäume in Git, eine Art Zeitmaschine zu erstellen, die es uns ermöglicht, durch die verschiedenen Commits des Projekts zu navigieren und dabei die Dateien und ihre Änderungen so zu belassen, wie sie zu diesem bestimmten Zeitpunkt waren.
Ein Dienstprogramm, das beim Entwerfen von Software in verteilten und stark frequentierten Arbeitsumgebungen sehr nützlich ist, wie Linus Torvalds in seinem großartigen Linux-Kernel-Projekt nicht demonstriert hat.