Arbeitsplatz Bild DEVJobs.at

Decentralized Web Magic

Description

Nico Reindl zeigt in seinem devjobs.at TechTalk das Prinzip der Decentralization anhand von Hash Functions und Merkle Trees.

Beim Videoaufruf stimmst Du der Datenübermittlung an YouTube und der Datenschutzerklärung zu.

Video Zusammenfassung

In Decentralized Web Magic erklärt Nico Reindl den Wechsel von hostbasierter zu inhaltsbasierter Adressierung mithilfe von Hashfunktionen, sodass Links unabhängig vom Speicherort bleiben. Er zeigt, wie Dateien in Chunks geteilt und über ein Peer-to-Peer-Netz von untrusted Peers bezogen sowie mit Merkle-Bäumen und einem vertrauenswürdigen Root-Hash verifiziert werden, inklusive effizienter Teilvalidierung. Zuschauer lernen, wie sie dadurch konsistente Links und verifizierbare, skalierbare Datenverteilung realisieren können, wie sie etwa in IPFS, Ethereum, uTorrent und Bitcoin eingesetzt wird.

Decentralized Web Magic: Wie Hashes und Merkle-Bäume Links entkoppeln und Vertrauen im Peer-to-Peer-Web schaffen

Einleitung: Vom Katzenvideo zur dezentralen Architektur

In „Decentralized Web Magic“ von Nico Reindl (DEVJobs.at) beginnt alles mit einem simplen Alltagsmoment: Ein Katzenvideo wird geteilt. Ein Klick auf „Teilen“, ein Link wird erzeugt, fertig. Genau diese kleine Handlung legt zwei Grundprinzipien des zentralisierten Webs offen: Inhalte werden bei einer zentralen Instanz gehostet, und Links sind an diesen Host gebunden. Im Beispiel ist das YouTube. Der Link zeigt auf youtube.com/… – die Adresse basiert auf dem Ort, an dem der Inhalt liegt.

Das bringt Bequemlichkeit, aber auch Abhängigkeiten: Wer denselben Inhalt auf eine andere Plattform bringen will, lädt ihn erneut hoch und erhält einen neuen Link. Ein Video existiert plötzlich doppelt – einmal auf YouTube, einmal auf Instagram – und die beiden Links sind weder austauschbar noch stabil, wenn sich der Host ändert.

Nico Reindl stellt eine provokante Alternative in Aussicht: „Was wäre, wenn du es ins Internet hochladen könntest, ohne es auf YouTube oder Instagram zu hosten – und du bräuchtest nur einen einzigen Link?“ Mit dieser Frage lenkt er die gesamte Diskussion auf den Kernbegriff der Session: Inhaltsadressierung, realisiert mit Hash-Funktionen und verifizierbar über Merkle-Bäume. So entsteht das „Magische“ am dezentralen Web – ein Mechanismus, der Links vom Speicherort entkoppelt und gleichzeitig Vertrauen zwischen unbekannten Peers herstellt.

Host-basierte Adressierung: Bequem, aber an Orte gebunden

Im zentralisierten Web arbeiten wir mit host-basierten Adressen. Die URL referenziert eine Domain – also einen Host –, nicht den Inhalt selbst. Daraus folgen:

  • Ein Inhalt ist an einen Betreiber gebunden (z. B. YouTube).
  • Ein Wechsel des Hosts erfordert einen erneuten Upload und erzeugt einen neuen Link.
  • Ein Link spiegelt somit die Plattform wieder, nicht die Identität des Inhalts.

Die Konsequenzen sind für Entwickler gut sichtbar: Kopien und Duplikate, redundante Uploads und eine unnötige Bindung an Infrastruktur-Entscheidungen. Das Problem ist nicht nur organisatorisch, sondern architektonisch: Die Adresse zeigt auf den Ort des Inhalts, nicht auf den Inhalt selbst.

Inhaltsadressierung: Die Idee, den Inhalt zur Adresse zu machen

Die vorgestellte Alternative ist inhaltlich begründet: Die Adresse leitet sich aus dem Inhalt ab. Das zentrale Werkzeug dafür ist die Hash-Funktion.

„Was ist eine Hash-Funktion? Eine Hash-Funktion nimmt eine Eingabe und erzeugt eine Ausgabe fester Länge, typischerweise 32 Bytes.“

Wesentlich ist dabei das verlässliche Verhalten:

  • Gleiche Eingabe → gleiches Hash-Ergebnis.
  • Unterschiedliche Eingabe → anderes Hash-Ergebnis.

Diese Eigenschaft kann man – wie im Talk betont – nutzen, um Adressen zu generieren. Denn wenn zwei unterschiedliche Inhalte nie denselben Hash erzeugen, wird der Hash zur eindeutigen Kennung. Die Adresse ist nicht mehr abhängig von einem Host, sondern vom Inhalt selbst. Genau hier entsteht die Entkopplung von Speicherort und Link, die im zentralisierten Web fehlt.

Peer-to-Peer: Inhalte verteilen, ohne zentrale Autorität

In einem Peer-to-Peer-Netzwerk (P2P) kann „jeder Computer, wo auch immer“ teilnehmen. Das bedeutet:

  • Die Peers sind anonym und untrusted – also nicht vertrauenswürdig per se.
  • Inhalte werden in Teile zerlegt und verteilt.

Nico Reindl beschreibt das am Beispiel eines Videos, das in vier Teile gesplittet und über das Netzwerk verteilt wird. Der Inhalt ist nicht mehr an eine Plattform oder einen Server gebunden. Jeder Peer kann Teile vorhalten und ausliefern. Die große Frage bleibt jedoch: „Können wir Fremden im Internet vertrauen?“ Um die Integrität der Daten sicherzustellen, braucht es einen kryptographischen Nachweis – ohne zentrale Autorität. Genau an dieser Stelle setzt der Merkle-Baum an.

Merkle-Bäume: Verifikation über Strukturen aus Hashes

„Merkle trees allow data verification across peers.“

Ein Merkle-Baum ist im Wesentlichen ein binärer Baum, in dem keine Rohdaten als Knotenwerte gespeichert werden, sondern Hashes. Die Struktur lässt sich so beschreiben:

  • Blattknoten (Leaf Nodes) repräsentieren die Hashes der Datenteile (z. B. die Video-Segmente).
  • Jeder innere Knoten entsteht, indem man die Hashes der beiden Kindknoten zusammenfügt (konkateniert) und erneut hasht.
  • Ganz oben steht der Root-Hash – das Ergebnis der wiederholten Hashing-Schritte über den gesamten Baum.

Diese Konstruktion ist deshalb so stark, weil eine kleinste Veränderung auf Blattebene den Root-Hash verändert. Damit dient der Root-Hash als kompakte, eindeutige Repräsentation des gesamten Datenbestands. Stimmen zwei Root-Hashes überein, sind die dazugehörigen Datensätze identisch – und zwar vollständig.

Ein Merkle-Baum aus vier Teilen

Im Talk wird ein Beispiel mit vier Videoteilen skizziert:

  1. Jeder der vier Teile wird gehasht → vier Blattknoten entstehen.
  2. Je zwei Blattknoten werden zusammengefasst: ihre Hashes werden konkateniert und erneut gehasht → zwei Elternknoten.
  3. Die beiden Elternknoten werden wieder zusammengefasst und gehasht → der Root-Hash entsteht.

Mit diesem Root-Hash haben wir eine kompakte, eindeutige Repräsentation des gesamten Videos – nur auf Basis von Hashes der Daten, nicht der Daten selbst.

Vertrauensanker: Ein Root-Hash von einer vertrauenswürdigen Quelle

Wie verifiziert man Daten aus einem untrusted P2P-Netzwerk? Nico Reindl beschreibt einen klaren Ablauf:

  1. Ein „trusted party“ (im Beispiel: Bob, ein Freund) sendet den Root-Hash. Dieser eine Wert fungiert als Vertrauensanker.
  2. Man fragt im P2P-Netzwerk an: Wer hat Daten, die mit diesem Root-Hash assoziiert sind?
  3. Peers liefern die benötigten Datenstücke zurück.
  4. Aus den empfangenen Teilen rekonstruiert man den Merkle-Baum lokal: Alle relevanten Hashes werden erneut berechnet.
  5. Am Ende vergleicht man den selbst berechneten Root-Hash mit dem von Bob erhaltenen.

Sind beide Root-Hashes gleich, „kannst du dir zu 100% sicher sein“ – so der Tenor des Talks –, dass die Daten exakt mit der adressierten Version übereinstimmen. Das Netzwerk bleibt untrusted; die Verifikation erfolgt rein kryptographisch durch die Struktur der Merkle-Bäume und die Eigenschaften der Hash-Funktionen.

Warum ein Baum statt eines einzelnen Hashes?

Eine naheliegende Frage spricht Nico Reindl direkt an: Man könnte doch einfach alle Teile zusammenfügen und einen einzigen Hash darüber berechnen. Das würde die Integrität ebenfalls sichern. Der Unterschied zeigt sich allerdings bei selektiven Zugriffen.

Beispiel aus dem Talk: „Sagen wir, du hast 1000 Dateien und brauchst nur zwei davon.“

Mit einem einzigen Hash müsstest du alle 1000 Dateien herunterladen, um die Korrektheit zu prüfen – denn erst dann ließe sich der große Gesamt-Hash re-berechnen. Der Merkle-Baum löst genau dieses Problem:

  • Partielle Verifikation: Es reicht, nur die relevanten Dateien sowie die erforderlichen Elternknoten bis zur Wurzel zu beziehen.
  • Schlussendlich wird nur der Root-Hash mit dem erhaltenen Vertrauensanker verglichen.

So entsteht eine effiziente Validierung, ohne unnötige Datenübertragungen. Für Entwickler bedeutet das ein klares Muster: nutzungsbasierte Integritätsprüfungen statt „Alles-oder-nichts“-Downloads.

Von der Theorie in die Praxis: Wo Merkle-Bäume heute auftauchen

Im Talk werden konkrete Beispiele genannt, die diese Mechanismen nutzen:

  • Interplanetary File System (IPFS)
  • Ethereum (eine Kryptowährung)
  • uTorrent
  • Bitcoin

Insbesondere bei Bitcoin beschreibt Nico Reindl die Rolle von Merkle-Bäumen in der Blockchain: Ein Block enthält Transaktionen, und innerhalb dieses Blocks kommt der Merkle-Baum zum Einsatz. Damit lassen sich Transaktionssätze kompakt repräsentieren und verifizieren – ganz im Sinne der oben beschriebenen Eigenschaften.

Architekturgedanken für Entwickler: Von der Adresse zum Vertrauensmodell

Aus der Session destillieren wir eine klare, technische Erzählung, die sich unmittelbar in Architekturentscheidungen übersetzen lässt:

  • Host-basierte Adressen koppeln Inhalte fest an Infrastruktur. Inhalte müssen verschoben, dupliziert oder neu hochgeladen werden, wenn der Host wechselt.
  • Inhaltsadressierung ersetzt den Ort durch Identität: Ein Hash repräsentiert den Inhalt, unabhängig vom Speicherort.
  • Peer-to-Peer-Netzwerke verteilen Inhalte über untrusted Peers. Das reduziert die Abhängigkeit von zentralen Infrastrukturknoten, erfordert aber ein robustes Verifikationsverfahren.
  • Merkle-Bäume liefern diesen Verifikationsmechanismus: Ein Root-Hash sichert die Integrität des gesamten Datensatzes, Teilbäume erlauben partielle Validierung.

Diese Kette – Hash → Inhaltsadresse → P2P-Verteilung → Merkle-Verifikation – bildet das Rückgrat der im Talk skizzierten „dezentralen Magie“.

Ablauf für Implementierende: Schrittweise Integrität ohne zentrale Kontrolle

Während der Vortrag keine Codebeispiele enthält, ist der Prozess selbst präzise umrissen. In Projekten lässt sich derselbe Ablauf übernehmen:

  1. Hashing als Identitätsschicht etablieren
  • Für jede Datei oder jedes Datenstück einen Hash berechnen (feste Länge, z. B. 32 Bytes, wie im Talk erwähnt).
  • Den Hash als Adresse des Inhalts verwenden.
  1. Daten in Teile zerlegen
  • Große Inhalte in mehrere Segmente splitten (wie das Vier-Teile-Video im Talk).
  • Jedes Segment separat hashen.
  1. Merkle-Baum konstruieren
  • Paare von Hashes konkateniert hashen, bis ein Root-Hash entsteht.
  • Der Root-Hash repräsentiert den gesamten Datensatz kompakt.
  1. Vertrauensanker austauschen
  • Den Root-Hash aus einer vertrauenswürdigen Quelle beziehen (im Talk: „Bob“).
  • Nur dieser Root-Hash muss „trusted“ sein; alles Weitere kann aus untrusted Quellen kommen.
  1. P2P-Retrieval
  • Im Peer-to-Peer-Netzwerk nach Daten zu diesem Root-Hash fragen.
  • Datenstücke und ggf. notwendige Elternknoten beziehen.
  1. Lokale Verifikation
  • Baum aus erhaltenen Stücken rekonstruieren, Hashes neu berechnen.
  • Root-Hash vergleichen: Stimmt er mit dem vertrauenswürdigen Root überein, sind die Daten korrekt.
  1. Partielle Validierung einsetzen
  • Nur die benötigten Teile plus erforderliche Elternknoten holen.
  • Gesamte Daten nur dann übertragen, wenn der Anwendungsfall es erfordert.

Dieser Ablauf ist exakt die Brücke zwischen einem untrusted Netzwerk und verlässlichen Ergebnissen – ohne zentrale Instanz, die „garantiert“, dass alles stimmt.

Begriffe präzisieren: Was im Talk zentral ist

Der Vortrag ist kompakt und konsequent. Für die tägliche Arbeit lohnt es sich, die Schlüsselbegriffe genau so zu verankern, wie sie im Talk verwendet werden:

  • Hash-Funktion: Deterministische Abbildung von Eingaben auf eine Ausgabe fester Länge (im Talk: typischerweise 32 Bytes). Gleiche Eingabe, gleicher Output.
  • Einzigartigkeit der Hashes: „Du erhältst niemals denselben Output aus zwei verschiedenen Inputs“ – im Sinne des Vortrags der Grund, Hashes als Adressen zu verwenden.
  • Inhaltsadressierung: Die Adresse hängt vom Inhalt ab, nicht vom Host.
  • Host-basierte Adressierung: Die Adresse hängt vom Speicherort ab (z. B. youtube.com/…).
  • Peer-to-Peer: Viele anonyme, untrusted Peers; jeder kann teilnehmen.
  • Merkle-Baum: Binärer Baum mit Hashes statt Rohwerten; Blätter sind Datenhashes, innere Knoten sind Hashes aus konkatenierten Kind-Hashes; die Wurzel repräsentiert den gesamten Satz.
  • Root-Hash: Kompakter, eindeutiger Fingerabdruck des Gesamtinhalts, dient als Vertrauensanker.
  • Partielle Validierung: Nur die benötigten Dateien und die relevanten Elternknoten beziehen; Root-Hash prüfen; keine vollständigen Downloads erforderlich.

Praktische Effekte: Konsistente Links und „trustless“ Distribution

Der Vortrag schließt mit einer knappen Zusammenfassung, die sich als klare Liste für Engineering-Ziele lesen lässt:

  • Inhaltsadressierung liefert konsistente Links, unabhängig vom Speicherort eines Inhalts.
  • Merkle-Root-Hashes ermöglichen effiziente Verifikation – vollständig oder partiell.
  • Zusammengenommen entsteht eine „trustless“ Verteilung von Daten in einem Netzwerk aus untrusted Peers: Vertrauen wird nicht organisatorisch, sondern kryptographisch und strukturell hergestellt.

Diese Effekte sind mehr als Theorie: Sie beschreiben ein wiederverwendbares Muster, das sich in unterschiedlichen Systemen – von IPFS bis Bitcoin – bereits findet.

Mentales Modell für Architekturentscheidungen

Aus Sicht der Redaktion von DEVJobs.at bleibt nach der Session vor allem ein mentales Modell hängen, das Architekturen vereinfacht:

  • Wenn die Adresse der Identität des Inhalts entspricht, verliert der Speicherort an Bedeutung.
  • Wenn Peers untrusted sind, übernimmt die Struktur (Merkle-Baum) die Aufgabe der Verifikation.
  • Wenn nur ein Root-Hash vertrauenswürdig sein muss, ist Verteilung frei skalierbar: Jeder kann liefern, wenige müssen vertraut werden.
  • Wenn Teilmengen häufig abgefragt werden, ermöglicht der Merkle-Baum effiziente, selektive Integritätsprüfungen.

Diese Punkte passen exakt in die im Talk gezeigten Beispiele. Sie sind Leitplanken, keine fertigen Implementierungen – aber ausreichend konkret, um Architekturentscheidungen deutlich zu beeinflussen.

Zitate und Formulierungen, die haften bleiben

Einige Passagen aus „Decentralized Web Magic“ fassen den Kern prägnant zusammen:

„Welcome to Decentralized Web Magic.“

„It’s all about hash functions.“

„You never get the same output from two different inputs … you can use them as addresses.“

„Merkle trees allow data verification across peers.“

„If they are the same, you can be 100% sure they are exactly the files you needed.“

„What trees allow you to do is partial validation.“

Diese Aussagen bilden das Vokabular der inhaltlichen Entkopplung und der vertrauenswürdigen Verteilung im P2P-Kontext.

Fazit: Die Essenz der „dezentralen Magie“

„Decentralized Web Magic“ von Nico Reindl (DEVJobs.at) führt vom Katzenvideo zum Konstruktionsprinzip der Inhaltsadressierung – und von dort zur Verifikation über Merkle-Bäume. Die zugrunde liegende Geschichte ist stringent:

  • Host-basierte Adressen binden Inhalte an Orte und Plattformen.
  • Hash-Funktionen machen Inhalte identifizierbar – und damit adressierbar – unabhängig von Hosts.
  • P2P verteilt Daten über untrusted Peers; Vertrauen kommt nicht aus der Infrastruktur, sondern aus der Verifikation.
  • Merkle-Bäume verankern dieses Vertrauen in einer kompakten Root-Repräsentation und ermöglichen partielle Validierung.

Am Ende stehen die drei Kernergebnisse, die Nico Reindl betont: konsistente Links durch Inhaltsadressierung, effiziente Verifikation durch Root-Hashes und „trustless“ Distribution über das Netzwerk. Genau diese Kombination macht den Ansatz so attraktiv – und erklärt, warum wir ihn bereits in Systemen wie IPFS, Ethereum, uTorrent und Bitcoin wiederfinden. Für Entwickler ist das weniger Magie als ein präzises Muster: Inhalte adressieren, verteilen, verifizieren – ohne zentrale Kontrolle, aber mit maximaler Integrität.

Weitere Tech Talks

Weitere Dev Stories