iaremenko - stock.adobe.com
Wie Sharding das Skalierungsproblem von Blockchain löst
Ein Hauptproblem bei der Blockchain-Technologie ist ihre begrenzte Skalierbarkeit. Durch Aufteilung der Daten auf Knoten und Shards lässt sich eine Lösung finden.
Die Blockchain-Technologie hat die Art und Weise revolutioniert, wie Unternehmen Daten speichern und verteilte Transaktionen ausführen. Sogar in öffentlichen Netzwerken kann Blockchain sichere, zuverlässige und verifizierbare Aufzeichnungen gewährleisten, die für alle Teilnehmer zugänglich sind.
Aber die Blockchain-Technologie weist auch eine bedeutsame Begrenzung auf, und das ist ihre Skalierbarkeit. In dem Maße, wie die Zahl der Transaktionen anwächst, wird das System langsamer, teurer und langfristig weniger zuverlässig.
Eine Methode, das Skalierungsproblem anzugehen, besteht im so genannten Sharding, einem Prozess, der die Daten in gut verwaltbare Stücke (Chunks) aufspaltet, die über verschiedene Nodes verteilt werden. Blockchain-Sharding oder das Aufteilen von Blockchains wird bereits für private Blockchain-Netzwerke benutzt. Aber in öffentlichen Netzwerken zeigt Sharding noch mehrere Schwachpunkte, die man angehen muss, bevor öffentliche Systeme effektiv skaliert werden können.
Das Blockchain-Dilemma
Bei Blockchain handelt es sich um eine Distributed-Ledger-Technologie, die Transaktionen zwischen einem oder mehreren Teilnehmern aufzeichnet. In einer traditionellen Konfiguration wird der Ledger (Konto- oder Hauptbuch) zwischen mehreren Nodes verteilt, wobei jeder Knoten eine komplette Kopie behält. Die Blockchain zeichnet jede Transaktion in chronologischer Reihenfolge im Ledger auf und synchronisiert und bewertet dann die Transaktionen, die transparent und nachvollziehbar über alle Nodes hinweg bleiben.
Mit der Anzahl der Transaktionen wächst auch die Größe des Ledgers, was dazu führt, dass mehr Daten in jedem Knoten verarbeitet und gespeichert werden. Werden weitere Nodes hinzugefügt, vergrößert sich die Problematik, weil mehr Zeit zur Verifizierung der Prozesse benötigt wird. Weil jeder Knoten alle Transaktionen nachvollziehen muss, lässt es sich nicht vermeiden, dass die Anwender mit Performance- und Zuverlässigkeitsproblemen konfrontiert werden: Die Latenzen nehmen zu, der Durchsatz nimmt ab und die Speicherkosten steigen an.
Es ist mithin offensichtlich, dass es einen besseren Ansatz braucht, um öffentliche Blockchain-Systeme skalieren zu können. Blockchain-Sharding gehört zu den populärsten alternativen Ansätzen. Es bietet eine Methodologie, um Workload-Prozesse und Datenspeicher auszubreiten, so dass kein Knoten mehr dazu gezwungen ist, mit der ganzen transaktionalen Last zurecht zu kommen.
Stattdessen werden die Daten auf verschiedene Behälter (Buckets) aufgeteilt, wobei jeder Node einen bestimmten Teil (Partition) aufnimmt. Auf diese Weise verarbeitet und speichert ein Knoten nur die Transaktionen, die mit dieser Partition oder diesem Shard verbunden sind, und zu dem der Node gehört.
Eine Strategie für Blockchain-Sharding
Das Sharding-Konzept hat seine Wurzeln in Datenbank-Systemen, die die Daten über mehrere Server hinweg verteilen, um die Transaktionsprozesse zu beschleunigen. In ähnlicher Weise können die Blockchain-Prozesse auf mehrere Nodes für ein paralleles Ausführungsmodell verteilt werden, das die Performance verbessert, während gleichzeitig die Menge an Daten verringert wird, die jeder Knoten verarbeiten und speichern muss. Obwohl die Art und Weise, wie Transaktionsdatenblöcke bewertet werden, verändert werden muss, besteht das Resultat in größerem Durchsatz und geringeren Latenzen.
Der genaue Ansatz bei Shard Data unterscheidet sich von einer Anwendung zur nächsten, wobei es keinen Konsens hinsichtlich der besten Strategie gibt. Selbst dann, wenn die zugrunde liegenden Konzepte die gleichen sind. Jeder Knoten ist einem individuellen Shard zugeordnet und er ist verantwortlich für die Überprüfung der Transaktionen in diesem Shard, weniger jedoch für die Überprüfung aller Transaktionen über das gesamte Blockchain-Netzwerk hinweg.
Gleichzeitig sorgt Sharding auch für transaktionale Redundanz, um die Gültigkeit und die Zuverlässigkeit der Daten zu garantieren. Nachdem die Daten in mehrere Shards aufgeteilt sind, wird jeder Shard über mehrere Nodes hinweg verteilt. Wenn ein Blockchain-Netzwerk zum Beispiel 1.000 Knoten unterstützt, könnten die Daten in zehn Shards partitioniert werden, wobei jedes Shard an 100 Knoten zugeteilt ist. Auf diese Weise verarbeitet und speichert jeder Knoten nur ein Zehntel der Daten, aber die Daten werden immer noch über 100 Knoten verifiziert.
Der Vorteil von Blockchain-Sharding liegt deutlich auf der Hand: Transaktionen können parallel bearbeitet werden, und pro Sekunde sind mehr Transaktionen möglich – zehn Mal so viel wie bei einem traditionellen Blockchain-Ansatz. Und gleichzeitig sind die Verarbeitungs- und Speicherkosten viel niedriger, weil jeder Knoten nur ein Zehntel der Daten verarbeitet.
Vier Probleme bei Sharding
Sharding kann eine wirksame Strategie für private Blockchain-Installationen in Unternehmen sein, aber der Einsatz von Blockchain-Sharding für ein öffentliches Blockchain-Netzwerk ist nicht so einfach. Eine der größten Herausforderungen ist die Kommunikation zwischen den Shards.
Wenn Knoten einem Shard zugeordnet sind, sehen beteiligte Anwender und Applikationen den Shard als ein unabhängiges Blockchain-System und nicht als Teil eines größeren Systems. Es kann schwierig sein, die Kommunikation zwischen Shards einzurichten: Es erfordert eine besondere Enwicklungsanstrengung, einen Kommunikationsmechanismus einzurichten. Sogar mit einem solchen Mechanismus kann die Kommunikation zwischen Shards zu einem größeren Overhead führen, wodurch einige der Vorteile von Sharding an Gewicht verlieren.
Sharding kann auch die Gleichgewichte, die mit einem mehr traditionellen Blockchain-Ansatz einhergehen, unterlaufen. Mit Sharding laden die Anwender nicht länger den ganzen Transaktionsverlauf herunter und bewerten ihn, so dass sie nicht mehr sicher über die Zuverlässigkeit und Unveränderbarkeit sein können, so wie sie eigentlich durch die miteinander verkettete Abfolge der traditionellen Blöcke vorgegeben ist.
Ohne diese Schutzmaßnahmen fällt es Hackern leichter, ein Shard zu manipulieren oder zu kontrollieren – eine Situation, die als Single-Shard-Takeover bekannt ist und die zu Datenverlusten oder kompromittierten Daten führen kann.
Ein anderes Problem bei Blockchain-Sharding betrifft die Themen Übereinstimmung und Verifizierung. Verschiedene Blockchain-Ansätze beruhen auf verschiedenen Algorithmen für die Übereinstimmung zwischen den Knoten. Zwei übliche Algorithmen sind Proof of Work (PoW) und Proof of Stake (PoS). Beide bestimmen, wie Transaktionen über einem verteilten Netzwerk verifiziert werden, aber sie erfüllen diese Aufgabe auf verschiedene Art und Weise.
Obwohl ein Vergleich dieser Algorithmen nicht Thema dieses Artikels ist, muss man dennoch wissen, dass beide darüber entscheiden können, wie Sharding umgesetzt wird. Im allgemeinen wird PoS als eine bessere Lösung für Sharding gegenüber PoW betrachtet, das von manchen Experten wegen seiner Bewertung von Transaktionen sogar als ungeeignet angesehen wird. Unglücklicherweise beruhen viele Blockchain-Plattformen auf PoW für die Lieferung von Services.
Die Unterschiede bei den Algorithmen verweisen auf ein anderes Problem: den Mangel an Standardisierung bei der Installation von Sharding. Es gibt mehrere unterschiedliche Ansätze für Sharding, und viele Methodologien werden noch erforscht, entwickelt oder getestet, da die verschiedenen Interessenten an der Technologie die verschiedenen Probleme lösen wollen. Jeder Sharding-Ansatz besitzt seine Vor- und Nachteile, was die Entwicklung eines gemeinsamen Industriestandards erschwert.
Die Zukunft von Sharding
Skalierbarkeit bleibt eine wesentliche Herausforderung für öffentliche Blockchain-Installationen, und Sharding könnte eine der hauptsächlichen Methoden sein, dieses Problem in Angriff zu nehmen. Aber Sharding muss mit Vorsicht umgesetzt werden, damit es nicht die Blockchain-Prozesse negativ beeinflusst oder die Daten unnötigen Risiken aussetzt.
Es könnte auch passieren, dass Blockchain Sharding mit anderen Technologien ergänzt werden muss – zum Beispiel solchen wie neuen Protokollen über Shard-Grenzen hinweg –, um die notwendige Skalierbarkeit bereit zu stellen. Bis dahin wird öffentliches Blockchain Storage wahrscheinlich noch der Monolith bleiben, wie er sich heute darstellt – mit einer abnehmenden Performance, je größer er wird.