scaling iota deutsch 2

Original by Hans Moog: https://medium.com/@hans_94488/scaling-iota-part-2-untangling-the-tangle-3a6ed2303b3c (21.04.2020)

Um die im ersten Teil dieses Blogbeitrags erwähnten Probleme zu lösen, brauchen wir eine völlig andere Form des shardings.

In den folgenden Abschnitten werden wir eine schrittweise Einführung in die Konzepte geben, die es IOTA ermöglichen, die Anzahl der Knoten unendlich zu skalieren, ohne die Sicherheit in den frühen Phasen der Einführung zu gefährden oder in den Durchsatzanforderungen in „Versorgungsschocks“ zu zerfallen.

Der Tangle shards (Scherbt) automatisch

Der Tangle ist nicht durch eine Blockgröße begrenzt, und jeder kann jederzeit neue Transaktionen anhängen, ohne sich auf etwas anderes als die beiden vorangegangenen Ereignisse, auf die es sich bezieht, verlassen zu müssen. Das bedeutet, dass das Tangle im Wesentlichen nie voll ist und eine beliebige Anzahl von Transaktionen enthalten kann.

Wenn der Netzwerkdurchsatz die Verarbeitungskapazitäten der Knoten übersteigt, sehen und verarbeiten die Knoten unterschiedliche Transaktionen, je nachdem, wo im Netzwerk sie sich befinden, und sehen daher auch einen unterschiedlichen Tangle. Knoten mit ähnlichen Verarbeitungsfähigkeiten, die nahe beieinander liegen, werden eine ähnliche Wahrnehmung haben.

Jeder Knoten wird seinen jeweiligen Teil der DAG validieren, der aus einer Teilmenge aller vorhandenen Transaktionen besteht. Dies ist die eigentliche Definition von Sharding: „Teilen Sie die Aufgaben auf und sorgen Sie dafür, dass jeder Knoten nur eine Teilmenge der Gesamtarbeitsmenge durchführt.

Das folgende Bild zeigt, wie ein solches natürlich zersplittertes Gewirr aussehen würde (die Hälfte der Transaktionen wird von der Hälfte der Knoten verarbeitet):

Hard Netzwerk im Tangle

Dieser Aufspaltungsprozess kann rekursiv erfolgen, so dass z.B. Scherben 1 in weitere Scherben zerfällt, wenn die Knoten nicht in der Lage sind, alle verbleibenden Transaktionen zu verarbeiten. Die verschiedenen Netzsegmente werden zu unterschiedlichen Zeiten, je nach dem tatsächlichen Durchsatz, mehr oder weniger augenblicklich aufgeteilt, ohne dass komplizierte Verhandlungen darüber geführt werden müssen, wann und wo aufgeteilt werden soll. Es hängt einfach davon ab, welche Transaktionen die Knoten verarbeiten können (agentenzentrierter Ansatz).

Sobald die Last sinkt, sind die verschiedenen Tangle theoretisch (siehe Probleme unten) in der Lage, wieder miteinander zu verschmelzen, was zu einem System führt, das in der Lage ist, dynamisch auf unterschiedliche Netzwerkbedingungen und wachsende Akzeptanz zu reagieren.

Probleme mit diesem Ansatz

Diese Lösung ist zwar extrem einfach und erlaubt es dem Netzwerk theoretisch, auf eine beliebige Anzahl von Transaktionen pro Sekunde zu skalieren, sie hat aber auch einige sehr ernste Probleme:

  1. Die Knotenpunkte haben keine Vorstellung davon, für welchen Teil des Gewirrs sie verantwortlich sind. Folglich wäre es für die Benutzer schwierig zu wissen, welchen Knoten sie wählen müssen, wenn sie versuchen, auf ihre Gelder zuzugreifen.
  2. Es wird für die verschiedenen Scherben schwierig, miteinander zu interagieren, da es keine objektive Wahrnehmung darüber gibt, welche Scherben überhaupt existieren.
  3. Da die verschiedenen Tangle zwar die gleiche Geschichte, aber nicht die gleichen Prüfer haben, könnte man Gelder, die man vor der Teilung erhalten hat, doppelt ausgeben, und zwar für jeden Scherben getrennt – siehe Abbildung:

sharding Netzwerk iota Problem

Dieses Problem der doppelten Mittelverwendung ist ziemlich schwerwiegend, da es sogar verhindert, dass die Verwicklungen wieder zusammenfließen (sobald die Belastung sinkt), was das volle Potenzial der Lösung untergräbt.

Der Grund für diese Probleme liegt jedoch nicht in der Struktur der DAG selbst (wie in diesem Video von RADIX behauptet), sondern in der Tatsache, dass das Knäuel im Wesentlichen völlig unkontrolliert und zufällig zersplittert.

Lösung der genannten Probleme

Um diese Probleme zu lösen, müssen wir einen Weg finden, wie die Knoten auf nicht-zufällige und deterministische Weise zersplittert werden können. Das bedeutet, dass wir im Wesentlichen einen Mechanismus finden müssen, der es uns ermöglicht, Knoten und ihre Transaktionen einem bestimmten Ort im zersplitterten Netzwerk zuzuordnen.

Um dies zu erreichen, bringen wir jeden Knoten und jede Transaktion dazu, eine Markierung zu tragen, die definiert, zu welchem Scherben sie gehören (noch bevor sich irgendwelche Scherben entwickeln). Wenn die Notwendigkeit einer Aufspaltung entsteht, spaltet sich die DAG auf und der Ledger-Zustand teilt sich mit ihr.

Schauen wir uns das gleiche Beispiel an, aber diesmal mit jeder Transaktion, die eine Markierung (blau oder rot) trägt:

sharding iota Netzwerk Lösung

Anfänglich sind die Transaktionen der verschiedenen Scherben „verschränkt“, aber nach der Aufspaltung des Gewebes werden die roten Knoten nur rote Salden und Transaktionen verfolgen und die blauen Knoten nur ihren jeweiligen Anteil. Dieser einfache Mechanismus beseitigt die Möglichkeit, alte Gelder doppelt auszugeben, ohne eine komplizierte Form der Kommunikation zwischen den Scherben einzuführen. Jede Scherbe hat eine bestimmte Zuständigkeit, für die er verantwortlich ist, und ein Benutzer, der versucht, blaue Gelder in den roten Scherben auszugeben, wird einfach ignoriert. Dieser Mechanismus wird als staatliches Sharding bezeichnet.

In dem Beispiel haben wir Farben verwendet, aber die Markierungen sind eigentlich nur Zahlen, die durch eine Bitmaske dargestellt werden können, die es dem Gewirr erlaubt, beliebig oft zu sharpen (eine 64-Bit-Markierung würde es uns zum Beispiel erlauben, mehr als 9 Fünflinge zu erzeugen).

Die Scherben-Markierung wird so etwas wie die Scherben-DNA einer Transaktion, die alle Informationen enthält, die sie benötigt, um ihre zukünftige Position in einer erwachsenen DAG zu bestimmen. In seinem kindlichen Zustand wird diese Information latent vorhanden sein, aber sie wird es dem Tangle ermöglichen, zuverlässig zu sharpen, sobald der Bedarf entsteht.

Da die Ledger-Zustände der beiden Zweige niemals in Konflikt geraten können, können diese Scherben jetzt sogar zu einem späteren Zeitpunkt, wenn die Belastung sinkt, wieder zusammenfließen.

Eine logische Überlagerungskartierung der „realen Welt

Die Scherbenmarkierungen lösen alle oben genannten Probleme, aber darüber hinaus geben sie uns auch ein sehr leistungsfähiges Werkzeug an die Hand, mit dem wir ein Scherbenlayout entwerfen können, das die reale Welt als eine Art logisches Overlay-Mapping widerspiegelt, was letztendlich bedeutet, dass wir den Zahlen, die die Scherbenmarkierungen darstellen, eine gewisse Bedeutung geben können.

Da wir ein Protokoll für das Internet der Dinge entwerfen, macht es sehr viel Sinn, eine geographische Kartierung zu verwenden, bei der die Scherbenmarkierungen in bestimmte Koordinaten auf diesem Planeten übersetzt werden. Auf diese Weise werden Knoten, die physisch nahe beieinander liegen, Teil desselben Scherbens sein.

Auf diese Weise werden nicht nur die Netzwerklatenzen innerhalb eines Shards reduziert, sondern auch die Kommunikation zwischen den Shards auf ein absolutes Minimum reduziert, da die meisten wirtschaftlichen Aktivitäten lokal stattfinden:

  • Ein Auto kauft Strom von einer Ladestation in der Nähe
  • Die Leute kaufen Pizza in der Pizzeria um die Ecke
  • und so weiter …

Diese geographische Überlagerungskartierung ist daher eine sehr gute Annäherung an die wirtschaftlichen Beziehungen in einer bestimmten Region.

Darüber hinaus ist diese Verwendung einer geographischen Kartierung eine gute Möglichkeit, mit großräumigen Netzwerkspaltungen umzugehen. Wenn ein Netzwerksegment z.B. aufgrund von Dingen wie dem Dritten Weltkrieg offline geht, dann kann niemand chinesische Gelder in den USA ausgeben und umgekehrt. Die beiden getrennten Netzwerke haben daher eine höhere Chance, wieder zusammenzuschließen, sobald die Spaltung aufgelöst ist.

Wenn die Scherbenmarkierungen alle genannten Probleme lösen … sind wir dann fertig? Noch nicht, noch nicht! Es gibt noch einige Probleme, die gelöst werden müssen:
Bevor wir Scherbenmarkierungen einführten, scherten die Knoten automatisch auf der Grundlage ihrer eigenen Verarbeitungsmöglichkeiten. Dieser Mechanismus macht jedoch keinen Sinn mehr, da wir versuchen, die Knoten entsprechend ihrer Zugehörigkeit zu einer bestimmten Jurisdiktion zu sharpen.

Die Knoten müssen daher eine Form von Konsens darüber haben, wann und wo sie gesplittet werden sollen. Dies ist ein kniffliges Problem, zumal die Knoten völlig unterschiedliche Verarbeitungsfähigkeiten haben und daher auch unterschiedliche Auffassungen darüber haben, wann der Zeitpunkt zum Teilen gekommen ist.

Das Gewirr entwirren

Da wir die Mechanismen einfach halten wollen und nicht noch einen weiteren Konsensmechanismus über das Gewirr hinaus einführen wollen, müssen wir einen anderen Ansatz finden, um mit diesem Problem umzugehen.

Wenn wir uns die Scherbenmarkierungen anschauen und was es eigentlich „bedeutet“, für jeden Scherben getrennte Untermarkierungen zu haben, dann erkennen wir ziemlich schnell, dass es uns genau einen Vorteil bringt: Die Knoten, die verarbeiten, d.h. der rote Scherben, haben eine Möglichkeit, nur die roten Transaktionen zu identifizieren, herunterzuladen und zu verarbeiten, ohne dass sie mit Transaktionen von anderen Scherben verstrickt werden.

Wenn der einzige Zweck der getrennten Unter-Dreiecke darin besteht, zusammenhängende Transaktionen zu trennen, dann können wir dasselbe erreichen, indem wir die Spitzenauswahl wie folgt modifizieren:

Wenn wir eine neue Transaktion mit einer Scherbenmarkierung X anhängen, dann wählen wir eine Spitze als Zweig, der eine Scherbenmarkierung Y hat, wobei Y ≤ X und einen Stamm, der eine Scherbenmarkierung Z hat, wobei Z ≥ X.

Was wir am Ende erhalten, ist eine DAG, die entsprechend den Markierungen im Gewirr vorverteilt ist. Wenn wir dem referenzierten Zweig folgen, können wir Transaktionen mit einer gleichen oder kleineren Markierung entdecken, und wenn wir dem Stamm folgen, können wir Transaktionen mit einer gleichen oder höheren Markierung entdecken – siehe Bild (mit Farben anstelle von Zahlen für die Markierungen):

Lösung von Tangle sharding iota

Auch wenn die Grafik nicht mehr in verschiedene Zweige aufgeteilt ist, können wir immer noch Transaktionen, die gleiche Marker tragen, auf die gleiche Weise identifizieren, überprüfen und verfestigen, als ob sie tatsächlich aufgeteilt wären.

Beim Verfestigen des Gewirrs hören die Knoten auf, die fehlenden Transaktionen abzufragen, sobald sie eine Markierung erreichen, an der sie nicht interessiert sind, und betrachten diese Transaktionen einfach als verfestigt. Da der „blaue Ledger-Zustand“ nur von „blauen Transaktionen“ betroffen sein wird, hat das Ignorieren der roten Transaktionen keine nachteiligen Auswirkungen auf einen blauen Knoten.

Flüssigkeitsscherben

Die beschriebene Art und Weise, das Gewirr zu entwirren, befreit nicht nur von der Notwendigkeit, einen Konsens darüber zu erzielen, wann und wo gespalten werden soll, sondern gibt den Knotenpunkten auch die völlige Freiheit zu wählen, an welchem Teil der resultierenden DAG sie interessiert sind und wie viel der DAG sie sehen und verarbeiten wollen, ohne dass sie ein vorgegebenes Scherbenlayout benötigen.

IoT-Bausteine mit beschränkten Ressourcen können einen kleineren Teil des DAG überwachen als leistungsfähigere Knoten. Die Scherben sind daher nicht mehr isolierte Datenblöcke, sondern kontinuierliche Regionen, wobei die Knoten in der Lage sind, verschiedene Teile je nach ihrem Interesse (Standort in der realen Welt) zu validieren – siehe Bild:

knoten sharding iota
Die grünen Kästchen stellen Knoten dar, die unterschiedliche „Standorte“ und unterschiedliche Beobachtungsradien haben.

Beispiel: Eine Person, die zwischen Ost- und West-Berlin lebt, könnte sich dafür entscheiden, der Hälfte von Ost- und der Hälfte von West-Berlin zu „folgen“, während eine Person, die im Zentrum von West-Berlin lebt, sich dafür entscheiden könnte, stattdessen nur West-Berlin zu folgen.

Wir sind auch in der Lage, durch Veränderung des Beobachtungsradius die Größe der überwachten Scheibe entsprechend den Durchsatzanforderungen im Netzwerk anzupassen.

Beispiel: Knoten in einer Region mit sehr geringer wirtschaftlicher Aktivität könnten es sich leisten, eine viel größere „Scheibe“ der DAG zu überwachen als Knoten, die in einem dicht besiedelten Gebiet mit relativ mehr Transaktionen operieren.

Durch die Verwendung einer Prioritätswarteschlange für die empfangenen Transaktionen – die die empfangenen Transaktionen nach ihrer Entfernung vom Standort eines Knotens im Netzwerk sortiert – verringern die Knoten automatisch ihren Beobachtungsradius, wenn sie überlastet werden, und filtern Transaktionen von zu weit entfernten Knoten heraus. Sie werden daher sofort auf unterschiedliche Durchsatzanforderungen reagieren, ohne dass sie ein neues Sharing-Layout neu verhandeln oder Gebühren verwenden müssen, um zu entscheiden, welche Transaktionen ausgeführt werden sollen. Die Lösung wird agentenzentriert und ermöglicht es uns, sofort auf unterschiedliche Belastungen im Netzwerk zu reagieren.

Schlussfolgerung

Wir haben ein paar sehr einfache Änderungen an der Funktionsweise des Gewirrspiels vorgenommen. Diese Änderungen ermöglichen es uns, die Transaktionen in der DAG zu entwirren und sie nach ihrer Beteiligung an den entsprechenden Scherben zu gruppieren.

Anstatt einfach viele Verwicklungen parallel laufen zu lassen (wie bei Blockchains), erlaubt uns diese neue Art des flüssigen Scherbens, weiterhin ein großes kontinuierliches Gewirr zu verwenden, das sich über die ganze Welt erstreckt und immer noch in der Lage ist, eine beliebig große Anzahl von Transaktionen pro Sekunde zu verarbeiten.

Am Anfang, wenn die Akzeptanz noch gering ist, werden die meisten Knoten höchstwahrscheinlich alle Transaktionen sehen und verarbeiten, aber sobald die Akzeptanz wächst und die Durchsatzanforderungen die Verarbeitungskapazitäten der Knoten übersteigen, werden wir sehen, wie die Knoten ihren Wahrnehmungsradius langsam verringern, um die höhere Last zu bewältigen.

Im 3. Teil dieses Blogbeitrags, der demnächst veröffentlicht wird, werde ich erklären, wie Transaktionen zwischen entfernten Scherben funktionieren werden und wie ein kontinuierliches Gewirr es uns ermöglicht, einen ähnlichen Mechanismus wie eine Bakenkette zu implementieren, jedoch ohne Bakenkette, wodurch eine echte „unendliche“ Skalierbarkeit (mit der Anzahl der Knoten) erschlossen wird.

 

Von admin

Ein Gedanke zu „Skalierung IOTA Teil 2 – Das Gewirr entwirren (Untangling the Tangle)“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.