Original by Hans Moog: https://medium.com/@hans_94488/scaling-iota-part-1-a-primer-on-sharding-fa1e2cd27ea1 (21.04.2020)
In den folgenden Blogbeiträgen werden einige der grundlegenden Ideen und Konzepte vorgestellt, die hinter einer neuen Sharing-Lösung(schieben/etwas verlegen) für den 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, und wir freuen 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 Benutzererfahrung und machen es extrem schwierig, darauf zuverlässige Anwendungen für die reale Welt aufzubauen (siehe den jüngsten Zusammenbruch des MakerDAO-Systems, das auf Ethereum aufbaut).
Aufgrund seiner Nullgebühren 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 Beschränkungen werfen und wie andere Projekte dies angehen.
Gründe und Umgehungsmöglichkeiten für diese Einschränkung
Der Hauptgrund für diese Durchsatzbeschränkung ist die Tatsache, dass jeder Knoten im Netzwerk jede einzelne Transaktion verarbeiten muss und dass die Hardwarekapazitäten der Knoten begrenzt sind. Um den Durchsatz zu optimieren, gibt es nur zwei Möglichkeiten:

- Delegieren Sie die gesamte Berechnung an einen kleineren Satz sehr leistungsfähiger Nodes (d.h. Hashgraph, EOS usw. …)
- Teilen Sie die Aufgaben auf und lassen Sie jeden Knoten 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 Blockkette laufen zu lassen, plant man, 64 Blockketten parallel laufen zu lassen, wobei jeder Shard seine eigenen Validatoren hat. Diese Ketten sind völlig unabhängig, können aber über eine weitere Kette, die alle Scherben verbindet (die Bakenkette), interagieren.
Dies erhöht zwar in der Tat die Skalierbarkeit, hat aber immer noch die gleichen Probleme mit einer Obergrenze dafür, 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 Scherben nach einigen Jahren mit steigender Annahme erhöhen können), so löst er dennoch nicht wirklich die Probleme der unvorhersehbaren Gebühren und Transaktionszeiten – er führt sogar einige neue Probleme ein.
Zusätzliche Probleme mit Sharding
Da die Entwerter auf alle bestehenden Ketten (einschließlich der Bakenkette) aufgeteilt werden müssen, wird jeder Scherben von weniger Entwertern als bisher gesichert werden. Die Sicherheit des Systems wird folglich geringer sein als in einer nicht abgeschirmten Umgebung. Dieses Problem besteht bei jeder Sharing-Lösung, da die eigentliche Idee des Shardens darin besteht, die Arbeit unter den Validierern aufzuteilen.
Blockketten haben jedoch zusätzliche technologiespezifische Probleme:
- Der parallele Betrieb mehrerer Ketten erfordert einen Konsens über die Anzahl der Scherben, und eine Änderung dieser Anzahl ist nicht „on-the-fly“ möglich. Um zukunftssicher zu sein, ist es notwendig, das Netzwerk in mehr Scherben 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 Knoten 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 Bakenkette überlastet), bietet diese Lösung auch keine wirklich unbegrenzte Skalierbarkeit mit der Anzahl der Knoten.
Diese traditionelle Art des Shardens (durch einfaches Ausführen mehrerer Instanzen der gleichen Technologie) bietet daher keine Antwort auf die Vision der IOTA.
IOTAs Vision
Die Vision von IOTA ist es, eine DLT-Plattform bereitzustellen, die automatisch mit der wachsenden Verbreitung Schritt halten kann, indem sie einen immer höheren Durchsatz bietet, der mit der Anzahl der Knoten im Netzwerk skaliert. Gleichzeitig muss der verwendete Mechanismus flexibel und schnell genug sein, um auf Dinge wie Angebots- und Nachfrageschocks beim Netzwerkdurchsatz zu reagieren, so dass das Netzwerk funktionsfähig bleiben kann, ohne dass die Knoten über Gebühren entscheiden müssen, welche Transaktionen verarbeitet werden sollen.
Wenn man bedenkt, wie Sharing-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 geben IOTA die Schuld am Verkauf von Schlangenöl, und 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 die IOTA diese Skalierbarkeit zu erreichen gedenkt.
Anforderungen an die Vision der 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 Scherbenbildung beinhalten, da Mikro-Optimierungen die Probleme nur verzögern, anstatt sie zu lösen
- Die Lösung sollte Doppelausgaben verhindern, ohne sich auf eine komplizierte Form der Kommunikation zwischen den Shards zu verlassen (siehe das oben erwähnte Video)
- Das Netzwerk sollte nur dann sharren, wenn es wirklich notwendig ist, wobei in Zeiten geringer Aktivität so viel Sicherheit des Systems wie möglich aufrechterhalten wird, aber gleichzeitig mit steigender Akzeptanz wachsen kann.
- Das Sharding-Layout muss dynamisch genug sein, um sofort auf Veränderungen im Netzwerk reagieren zu können, ohne dass die Knoten miteinander „reden“ müssen, um ein neues Sharding-Layout auszuhandeln, oder Gebühren verwenden müssen, um festzulegen, welche Transaktionen bevorzugt werden sollen (agentenzentrierter Ansatz).
- Das Sharding sollte ein „bedeutungsvolles Mapping“ der realen Welt verwenden (d.h. geographisches Mapping), so dass Knoten, 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 Knoten sollten in der Lage sein, individuell zu entscheiden, wie viele und welche Daten sie verarbeiten wollen, so dass wir ein heterogenes Netzwerk mit IoT-Geräten mit geringer Leistung neben leistungsfähigeren Knoten haben können.
- Die Knoten sollten in der Lage sein, sich frei zwischen Shards (mobilen Knoten wie Autos) zu bewegen, ohne plötzlich riesige Datenmengen herunterladen und validieren zu müssen.
Schlussfolgerung
Aufgrund des gefühllosen Charakters von IOTA haben wir sehr konkrete, aber komplexe Anforderungen an unsere Skalierungslösung, die uns daran hindert, bestehende Konzepte zu verwenden, und wir müssen einen völlig anderen Ansatz finden, der wesentlich flexibler sein muss als die traditionellen Methoden des Shardens.
Der 2. Teil dieses Blogbeitrags wird eine schrittweise Einführung in dieses neue Sharding-Konzept geben (von den ersten abstrakten Ideen bis zu einer konkreten Lösung).
Schreibe einen Kommentar