Das ist der zweite Artikel in meiner Reihe über IOTA. In diesem Artikel widme ich mich den technischen Grundlagen hinter IOTA. Das Ziel ist es, dass jeder technisch interessierte Laie eine Idee davon bekommt wie das Netzwerk hinter dem Tangle funktioniert und ein paar der oft gehörten und gelesenen Begriffe wie Snapshot, Milestone, Reattach und Transaction Promoting und deren Rolle im Tangle versteht.
IOTA – ein P2P-Netzwerk
Bei IOTA handelt es sich, wie bei allen mir bekannten Kryptowährungen auch, um ein Peer to Peer Netzwerk (kurz auch P2P-Netzwerk). P2P-Netzwerke sind durch BitTorrent auch der großen Masse von Computer-Usern bekannt geworden.
Das Konzept ist relativ simpel: Ein Netzwerk das entweder vollständig oder größtenteils aus gleichberechtigten Nutzern besteht, organisiert sich selbst um Verbindungen zwischen den einzelnen Teilnehmern zu erzeugen, um so ohne zentrale Stelle Daten auszutauschen.
Wenn Sie sich mit Ihrem Nachbarn über einen Steuertipp unterhalten, dieser es seinem Chef erzählt und dieser es dann seinem Buchhalter erzählt, handelt es sich auch um eine Form von P2P-Netzwerk. Sie mussten dabei weder den Buchhalter noch den Chef Ihres Nachbarn kennen damit sich die Information von Ihnen bis zum Buchhalter verbreiten kann. Es war für den Informationsfluss völlig ausreichend, dass Ihr Nachbar seinen Chef kennt und dieser seinen Buchhalter.
Dieses Prinzip erlaubt es große Netzwerke aufzubauen ohne dass es notwendig ist, ein zentrales Register für alle verfügbaren Adressen zu führen bzw. dass sich alle Teilnehmer gegenseitig kennen. Es ist ein Konzept für dezentrale Verwaltung. Das Internet ist ein weiteres Beispiel für ein selbstorganisierendes, dezentrales Netzwerk. Es ist völlig unerheblich ob mein Router zuhause, oder der Router meines Internet-Providers kaputt geht – es werden danach neue Routen gefunden um den Internetverkehr zu seinem Ziel zu leiten.
IOTA ist – mit Ausnahme des Coordinators, aber dazu später – ein solches dezentrales Peer to Peer Netzwerk.
IOTA Peers – jedem das seine
Im IOTA-Netzwerk gibt es mehrere Rollen:
- Full Nodes
- Light Nodes
- Coordinator
Eine Full Node ist ein Computer der sich um das Validieren von Transaktionen kümmert, sowie Transaktionen erstellen und den Kontostand einer Adresse verwalten. Zusätzlich speichert eine Full Node alle Transaktionen des Tangles und synchronisiert sich dafür mit anderen Full Nodes. Diese Daten sind notwendig für die Validierung von Transaktionen.
Eine Light Node ist ebenfalls ein Computer der den Kontostand einer Adresse verwalten kann sowie sich um das Erstellen von Transaktionen kümmert. Das Validieren der Transaktionen ist rechenaufwändig, denn ähnlich wie ein Miner bei Bitcoin muss auch eine IOTA Node einen Proof of Work für die Validierung erbringen. Der Aufwand ist zwar Welten vom Aufwand der für Bitcoin-Mining betrieben werden muss entfernt, aber hoch genug, damit kleine Low-Energy-Computer daran scheitern würden.
IOTA wirbt damit für IoT-Anwendungen interessant zu sein. Wie passt das zusammen? Die Antwort ist simpel: Diesen Rechenaufwand kann eine Light Node auch an eine Full Node delegieren. Damit können auch energieeffiziente Computer mit IOTA arbeiten. Auch wenn eine Light Node diese Aufgabe selbst übernimmt, ist eine Full Node notwendig da die Light Node den Tangle nicht speichert. Die Auswahl der zu validierenden Transaktionen kann die Full Node für eine Light Node erledigen.
Mit diesen zwei Rollen kann bereits das IOTA-Netzwerk in seinen Grundzügen nachvollzogen werden. Full Nodes kümmern sich um das Validieren und synchronisieren von Transaktionen. Light Nodes kümmern sich darum möglichst Platz sparend Wallet-Funktionen wie Transaktionen empfangen und senden zu übernehmen.
Der Coordinator (kurz auch COO) kümmert sich um das Validieren und Absichern von Transaktionen sowie des ganzen Tangles. Zusätzlich erleichert er Full Nodes die Arbeit in dem er die Menge der Transaktionen die Full Nodes überblicken müssen für die Validierung möglichst klein hält. Die große Frage ist, wie er das tut. Dazu muss aber erst verstanden werden wie der Tangle aufgebaut ist.
IOTA – der Tangle MUSS erwähnt werden
Die große Innovation für die IOTA bekannt ist, ist der Tangle. Zu Deutsch kann man das am besten mit Gewirr übersetzen. Bei einem genaueren Blick, ist es allerdings sehr ordentlich nach einem sich wiederholenden Muster organisiert. Das ist kein Wunder, denn das Grundprinzip dahinter ist ein mathematisches Konzept names gerichtete, azyklische Graphen kurz auch DAG.
Der Tangle selbst ist die Repräsentation der Transaktionen. Simpel gesagt ist es eine Menge von Punkten. Jeder Punkt zeigt dabei auf zwei vorhergehende Punkte. IOTAs Regeln sind simpel und klar: Eine jede Transaktion muss zwei vorhergehende Transaktionen validieren. Es ist nicht erlaubt, dass direkt oder indirekt Schleifen geschlossen werden.
Das Auswählen der Transaktionen für die Validierung funktioniert simpel. Jede Transaktion die bereits validiert wurde hat mindestens eine Transaktion die auf sie zeigt. Die Auswahl der Transaktionen für die Validierung funktioniert so, dass bei jeder Transaktion gewürfelt wird welchem Zeiger gefolgt werden soll – so lange bis man am Ende angelangt ist. Dieses Verfahren nennt man Random Walk.
Dies wird solange wiederholt bis man zwei unterschiedliche Transaktionen für die Validierung ausgewählt hat. Diese unvalidierten Transaktionen an der Spitze des Tangles heißen Tip.
Das Verfahren verwendet Zufallszahlen um die Auswahl der Tips so fair wie möglich zu halten.
Vorhang auf – Coordinator betritt die Bühne
Eines der am meist gebrauchten IOTA-Marketingsprüche ist, dass das System unendlich skalierbar sei. Diese Behauptung ergibt sich aus dem Fakt dass eine jede Transaktion zwei ältere Transaktionen validieren muss und dies angeblich das ganze Netzwerk schneller macht – da ja unter höherer Last auch mehr Transaktionen validiert werden. Das mehr Transaktionen mehr Validierungen bedeuten ist zweifelsfrei richtig! Aber …
Diese Behauptung geht davon aus, dass es genügend Full Nodes gibt um diese Transaktionsvalidierung abzuarbeiten und zusätzlich, dass diese über ausreichend schnelle Internetverbindungen für die Synchronisation besitzen. Das sind implizite Annahmen die man gerade in einem globalen, dezentralen Netzwerk wie IOTA nicht treffen kann. Das sind mitunter die Gründe weshalb sich meine Zehennägel aufrollen wenn ich „unendlich skalierbar“ lese. Ich kann das Marketing-Sprech aus PR-Sicht gut nachvollziehen, allerdings muss ich als Informatiker sagen, dass es nicht so einfach ist und kein System unendlich skalierbar ist.
Zu allem Überfluss bedeuten mehr Transaktionen einen rasch wachsenden Tangle. Damit hat jede Full Node durch die höhere Netzwerklast auch mit längeren Wegen für die Tip-Auswahl zu kämpfen. Kurz gesagt: Mit wachsendem Tangle wird die Tip-Auswahl immer langsamer.
Der Coordinator kümmert sich um dieses Problem. Im Abstand von einer Minute sendet der Coordinator eine Transaktion, den sg. Milestone. Eine jede Transaktion die direkt oder indirekt durch eine Milestone-Transaktion validiert wird, gilt als confirmed bzw. bestätigt. Für die Full Nodes bedeutet dass, dass sie sich um diese Transaktionen nicht mehr kümmern müssen und beim letzten Milestone mit der Suche nach einem Tip beginnen können.
Zusätzlich habe ich in einem Redit-Posts aufgeschnappt, dass daran gearbeitet wird den Random Walk gegen einen anderen Algorithmus auszutauschen. Das Repertoire der verfügbaren Algorithmen ist groß. Einfach gesagt, werden sie daran arbeiten, die Anzahl der Tips möglichst klein zu halten und dafür einen optimierten Suchalgorithmus verwenden. Für Interessierte: ein A*-Algorithmus mit optmierter Kosten- und Schätzfunktion würde sich dafür anbieten.
Neben dieser Aufgabe, kümmert sich der Coordinator auch darum den Tangle „beinander“ zu halten und dafür zu sorgen, dass sich kein immer weiter auseinander entwickelndes Netzwerk bildet. Das funktioniert indem Milestones den Full Nodes die Richtung für die Validierung vorgeben und alte Transaktionen, die den Tangle in die falsche Richtung wachsen lassen würden, unvalidiert verhungern müssen.
Technisch ist das ganze etwas komplizierter, da auch ein Validierungsgewicht berechnet wird um den Random Walk Wahrscheinlichkeiten vorzugeben. Nehmen Sie zum Beispiel an, sie hätten eine Transaktion auf die drei Zeiger zeigen. Es kann bei der Validierungsgewichtungsberechnung herauskommen, dass ein Zeiger mit einer 4/6 Wahrscheinlichkeit ausgewählt wird und die zwei andere Zeiger jeweils mit einer 1/6 Wahrscheinlichkeit. Für die Gewichtung wird auch ermittelt wie neu die Berechnung ist. In Verbindung mit dem Coordinator kann so eine Steuerung der Tangle-Entwicklung sicher gestellt werden.
IOTA – doch zentralisiert!?
Durch diese zentrale Rolle des Coordinators sprechen viele Kritiker davon, dass IOTA zentralisiert sei. Zusätzlich, auch um oben angesprochenen Probleme eines großen Tangles einzudämmen, führt die IOTA Foundation von Zeit zu Zeit Snapshots durch.
Der Sinn eines Snapshot ist den Tangle möglichst klein zu halten. Bei einem Snapshot werden alle Transaktionen und der sich daraus ergebene Graph gelöscht. Die Kontostände bleiben erhalten und können durch Reattach-Transaktionen wieder in den Tangle eingespielt werden.
Sowohl Coordinator wie auch Durchführung des Snapshots liegen zentral in den Händen der IOTA Foundation. Meiner Einschätzung nach wird sich das noch ändern und sowohl Snapshots wie auch Coordinator werden durch dezentralisierte Lösungen ersetzt. Aktuell bedeutet dies, dass die IOTA-Foundation die Kontrolle über essentielle Aspekte des IOTA-Netzwerks in ihren Händen hält.
Bei aller Kritik sollte man aber auch nicht vergessen, dass dies wegen eines der größten Features von IOTA nötig ist: Gebührenfreie Transaktionen. Zudem ist es möglich, Transaktionen zu erstellen die keine MIOTA verschieben. (Value 0 Transaktionen auch manchmal data transactions genannt)
Reattach und Promote
Mir sind immer und immer wieder Posts mit Problemen begegnet deren Lösung darin bestand zu reattachen. Bei der Recherche was denn das überhaupt ist, bin ich dann auch noch auf Promote-Transaktionen gestoßen.
Beides beschreibt Methoden um eine Transaktion im Tangle validiert zu bekommen, allerdings auf verschiedene Arten. Ein Reattach ist nichts anderes als eine neue Transaktion mit dem selben Inhalt in den Tangle noch einmal einzufügen. Das bedeutet, dass diese reattachte Transaktion zwei neue Vorgängertransaktionen validiert.
Eine Transaktion zu promoten bedeutet auch eine neue Transaktion zu erzeugen. Diese enthält aber nicht die selbe Information wie die nicht validierte Transaktion, sondern validiert diese und den letzten Milestone. Die Hoffnung ist, dass diese Promote-Transaktion dann von folge Transaktionen validiert wird und somit die ursprüngliche Transaktion indirekt auch validiert wird.
Conclusio
Ich hatte sehr viele Fragezeichen und unbeantwortete Fragen als ich meinen ersten Artikel IOTA – ein spannendes Durcheinander geschrieben habe. Die Punkte über die Energieeffizienz habe ich mit diesem Artikel zurück genommen.
Alles in allem steht IOTA in einer sehr frühen Phase bereits überraschend stabil da. Die Technologie bietet unglaublich viel Potential und ich werde gespannt an der Entwicklung dran bleiben.
Mich erinnert es trotzdem noch mehr an das frisch geschlüpfte Fohlen, welches erst noch zu dem mächtigen Mustang heranwachsen muss, der frei und ohne zentrale Kontrolle durch die Prärie streifen kann. Vielleicht ist diese Kontrolle noch notwendig damit es nicht von den Raubtieren da draußen gefressen wird – zentrale Kontrolle bleibt es dennoch.