Tangle

IOTA funktioniert nicht nach der herkömmlichen Blockchain-Technologie, sondern arbeitet mit dem innovativen Konzept eines „Tangle“, dt. Wirrwar. Das Tangle ist das verteilte Hauptbuch (engl. Distributed Ledger) in IOTA, es enthält die aktuelle Transaktionshistorie. Der Tangle ist die einzige Quelle der Wahrheit, jeder Client auf der ganzen Welt kann gültige Transaktionen an eine Node senden, diese Transaktion wird im gesamten Netzwerk repliziert, um diese einzige Version der Wahrheit zu bilden.


Die IOTA-Architektur umfasst die folgenden grundlegenden Komponenten:

  • Clients: Benutzer eines IOTA-Netzwerks (Wallets, Apps usw.), die Transaktionen an Nodes senden, um sie an den Tangle anzuhängen.
  • Nodes: Verbundene Geräte, die für die Gewährleistung der Integrität des Tangle verantwortlich sind, diese Geräte bilden ein IOTA-Netzwerk.
  • Tangle: Eine angehängte Datenstruktur (das öffentliches Ledger, Hauptbuch), welche auf allen Nodes in einem IOTA-Netzwerk repliziert wird. Alle Daten im Tangle werden in Objekten gespeichert, die als Transaktionen bezeichnet werden. Wenn eine Transaktion an das Tangle angehängt ist, kann sie nicht geändert werden, sie ist unveränderlich.


Mathematisch ausgedrückt ist der Tangle ein Directed Acyclic Graph - DAG (dt. gerichteter azyklischer Graph).

  • eine Menge von Transaktionen ist durch Pfade verbunden, dies ist ein Graph
  • jeder dieser Pfade besitzt eine eindeutig festgelegte Laufrichtung, damit ist es ein gerichteter Graph
  • lässt sich niemals ein Pfad finden, der zu seinem Ausgangspunkt zurückkehrt, ist der Graph azyklisch (im Kreis laufenden Pfade wären dagegen zyklisch)

grün = bestätigt (Konsens)   /   weiß = unbestätigt   /   grau = neu angehängt (Tips)


Auf dem obigen Bild können wir sehen, wie der Tangle aussieht. Die Transaktionen sind in dieser Darstellung des Graphen als Quadrate dargestellt und die Pfeile (Edges genannt) zwischen den Transaktionen sind Referenzen. Auf der linken Seite des Graphen befinden sich die älteren Transaktionen, während auf der rechten Seite des Graphen die neu angehängten Transaktionen zu finden sind.  

Transaktionen validieren bis zu acht vorherige Transaktion, sie können sich in einem der drei verschiedenen Zustände befinden: 

  • Bestätigt (grün): Transaktionen gelten als bestätigt, wenn sie direkt oder indirekt von allen Tips (grau) referenziert wurden, bei diesen Transaktionen besteht Konsens.
  • Schwebend/unbestätigt (weiß): Dies sind Transaktionen, die darauf warten, bestätigt zu werden.
  • Tip (grau): Tips sind neu angehängte Transaktionen, die noch nicht von anderen Transaktionen referenziert wurden.



Transaktionsprozess

Stark vereinfacht läuft der Transaktionsprozess in fünf Schritten ab:

1)   Transaktion erstellen: Mit Empfänger Adresse, Absender, Value und optional mit einer Nachricht.

2)   Signieren: Mittels des privaten Schlüssels (Seed) wird die Transaktion signiert, dies bestätigt, dass man selbst der Eigentümer der erfolgten Eingaben ist.

3)   Tip-Auswahl:  Ein Node wählt bis zu acht zufällig unbestätigte Transaktionen (Tips) aus, die in der neuen Transaktion referenziert werden.

4)   Proof of Work: Dieser wird nur für den Spamschutz und nicht für den Konsensus benötigt. Es muss nun jedenfalls etwas Arbeit verrichtet werden und eine kleine Rechenaufgabe (Nonce) gelöst werden. Zudem werden die dir zugewiesenen Tips überprüft, ob der Account ausreichend gedeckt ist oder es widersprechende Transaktion gibt. 

5)   Ausführung: Die fertige Transaktion wird abschließend an eine Node gesendet, der diese dann im Netzwerk an alle Nachbarn (andere Nodes) verteilt. Jemand anderes wird nun kommen und wiederum deine Transaktion in der „Tip-Auswahl“ zugewiesen bekommen, diese überprüfen und somit deine Transaktion bestätigen.


Die Blockchain-Datenstruktur

Die Blockchain-Datenstruktur besteht aus einer Kette von sequentiellen Blöcken, wobei jeder Block eine begrenzte Anzahl von Transaktionen enthält. Folglich können neue Transaktionen nur an einer Stelle angehängt werden: Einem Block am Ende der Kette. Aufgrund dieser Einschränkung kommt es in Blockchain-Netzwerken häufig zu langsamen Bestätigungszeiten. Diese Einschränkung wird als Blockchain-Bottleneck bezeichnet.



Die Tangle-Datenstruktur

Die Tangle-Datenstruktur ist ein gerichteter azyklischer Graph (DAG), bei dem jede Transaktion an bis zu acht vorhergehende Transaktionen angehängt ist. Anstatt auf einen einzigen Ort zum Anhängen neuer Transaktionen beschränkt zu sein, können Sie Transaktionen überall im Tangle anhängen, daraus ergibt sich eine chaotische Ordnung in der sämtliche Transaktionen parallel ablaufen. Diese Funktionsweise wird eine nach oben hin offener Skalierung ermöglichen, da mit steigender Anzahl der Transaktionen auch die Bestätigungsraten ansteigen, statt sich genau gegenläufig zu entwickeln, wie es derzeit bei den klassischen Blockchains der Fall ist.


Tangle Datenfluss

Jede Komponente kann als Blackbox betrachtet werden, und die Interaktion zwischen ihnen erfolgt über Ereignisse. Genauer gesagt, beginnt der Datenfluss entweder mit den GossipMessages oder der MessageFactory. Dann kümmert sich der Parser um die Validierung der Struktur der Nachrichten. Die Storage-Komponente speichert die Nachrichten sowie deren Metadaten in der DB und erstellt die Tangle-Struktur. Der Solidifier sorgt dafür, dass alle fehlenden Nachrichten angefordert werden, und stellt sicher, dass das Tangle monoton in Bezug auf die Zeitstempel der Nachrichten wächst.

Der Scheduler plant Nachrichten ein, die dann in den Booker gehen und gebucht werden. Wenn eine Nachricht eine Transaktion als Nutzlast enthält, führt der Booker eine Reihe von Prüfungen durch (z. B. Validität der Signatur, Validität des Saldos, Doppelausgaben) und bucht die Transaktion in die entsprechende Realität. Der OpinionFormer ermittelt die Message- und Payload-Meinung mit FCoB und führt ggf. die Abstimmung über FPC (Statements) durch. Abschließend werden je nach Ergebnis der Nachrichtenmeinung und dem vergangenheitsbezogenen Status der Nachricht, gemochte (liked) Nachrichten zum Weak bzw. Strong Tip Set hinzugefügt.