Was ist Sharding?
Das Hauptproblem von Blockchains ist deren Skalierung. Werden Knoten zum System hinzugefügt und die Datenmenge im Ledger wächst, wächst auch die Datenbank.
Gleichzeitig verringert sich auch die Leistung der Blockchain, da die großen Datenmengen auch verarbeitet werden müssen. Das kostet Rechenkraft, Zeit und reduziert die maximal möglichen Transaktionen, die eine Blockchain pro Sekunde durchführen kann.
Sharding in einfachen Worten erklärt
Das Aufteilen der Blockchain in Shards kann das Problem lösen. Sharding ist eine Vorgehensweise zur Verbesserung der Leistung in Blockchains. Der Begriff „Sharding“ bedeutet „Aufteilung“ und stammt aus der Verwaltung und Programmierung von Datenbanken. Beim Sharding erfolgt eine horizontale Partitionierung von Datenbanken.
Dabei geht es darum, sehr große Datenbanken in kleinere Teile aufzuteilen, damit sich die Leistung verbessert. Durch das Sharding werden die Netzwerkknoten in Gruppen aufgeteilt. Diese Teile tragen die Bezeichnung „Shards“.
Erreicht wird die Leistungsverbesserung durch Parallelisierung der Transaktionen und damit durch mehr Transaktionen, die gleichzeitig stattfinden können.
Beim Sharding und dem Aufteilen der Knoten in Chats, wird die Blockchain in einzelne Stücke, auch „Chunks“ genannt, aufgeteilt.
Da bei Ethereum auch Smart Contracts zum Einsatz kommen, sind auch diese von der geringen Leistung der Blockchain beeinträchtigt. Das resultiert schlussendlich darin, dass sich Anwender für andere Blockchains entscheiden, bei denen die Leistung besser ist.
Blockchains sind Datenbanken
Auch bei Blockchains handelt es sich um Datenbanken, die dezentral auf den einzelnen Knoten betrieben werden, und die meistens sehr groß sind.
Die Ethereum-Blockchain hat Mitte Januar 2023 bereits eine Größe von 1143,43 Gigabyte, Tendenz stark wachsend. Das zeigt, dass Blockchain-Datenbanken eine enorme Größe erreichen können, was natürlich zulasten der Leistung geht.
Daher ist mittlerweile der Begriff „Sharding“ auch in der Blockchain-Welt angekommen, vorrangig durch die Möglichkeiten von Ethereum.
Eine Möglichkeit des Shardings besteht darin, die Datenbank horizontal aufzuteilen. In diesem Fall werden die Daten in Zeilen unterteilt. Die Zeilen enthalten die Shards.
Eine andere Möglichkeit des Shardings ist die Organisation von Netzwerkknoten, sodass ein zentrales Relay-Netzwerk entsteht. Es gibt verschiedene Möglichkeiten der Aufteilung, die vor allem auch in privaten Blockchains zum Einsatz kommen.
Aufteilen von Blockchains mit Sharding
Sharding dient der Verbesserung der Leistung von Blockchains. Generell haben nahezu alle Blockchains das gleiche Problem: Sie wachsen immer schneller, die Datenbank wird größer und benötigt daher immer mehr Leistung. Das resultiert in den meisten Fällen darin, dass Transaktionen immer länger dauern, immer mehr Kosten verursachen und daher nicht mehr skalierbar sind.
Die Leistung der Blockchain wird daher geringer. Beim Sharding wird eine große Blockchain in kleine Blockchains aufgeteilt. Durch das Aufteilen der Blockchain in kleinere Teile erhöht sich deutlich die Leistung, da in allen Teilen Transaktionen parallel stattfinden können.
Die Blockchain wird dabei in Shards aufgeteilt. Wenn eine Transaktion in einem der Shards stattfindet, erfolgt die Validierung auf den Knoten, die für den Shard, also dem jeweiligen Teil der Blockchain verantwortlich sind.
Eine Blockchain besteht nach der Aufteilung aus mehreren Shards. Alle Shards können Transaktionen durchführen, was zu einer Steigerung der gleichzeitigen Transaktionen führt, die eine komplette Blockchain durchführen kann.
Das steckt hinter dem Begriff Sharding
Einfach erklärt werden beim Sharding große Datenbanktabellen in Fragmente aufgeteilt, sodass nicht notwendige Bereiche der Datenbank bei der täglichen Arbeit außen vor gelassen werden können und nur der tatsächliche Datenbankbereich im Einsatz ist.
Große Datenbanktabellen werden in kleinere Tabellen aufgeteilt. Das ermöglicht mehr parallele Transaktionen mit den einzelnen Bereichen einer Blockchain.
Auch die Fragmente lassen sich dezentral speichern und auf den Knoten verteilen. Das ist natürlich wesentlich komplexer als das Kopieren einer einzelnen Datenbank. Die einzelnen Fragmente der Datenbank werden genauso auf den dezentralen Knoten verteilt, wie die vollständige Datenbank.
Die Fragmente müssen natürlich aktuell gehalten werden. Ändert sich ein Fragment, müssen alle anderen aktualisiert werden. In den meisten Fällen ist nur ein Teil der Knoten einer Blockchain für einen bestimmten Shard verantwortlich.
Shards unterteilen eine Blockchain und eine Untermenge von Knoten verwaltet jeweils einen Shard
Beim Sharding wird eine Blockchain in Shards aufgeteilt. Die einzelnen Knoten der Blockchain werden ebenfalls in Shards aufgeteilt, sodass eine bestimmte Anzahl an Knoten für einen Shard verantwortlich ist. Innerhalb des Shards erfolgen anschließend die gleichen Vorgänge bezüglich Konsensus, wie bei der vollständigen Blockchain.
Durch die Aufteilung in Shards können anschließend in allen diesen Shards parallel Transaktionen stattfinden. Es kümmert sich also nur eine Untermenge an Knoten um eine Untermenge der Blockchain.
Alle Untermengen (Shards) ergeben eine gemeinsame Blockchain (zum Beispiel Ethereum). Die für einen Shard verantwortlichen Knoten können keine Transaktionen von anderen Shards validieren. Die Abläufe bleiben im Shard und werden später zu einer gemeinsamen Blockchain zusammengeführt.
Warum ist Sharding generell nicht ideal für Blockchains?
Sharding ist eine Technologie, bei der große Datenbanken in kleinere Datenbanken aufgeteilt werden, damit die Gesamtleistung steigt.
Eine der Grundvoraussetzungen von Blockchains besteht allerdings darin, dass diese dezentral sind, das heißt jeder Knoten eine vollständige Version der jeweiligen Blockchain-Datenbank speichert. Generell ist nur dadurch sichergestellt, dass sich das System kaum manipulieren lässt, da die Datenbank überall identisch ist.
Der Nachteil einer einzelnen dezentralen Datenbank ist, dass alle Transaktionen in den Blockchain-Datenbanken langsamer ablaufen, da sie erst in die riesige Blockchain-Datenbank implementiert werden müssen.
Beim Sharding erfolgt aber eine Aufteilung von großen Datenbanken. Das steht dem Grundprinzip der dezentralen Verteilung entgegen, sorgt dafür aber für deutlich mehr Leistung.
Sharding kann bei dezentralen Datenbanken, also in diesem Fall von Blockchains, zu Sicherheitsproblemen führen. Die Datensicherheit und die Fälschungsresistenz sind eine Herausforderung, die beim Sharding einer Blockchain gelöst werden müssen.
Bei herkömmlichen Datenbanken kümmert sich eine zentrale Verwaltungsstelle um diese Belange. So etwas gibt es bei Blockchains nicht. Sharding in der Distributed-Ledger-Technologie kennt keine zentralen Stellen, sondern muss mit einer Untermenge der Validierungsknoten einer Blockchain arbeiten.
Es sind also weniger Knoten im Einsatz, welche die Konsistenz einer Blockchain sicherstellen können. Das senkt die Schwelle für den missbräuchlichen Umgang mit der Blockchain durch Angriffe auf die einzelnen Shards.
Durch Staking und zufällig ausgewählte Validatoren (Knoten in der Blockchain) erhöht sich die Sicherheit innerhalb der Shards deutlich. Angreifer können dadurch nicht gezielt einzelne Knoten angreifen, weil sie nicht wissen, für welchen Shard die Knoten verantwortlich sind und sich die Knoten auch ständig ändern.
Staking und Sharding in effektiver Zusammenarbeit
Beim Staking bürgen Validatoren mit hinterlegten Finanzmitteln in Form von Coins dafür, dass die validierten Transaktionen auch tatsächlich echt sind.
Die Kapitaleinlage, auch „Stake“ genannt, kann verfallen, wenn Betrug aufgedeckt wird. In Ethereum wird das Staking durch den Umstieg PoW (Proof of Work) zu PoS (Proof of Stake), im Rahmen der Umstellung auf Ethereum 2.0 eingeführt.
Was sind die Vorteile beim Sharding?
Sharding, also das Aufteilen einer großen Blockchain in lauter kleine Blockchains, löst das Skalierungsproblem von Blockchains durch Aufteilen der Datenbanken. Durch diese Fragmentierung steigt die Anzahl der Transaktionen pro Sekunde (TPS) bei einer Blockchain deutlich an.
Die Leistung verbessert sich, gleichzeitig sinkt der Preis für Transaktionen, da die Blockchain insgesamt mehr Transaktionen verarbeiten kann. Smart Contracts profitieren von einer höheren Geschwindigkeit und mehr Teilnehmer können die Blockchain nutzen.
Was sind die Probleme beim Sharding?
Die einzelnen Shards sehen ihren Teil der Blockchain als eigene Blockchain und andere Teile als externe Systeme. Daher ist die Kommunikation von Knoten aus verschiedenen Shards ein Problem, das gelöst werden muss. Hier spielt die Sicherheit eine wichtige Rolle.
Die Vorteile des Shardings gehen verloren, wenn ein Overhead durch komplexe Kommunikation zwischen den verschiedenen Shards entsteht. Die Kommunikation und der sichere Betrieb von Sharding stellen daher die größte Herausforderung dar.
Was sind die Alternativen zu Sharding?
Um die Leistung von Blockchains zu verbessern, gibt es immer mehr Möglichkeiten. Es gibt auch Ansätze, mehr Transaktionen in einzelne Blöcke unterzubringen.
Da die Leistung einer Blockchain vor allem durch das Generieren neuer Blöcke beeinflusst wird, kann sich die Leistung verbessern, wenn in einem Block schlicht und ergreifend mehr Transaktionen unterbringen lassen. Prominente Beispiele dafür sind Bitcoin Cash und das Bitcoin Lightning Network.
Modernes Sharding: Beispiel Elrond
Elrond ist eine Layer-1 Plattform für Smart Contracts und für den Betrieb mit Sharding optimiert. (PoS), die beide eine hohe Leistung bieten. Mit „Adaptive State Sharding“ lassen sich dynamische Netzwerke aufbauen, bei denen einzelne Komponenten flexibel aufteilbar sind und sich auch sicherer betreiben lassen.
Adaptive-State-Sharding von Elrond ermöglicht das lineare Wachsen der Blockchain. Hier wird Sharding also nicht im Nachhinein in die Blockchain implementiert, sondern die Blockchain ist für Sharding bereits optimiert.
Auch hier stellt ein Shard eine Gruppe von Knoten dar, die sich um einen Teil der Blockchain kümmern und in diesem Bereich Transaktionen validieren. Durch die linearen Wachstumsmöglichkeiten ermöglicht Elrond 10.000 bis 15.000 Transaktionen pro Sekunde.
Fazit
Sharding ist eine der wichtigsten Herangehensweisen für bekannte Blockchains, um die Leistung zu verbessern und die Kosten zu verringern. Vor allem beim Einsatz von Smart Contracts spielt das schnelle Abarbeiten von Transaktionen eine wichtige Rolle.
Allerdings macht der Einsatz von Sharding die Verwaltung und Verwendung von Blockchains komplexer und zum Teil auch unsicherer, wenn nicht das System nicht optimal implementiert wird.