🌳 Merkle-Baum — Hash-Bäume & Beweise
Bauen Sie einen Merkle-Baum, indem Sie Datenblöcke paarweise bis zu einer einzigen Wurzel hashen. Ändern Sie ein Blatt und beobachten Sie, wie sich die Wurzel ändert; verifizieren Sie einen Block mit einem logarithmischen Merkle-Beweis — dem Rückgrat von Blockchains.
Über diese Simulation
Diese Simulation baut einen Merkle-Baum live in Ihrem Browser: Jeder Datenblock wird zu einem Blatt-Hash, benachbarte Hashes werden gepaart und Ebene für Ebene erneut gehasht, und der Vorgang wiederholt sich, bis eine einzige Merkle-Wurzel übrig bleibt. Bearbeiten Sie einen beliebigen Block und beobachten Sie, wie sich die Änderung entlang des Pfads zur Wurzel nach oben fortpflanzt, oder fordern Sie einen Merkle-Beweis an, um zu verifizieren, dass ein Blatt zu dieser Wurzel gehört, indem nur O(log n) Geschwister-Hashes verwendet werden.
🔬 Was gezeigt wird
Das Canvas zeichnet jede Ebene des Baums von den Blättern unten bis zur einzigen Wurzel oben und verbindet jedes Kinderpaar mit seinem Elternteil. Das Bearbeiten eines Datenblock-Felds berechnet dessen Blatt-Hash neu und hebt den geänderten Pfad zur Wurzel rot hervor — dies zeigt, dass ein Merkle-Baum manipulationssicher ist: Kein Blatt kann sich ändern, ohne dass sich auch die Wurzel ändert.
🎮 Bedienung
Tippen Sie in ein beliebiges Datenblock-Textfeld, um den Inhalt dieses Blatts zu ändern, und beobachten Sie, wie sich der Wurzel-Hash aktualisiert. Ziehen Sie den Blätter-Schieberegler (2–16), um die Größe des Baums zu ändern, wählen Sie dann einen Blattindex und klicken Sie auf „Blatt verifizieren“, um einen Merkle-Beweis zu erstellen und hervorzuheben: den Geschwister-Hash auf jeder Ebene (Bernstein) sowie den Pfad zur Wurzel (Violett), wobei die Beweisgröße im Statistik-Panel angezeigt wird. „Hervorhebung löschen“ setzt die Ansicht zurück.
💡 Wussten Sie schon?
Bitcoin und Ethereum speichern eine Merkle-Wurzel in jedem Blockheader, sodass ein Light-Client mit nur etwa zwanzig Geschwister-Hashes verifizieren kann, dass eine einzelne Transaktion in einem Block mit mehreren tausend Transaktionen enthalten ist — eine Beweisgröße, die kaum wächst, selbst wenn der Block eine Million Transaktionen enthielte, da die Beweislänge als O(log n) skaliert.
Weitere Fragen zu Merkle-Bäumen
Warum verwendet diese Simulation einen kurzen FNV-1a-Hash statt SHA-256?
Die Simulation setzt eine kleine, schnelle FNV-1a-artige Mischfunktion ein, die eine 4-stellige Hex-ID statt eines vollständigen 256-Bit-SHA-256-Digests erzeugt, nur damit die Hashes auf dem Bildschirm lesbar sind und sich sofort neu berechnen, während Sie tippen. Der Baumaufbau-Algorithmus, die Manipulationssicherheit und die O(log n)-Beweislogik sind identisch mit Produktionssystemen; nur die zugrunde liegende Hash-Funktion unterscheidet sich.
Was passiert mit dem Baum, wenn die Anzahl der Blätter keine Zweierpotenz ist?
Bei jeder Ebene mit einer ungeraden Knotenzahl paart die buildTree-Funktion der Simulation den letzten Knoten vor dem Hashen mit einer Kopie seiner selbst — genau die Regel des duplizierten letzten Knotens, die in echten Merkle-Baum-Implementierungen wie der von Bitcoin verwendet wird. Dadurch bleibt jede Ebene binär, sodass sich der Baum immer sauber auf eine einzige Wurzel reduziert, unabhängig davon, ob die Blattzahl (2 bis 16 in dieser Demo) eine Zweierpotenz ist.
Wie unterscheidet sich der geänderte Pfad vom Beweispfad in der Visualisierung?
Das Bearbeiten eines Blatts löst markChangedPath aus, das von diesem Blatt bis zur Wurzel läuft und jeden Vorfahren rot markiert, um zu zeigen, welche Hashes neu berechnet wurden. Ein Klick auf „Blatt verifizieren“ löst stattdessen buildProof aus, das den Pfad zur Wurzel in Violett und den auf jeder Ebene benötigten Geschwister-Hash in Bernstein markiert — die minimale Menge zusätzlicher Hashes, die ein Prüfer benötigt, um die Wurzel aus diesem einen Blatt neu zu berechnen, ohne einen anderen Block zu sehen.
Warum ist ein Merkle-Beweis nur O(log n) Hashes lang?
Jede Ebene des Baums halbiert die Anzahl der Knoten, sodass ein Baum mit n Blättern etwa log2(n) Ebenen hat. Ein Beweis benötigt genau einen Geschwister-Hash pro Ebene auf dem Pfad vom Blatt zur Wurzel, sodass seine Größe logarithmisch statt linear mit der Anzahl der Blätter wächst — bei einer Million Blättern sind das etwa 20 Hashes, was einem Light-Client erlaubt, die Inklusion zu verifizieren, ohne die anderen 999.999 Blöcke herunterzuladen.
Könnten zwei verschiedene Blätter jemals dieselbe Baumwurzel erzeugen?
Im Prinzip könnte eine Hash-Kollision dazu führen, dass zwei verschiedene Datensätze dieselbe Wurzel erzeugen, aber mit einem kryptografisch sicheren Hash wie SHA-256 ist dies rechnerisch nicht durchführbar — die vereinfachte FNV-1a-artige Funktion der Demo ist nicht kollisionsresistent und wird hier nur aus Gründen der Geschwindigkeit und Lesbarkeit verwendet, niemals für echte Integritätsgarantien.
Bauen Sie einen Merkle-Baum, indem Sie Datenblöcke paarweise bis zu einer einzigen Wurzel hashen. Ändern Sie ein Blatt und beobachten Sie, wie sich die Wurzel ändert; verifizieren Sie einen Block mit einem logarithmischen Merkle-Beweis — dem Rückgrat von Blockchains.
3D · Three.js / WebGL-Renderer · 60 FPS Ziel · läuft vollständig clientseitig, keine Installation