Eine der größten Herausforderungen für Datenbankentwickler ist die Skalierung. Mit zunehmenden Datenmengen und der Anzahl der erforderlichen Vorgänge muss auch die Systemleistung verbessert werden.
Sharding ist eine Technologie zur Datenbankskalierung, die auf der Aufteilung von Datenbanken in separate Segmente basiert, von denen jedes auf einem anderen Server untergebracht werden kann.
Wenn wir diese Technologie auf die Blockchain anwenden, stellt Sharding die Aufteilung des Netzwerks in separate Sektoren dar. Jeder Sektor oder Shard enthält einen einzigartigen Satz von Smart Contracts und Kontoständen, und jedem Shard sind bestimmte Netzwerkknoten zugewiesen.
Diese Knoten sind nur für die Überprüfung von Transaktionen in ihrem zugewiesenen Shard verantwortlich und nicht für alle Transaktionen in der Blockchain.
Welche Probleme löst Sharding?
Je beliebter ein Projekt wird, desto mehr Benutzer zieht es an. Diese Benutzer führen mehr Transaktionen durch, starten mehr DApps und führen mehr Prozesse im Netzwerk aus. Infolgedessen sinken die Transaktionsgeschwindigkeiten und die Provisionen steigen, was die zukünftige Erweiterung und Entwicklung des Projekts behindert. Durch die Aufteilung des Netzwerks in Shards können Sie das Problem lösen, indem Sie die Verarbeitungskapazität der Blockchain erhöhen.
Wenn eine Gruppe von Knoten für einen bestimmten Abschnitt des Ledgers verantwortlich ist, müssen alle Knoten im Netzwerk nicht mehr die gesamte Blockchain pflegen, damit jede Transaktion abgeschlossen werden kann. Operationen werden parallel und nicht linear validiert, wodurch der Durchsatz des Netzwerks erhöht und das Skalierungsproblem eliminiert wird.
Darüber hinaus arbeiten Blockchain-Knoten, die Sharding verwenden, aufgrund der geringeren Belastung effizienter, ohne dass die Rechenleistung erhöht werden muss.
So funktioniert’s
Blockchains benötigen die Arbeit von Tausenden von Computern, um zu funktionieren, und ihre Rechenleistung ermöglicht es verteilten Hauptbüchern, Transaktionen durchzuführen, intelligente Verträge auszuführen, DApps bereitzustellen und vieles mehr. Wenn das Netzwerk auf sequentieller Ausführung basiert, muss jeder Knoten jede Transaktion verarbeiten. Die Überprüfung von Vorgängen nimmt daher viel Zeit in Anspruch. Ethereum beispielsweise verarbeitet bis zu 10 Transaktionen pro Sekunde.
Wenn der Blockchain Knoten hinzugefügt werden, verbessert sich ihre Leistung nicht. Das Einzige, was passieren wird, ist, dass die Verifizierungskette länger wird.
Das Prinzip des Sharding besteht darin, das lineare Ausführungsmodell zugunsten eines parallelen Modells aufzugeben, bei dem Shards nur bestimmte Berechnungen durchführen und viele Transaktionen gleichzeitig verarbeiten. Sie sind eine Art „Blockchain innerhalb einer Blockchain“, die alle ihre Informationen an die Hauptkette überträgt, wenn auch in einem komprimierten Format.
Die Nachteile des Shardings
Beim Sharding gibt es zwei Hauptprobleme: die Kommunikation zwischen Shards und die Sicherheit.
- Kommunikation . Wenn Sie das Netzwerk in isolierte Sektoren aufteilen, wird jeder de facto zu einer separaten Blockchain. Benutzer und dezentrale Anwendungen in einem Shard können nur über ein bestimmtes Kommunikationsprotokoll mit Benutzern und Anwendungen in einem anderen Shard kommunizieren.
- Sicherheit . In einem Shard-Netzwerk ist es viel einfacher, die volle Kontrolle über einen Shard zu übernehmen als über ein ganzes, nicht-sharded Netzwerk, da die erforderliche Hash-Rate viel niedriger ist. Beispielsweise würde ein 51%-Angriff auf das Bitcoin-Netzwerk Hardware im Wert von mehreren Milliarden Dollar und täglich Hunderte Millionen Dollar für Strom erfordern. Das ist teuer, unrentabel und nicht durchführbar. Die Eroberung eines einzelnen Shards ist jedoch viel billiger und einfacher.
Sharding ist keine exakte Lösung. Es bringt Komplexitäten und Sicherheitsbedenken mit sich. Hacker könnten einen einzelnen Shard innerhalb einer segmentierten Blockchain ausnutzen, da weniger Rechenleistung erforderlich ist, um einzelne Abschnitte zu steuern. Dies könnte zu böswilligen Transaktionen führen, die das gesamte Netzwerk stören.
Da verschiedene Knotengruppen unterschiedliche Blockchain-Segmente verwalten, funktioniert jeder Shard im Wesentlichen als separates Netzwerk. Um eine reibungslose Kommunikation zwischen diesen Segmenten zu ermöglichen, sind spezielle Mechanismen erforderlich.
Eine unsachgemäße Implementierung kann zu Problemen wie Doppelausgaben führen, was die Netzwerksicherheit erheblich beeinträchtigt. Sharding ist auch in bestehenden Blockchain-Netzwerken schwierig zu implementieren, da es Netzwerkaufteilungen und die Neuzuweisung von Daten beinhaltet.
Ethereum bietet für dieses Problem eine Lösung, die auf Zufallsstichproben basiert. Shard-Protokolle werden zufällig verschiedenen Abschnitten zugewiesen, um die Blockauthentifizierung zu bestätigen. Dies wurde durch die Umstellung des Netzwerks auf die Proof-of-Stake-Konsensmethode möglich.
Die Netzwerke, die bereits Sharding einsetzen
Das erste Netzwerk, das Sharding einführte, war Zilliqa. Es bezeichnet sich selbst als Blockchain-Plattform, die Skalierbarkeitsprobleme mit Sharding lösen soll. In der Testnetzphase erreichte es 2.828 Transaktionen pro Sekunde.
Das NEAR-Blockchain-Ökosystem bezeichnet sich selbst als eine Sharding-PoS-Blockchain und behauptet, dass seine Sharding-Technologie Knoten unterstützt, die klein genug sind, um auf Geräten mit geringer Leistung zu laufen.
Ethereum plant auch die Implementierung der Sharding-Technologie. Andere Sharding-Netzwerke sind Cardano, QuarkChai,n und Plian.
Fazit
Theoretisch kann die Sharding-Technologie das Blockchain-Trilemma endlich lösen, wenn sie ihre Mängel behebt. Wenn dies gelingt, wird es möglich, Blockchains zu skalieren, ohne dabei Dezentralisierung oder Sicherheit zu opfern.