Archiv Skalierung IOTA Teil 1 – Der Einstieg in das Thema Sharding

21. Apr’20

Übersetzung des Blogartikel von Autor Hans Moog, IOTA Foundation.

Hinweis: Sharding bezeichnet die Aufteilung einer Datenbank, daher ist in diesem Artikel oft von aufteilen oder splitten die Rede.


In den folgenden Blogbeiträgen werden einige der grundlegenden Ideen und Konzepte vorgestellt, die hinter einer neuen Sharding-Lösung für das IOTA-Tangle stehen. Wir werden erörtern, wie der vorgeschlagene Mechanismus funktioniert und warum bestimmte Entscheidungen beim Entwurf dieser Lösung getroffen wurden.

Obwohl dieses Thema noch erforscht wird und sich einige der Details im Laufe der Forschung ändern könnten, ist es dennoch reif genug, um offen diskutiert zu werden, zudem freuen wir uns auf Rückmeldungen.


Motivation

Eines der größten Probleme von DLT ist heute der begrenzte Durchsatz von Transaktionen pro Sekunde, den die Netzwerke verarbeiten können. Wenn die Nachfrage höher ist als die Verarbeitungskapazitäten, dann führt die Dynamik von “Angebot und Nachfrage” zu höheren Gebühren und längeren Bestätigungszeiten. Dies wiederum senkt die Nachfrage, indem es das Netzwerk für seine Benutzer etwas weniger “attraktiv” macht.

Diese Art der “Verwaltung” der Ressourcen eines Netzwerks funktioniert ziemlich gut, um das Netzwerk funktionsfähig zu halten, aber die dynamischen Gebühren sind ein sehr reales Problem für die Benutzerfreundlichkeit und machen es extrem schwierig, zuverlässige Anwendungen für die reale Welt darauf aufzubauen (siehe den jüngsten Zusammenbruch des MakerDAO-Systems, das auf Ethereum aufbaut).

Aufgrund seiner Gebührenfreiheit leidet IOTA offensichtlich nicht unter diesen schwankenden Kosten für die Ausstellung einer Transaktion. Dennoch haben IOTA-Nodes eine Obergrenze für Transaktionen pro Sekunde (TPS), die sie verarbeiten können. Wie wird IOTA also auf diese Unterschiede in Angebot und Nachfrage reagieren, ohne dass das Netzwerk zusammenbricht?

Lassen Sie uns zunächst einen Blick auf die Gründe für diese Einschränkungen werfen und untersuchen, wie andere Projekte dies angehen.


Gründe und Umgehungsmöglichkeiten für diese Einschränkung

Der Hauptgrund für diese Durchsatz-Beschränkung ist die Tatsache, dass jeder Node im Netzwerk jede einzelne Transaktion verarbeiten muss und dass die Hardware-Ressourcen jeder Node begrenzt sind. Um den Durchsatz zu optimieren, gibt es nur zwei Möglichkeiten:

  1. Delegieren Sie die gesamte Berechnung an einen kleineren Verbund von sehr leistungsfähigen Nodes (d.h. Hashgraph, EOS und so weiter …).
  2. Teilen Sie die Aufgaben auf und lassen Sie jeden Node nur eine Teilmenge der Gesamtarbeit ausführen.

Der erste Ansatz könnte zwar das Problem für eine Weile lösen, indem er den Durchsatz auf ein Niveau erhöht, das in naher Zukunft wahrscheinlich nicht überschritten wird, aber er löst das Problem selbst nicht wirklich. Mit zunehmender Akzeptanz werden die Netzwerke unweigerlich wieder mit den gleichen Einschränkungen konfrontiert werden. Ich neige daher dazu, diese Lösungen als Mikro-Optimierungen zu bezeichnen.

Der zweite Ansatz wird als Sharding bezeichnet und zeigt, wie beispielsweise Ethereum versucht, das Problem der Skalierbarkeit anzugehen. Anstatt eine einzelne Blockchain zu betreiben, plant man, 64 Blockchains parallel laufen zu lassen, wobei jeder Shard seine eigenen Validatoren hat. Diese Chains sind völlig unabhängig, können aber über eine weitere Chain interagieren, die alle Shards verbindet (die Beacon Chain).

Dies erhöht zwar in der Tat die Skalierbarkeit, hat aber dafür immer noch die gleichen Probleme mit der Obergrenze, wie viele Transaktionen jeder Shard verarbeiten kann. Dies erfordert daher den gleichen Mechanismus dynamischer Gebühren, um Angebot und Nachfrage für den Durchsatz zu regulieren. Auch wenn dieser Ansatz einer tatsächlichen Lösung näher kommt (weil wir einfach die Anzahl der Shards nach ein paar Jahren mit steigender Annahme erhöhen können), löst er immer noch nicht wirklich die Probleme der unvorhersehbaren Gebühren und Transaktionszeiten – er führt sogar einige neue Probleme ein.


Zusätzliche Probleme mit Shards

Da die Validatoren auf alle bestehenden Chains (einschließlich der Beacon Chain) aufgeteilt werden müssen, wird jeder Shard durch weniger Validatoren gesichert als bisher. Die Sicherheit des Systems wird folglich geringer sein als in einer nicht aufgeteilten Umgebung. Dieses Problem besteht bei jeder Sharding-Lösung, da die eigentliche Idee des Shardens darin besteht, die Arbeit unter den Validierern aufzuteilen.

Blockchains haben jedoch zusätzliche technologie-spezifische Probleme:

  • Der parallele Betrieb mehrerer Chains erfordert einen Konsens über die Anzahl der Shards hinweg und eine Änderung dieser Anzahl ist “on-the-fly” nicht möglich. Um zukunftssicher zu sein, ist es notwendig, das Netzwerk in mehr Shards aufzuteilen, als der aktuelle Durchsatz erfordert, was vom ersten Tag an zu einer verminderten Sicherheit führt. Es ist unmöglich, dass das Netzwerk organisch auf die wachsende Akzeptanz oder auf unterschiedliche Netzwerkbedingungen reagiert.
  • Da der Durchsatz in jedem Shard durch Systemparameter wie Blockgröße und Blockzeiten definiert ist, muss jeder Node bestimmte Hardware-Anforderungen erfüllen, was die Teilnahme von IoT-Geräten mit geringer Leistung am Netzwerk verhindert.
  • Da wir die Anzahl der Shards nicht willkürlich erhöhen können (irgendwann wird die Beacon-Chain überlastet), bietet diese Lösung auch keine wirklich unbegrenzte Skalierbarkeit mit der Anzahl der Nodes.

Diese traditionelle Art des Shardings (durch einfaches Ausführen mehrerer Instanzen der gleichen Technologie) bietet daher keine Antwort auf die Vision von IOTA.


IOTAs Vision

Die Vision von IOTA ist es, eine DLT-Plattform bereitzustellen, die automatisch mit der zunehmenden Verbreitung Schritt halten kann. Dies soll durch einen immer höheren Durchsatz erreicht werden, der mit der Anzahl der Nodes im Netzwerk skaliert. Gleichzeitig muss der verwendete Mechanismus flexibel und schnell genug sein, um auf Dinge wie Angebots- und Nachfrage-Schocks beim Netzwerk-Durchsatz zu reagieren, so dass das Netzwerk funktionsfähig bleiben kann, ohne dass die Nodes Mithilfe von Gebühren entscheiden müssen, welche Transaktionen verarbeitet werden sollen.

Wenn man bedenkt, wie Sharding-Lösungen heute funktionieren, scheint dies ein schwieriges Problem zu sein, das nicht leicht zu lösen ist, und IOTA hat folglich viel Kritik dafür erhalten, dass sie sich öffentlich zu diesen Zielen bekennt, ohne jemals zu verraten, wie dies erreicht werden soll.

Viele Menschen halten dies immer noch für ein unlösbares Problem und beschuldigen deshalb IOTA, Schlangenöl zu verkaufen, es gibt sogar ein Video, das scheinbar “beweist”, dass dieses Problem nicht gelöst werden kann (wir werden später noch einmal auf das beschriebene Problem zurückkommen).

Dieser Blog-Beitrag versucht nun endlich etwas Licht darauf zu werfen, wie IOTA diese Skalierbarkeit zu erreichen gedenkt.


Voraussetzungen für die Vision von IOTA

Bevor ich damit beginne, die neuen Konzepte in den späteren Teilen dieses Blogbeitrags vorzustellen, möchte ich einen kurzen Umweg machen und einige der Anforderungen diskutieren, da sie sich direkt auf bestimmte Designentscheidungen der vorgeschlagenen Skalierungslösung auswirken:

  • Die Lösung muss eine Form von Sharding beinhalten, da Mikro-Optimierungen die Probleme nur verzögern, anstatt sie zu lösen.
  • Die Lösung sollte Doppelausgaben (engl. double spending) verhindern, ohne sich auf eine komplizierte Form der Kommunikation zwischen den Shards zu verlassen (siehe das oben erwähnte Video).
  • Das Netzwerk sollte sich nur dann aufteilen, wenn es wirklich notwendig ist, wobei in Zeiten geringer Aktivität so viel Sicherheit des Systems wie möglich aufrechterhalten wird, es aber gleichzeitig in der Lage sein sollte, mit steigender Akzeptanz zu wachsen.
  • Das Sharding-Layout muss dynamisch genug sein, um sofort auf Veränderungen im Netzwerk reagieren zu können, ohne dass die Nodes miteinander “kommunizieren” müssen, um ein neues Sharding-Layout auszuhandeln, oder Gebühren verwenden zu müssen, um festzulegen, welche Transaktionen bevorzugt werden sollen (agent-centric  approach).
  • Das Sharding sollte eine “aussagekräftige Zuordnung” der realen Welt verwenden (d.h. geografische Kartierung) so dass Nodes, die nahe beieinander liegen, immer in der Lage sind, direkt miteinander zu kommunizieren, ohne eine komplizierte Form der Kommunikation zwischen den Shards verwenden zu müssen.
  • Die Nodes sollten in der Lage sein, individuell zu entscheiden, wie viele und welche Daten sie verarbeiten wollen, so dass wir ein heterogenes Netzwerk mit leistungsschwachen IoT-Geräten neben leistungsstärkeren Nodes haben können.
  • Die Nodes sollten in der Lage sein, sich frei zwischen Shards (mobile Nodes wie Autos) zu bewegen, ohne plötzlich riesige Datenmengen herunterladen und validieren zu müssen.


Schlussfolgerung

Aufgrund der gebührenfreien Natur von IOTA haben wir sehr konkrete, aber komplexe Anforderungen an unsere Sharding-Lösung, die uns daran hindert, bestehende Konzepte zu verwenden, daher müssen wir einen völlig anderen Ansatz finden, der wesentlich flexibler sein muss als die traditionellen Methoden des Shardings.

Quellen

https://medium.com/@hans_94488/scaling-iota-part-1-a-primer-on-sharding-fa1e2cd27ea1