Was ist Sharding - Eine einfache Erklärung

- 12 minute read

Waiting in line
Paul Hopmans
Crypto Expert
Paul Hopmans

✔️ Sharding bedeutet Bruchstück oder kleiner Teil eines Ganzen

✔️ Sharding stammt aus den 1990er Jahren

✔️ Sharding wurde entwickelt, um eine Datenbank schneller zu machen.

✔️ Sharding auf einer Blockchain ist hauptsächlich dazu gedacht, schnell und billig zu sein

✔️ Ethereum hat eine eigene Lösung für das Problem der Skalierbarkeit gefunden

Sie haben wahrscheinlich schon von Sharding gehört, aber was es bedeutet, ist eine andere Sache. Nachdem Sie diesen Blog gelesen haben, werden Sie genau wissen, was es ist.

What is sharding?

Inhaltsübersicht

  1. Was ist Sharding?
  2. Wie funktioniert das Sharding auf einer Blockchain?
  3. Ziel Sharding
  4. Formen des Sharding
  5. Danksharding im Detail
  6. Stärken des Sharding
  7. Schwachstellen des Sharding
  8. Beispiele für Blockchains mit Sharding
  9. Sharding im Vergleich zu anderen Lösungen
  10. Die Zukunft des Sharding

Was ist Sharding?

Sharding ist ein Begriff, der ursprünglich aus den 1990er Jahren stammt. Man kann ihn mit Scherbe oder kleiner Teil eines Ganzen übersetzen. Alle möglichen Probleme auf Computern und in Netzwerken mit Datenbanken mussten gelöst werden. Es wurde sogar vorhergesagt, dass es keine Zukunft für verteilte Datenbanken mit spezialisierter Hardware geben würde.

Sie lagen, wie wir bei der Blockchain sehen können, völlig falsch! Aber andererseits ist es schwieriger, die Zukunft vorherzusagen, als einfach nur herumzusitzen und sich negativ zu äußern.

Seitdem hat es enorme Entwicklungen sowohl bei der Hardware als auch bei der Software und den Datenbanktechniken gegeben.

Im Jahr 1997 tauchte der Begriff "Shard" auch in einem beliebten Spiel namens Ultima Online auf. Jeder Spieler landete in seinem eigenen Teil der virtuellen Welt, so dass man mit Fug und Recht von einer Scherbe sprechen kann. Das Spiel existiert immer noch und hat inzwischen 8 Guinness-Weltrekorde aufgestellt.

Sharding ist eine Datenbankverwaltungstechnik, bei der eine wachsende Datenbank in kleinere, überschaubare Partitionen oder Teile unterteilt wird. Eine solche kleine Partition wird als "Shard" bezeichnet.

Die Idee ist, diese Teile auf verschiedenen Rechnern als unabhängige Scherben zu speichern.

Eine Datenbank besteht aus Zeilen und Spalten. Beim Sharding von Datenbanken wird eine horizontale Partitionierung vorgenommen, bei der die größere Datenbank in kleinere Abschnitte aufgeteilt wird, um die Datenbankverwaltung zu beschleunigen und zu vereinfachen.

Sharding wird in der Regel eingesetzt, wenn ein Datensatz zu groß wird, um ihn in einer einzigen Datenbank zu speichern. Wenn eine Datenbank zu groß wird, kann eine gewöhnliche Abfrage einer Datenbank, für die sie natürlich teilweise erstellt wird, zu lange dauern oder zu viel kosten. Ein Shard ist dann eine Lösung, so dass man nicht mit teurer Hardware arbeiten muss und Abfragen eine akzeptable Antwortzeit haben. Ein logischer Datensatz wird dann in mehrere kleine Teile dieser Gesamtdatenbank aufgeteilt.

Sharding ist also eine horizontale Skalierung. Bei dieser Technik werden weitere Geräte hinzugefügt, um die Arbeitslast zu verteilen. Bei der vertikalen Skalierung wird den vorhandenen Geräten mehr Verarbeitungsleistung hinzugefügt. Letzteres ist nicht unbegrenzt möglich. Wenn also die Geräte nicht mehr alles verarbeiten können oder zu teuer werden, können Sie über Sharding oder horizontale Skalierung nachdenken. Was bisher von einem Gerät erledigt wurde, kann dann auf mehrere Geräte verteilt werden. Theoretisch können Sie mit Sharding endlos skalieren, da Sie einfach immer mehr Geräte hinzufügen können, die die Arbeit aufteilen.

Sharding bedeutet auch, dass die einzelnen Geräte nicht die gesamte Datenbank durchsuchen müssen. Sie befinden sich in einer kleinen Partition, die für einen bestimmten Teil der Gesamtdatenbank zuständig ist. So sind sie viel schneller bereit, wenn eine Abfrage für ihre Datenbank auftaucht oder eine Transaktion verarbeitet werden muss, für die ihre Partition zuständig ist. Das ist natürlich viel schneller, vor allem bei immer größeren Datenbanken, für die Blockchains bekannt sind.

Eine gute visuelle Darstellung des Sharding ist eine beliebige Warteschlange. Angenommen, jeder in den Niederlanden muss sich zu einem bestimmten Datum einen neuen Personalausweis besorgen. Man kann diese Millionen von Menschen natürlich nicht vor einem Schalter in Utrecht oder so warten lassen. Wenn Sie nur einen zweiten Schalter öffnen, halbiert sich die Warteschlange bereits. Das ist die Stärke von Sharding. Mit jedem weiteren Schalter, den Sie öffnen, verringert sich die Warteschlange. Der Zweck des Sharding ist in diesem Fall also klar: Erhöhung des Durchsatzes durch das Öffnen von mehr Schaltern.

Warteschlange

Wie funktioniert das Sharding auf einer Blockchain?

Ein Shard übernimmt also die Verantwortung für einen Teil der gesamten Datenbank. Eine Blockchain besteht aus einer Datenbank, die von vielen Computern verwaltet wird. Man nennt dies eine verteilte Datenbank. Wenn alle Knoten, Validierer oder Miner die gesamte Datenbank im Auge behalten müssen, kann dies eine große Belastung für sie darstellen, insbesondere bei großen Datenbanken wie Ethereum mit seinen beliebten Smart Contracts. Durch die Aufteilung der Datenbank in Partitionen oder Teile müssen die verschiedenen Knoten oder Nodes nur einen Teil der Datenbank im Auge behalten und sind somit viel schneller. Der Kommunikationsaufwand für die Knoten untereinander wird dadurch stark reduziert.

Eines der Probleme bei der Blockchain ist die Skalierbarkeit. Zu Beginn einer Blockchain ist die Datenbank nicht sehr groß, aber mit jedem neuen Block, der hinzugefügt wird, wird die Datenbank 1 größer. Mit der Zeit können Backups der Datenbank zu Problemen führen. Besonders beliebte Netzwerke wie Bitcoin und Ethereum haben Probleme mit der Skalierbarkeit. Verarbeitungsraten von nur 20 pro Sekunde sind nicht mehr realistisch, wenn ein Netzwerk von so vielen Menschen genutzt wird. Man kann die Leute nicht endlos auf die Validierung ihrer Transaktion warten lassen. Außerdem versuchen Miner oder Nodes oft, die Überlastung des Netzwerks auszunutzen, indem sie so viel Geld wie möglich für die Validierung verlangen.

Eine Möglichkeit, dieses Problem zu lösen, ist das Sharding-Verfahren. Bei diesem Prozess kann eine riesige Anzahl von Transaktionen auf einer Blockchain pro Sekunde erreicht werden, wenn es richtig gemacht wird. Wir sprechen hier von Zahlen über 100.000 pro Sekunde.

Sobald die Anordnung der Scherben bekannt ist, müssen diese Scherben das tun, was normalerweise geschieht alle Knoten tun sollten: eine Transaktion innerhalb ihres Bereichs überprüfen. Ein Beispiel wäre, dass sie alle Transaktionen mit einem Hash beginnend mit einer 1. Als Nächstes müssen sich alle Mitglieder dieses Scherbens gemäß einer Konsensprotokoll dieses Shards und sammeln dann die genehmigten Transaktionen in einem neu zu bildenden Block. Diese werden dann Teil der Blockchain. Da die Datenbank pro Shard relativ klein bleibt, sind diese Arten von Blockchain-Netzwerken viel schneller als herkömmliche Blockchains wie z.B. Bitcoin.

Eines der Probleme der Blockchain ist das Trilemma, das von Vitalik Buterin von Ethereum vorgeschlagen wurde. Eine Blockchain muss dezentralisiert, sicher und skalierbar sein. Zu letzterem soll das Sharding einen wichtigen Beitrag leisten, indem es eine Datenbank in kleine Teile aufteilt, die viel einfacher und billiger zu verarbeiten und viel schneller sind. Theoretisch ist eine gesplittete Datenbank unendlich skalierbar.

Wenn Sie eine Datenbank partitionieren wollen, gibt es mehrere Möglichkeiten, dies zu tun. Man kann z.B. nach dem Alphabet, nach Zahlen, nach Hash oder was auch immer aufteilen. Die Idee ist dann, dass ein Shard nur für diesen bestimmten Teil der Datenbank zuständig ist.

Ziel Sharding

  • Skalierbarkeit erhöhen
  • Senkung der Transaktionskosten
  • Aufteilung der Arbeitslast in kleinere Partitionen
  • Erhöhung der Abfrage-Antwortzeit durch die Datenbank
  • Erhöhung der Rechenleistung eines Netzes durch Hinzufügen weiterer Rechner
  • Einsatz billigerer Maschinen zur Validierung oder Abfrage

Formen des Sharding

  1. Datenaufteilung. Dies ist einfach eine Klassifizierung nach dem Alphabet, zum Beispiel.
  2. Hash-Sharding. Die Datenbank wird auf der Grundlage eines Hashes partitioniert.
  3. Bereichssharing. Dabei wird eine Aufteilung auf der Grundlage eines Bereichs vorgenommen, z. B. alles, was mit einem Buchstaben a bis f beginnt.
  4. Netzwerkaufteilung. Das Netzwerk wird in Konsensgruppen aufgeteilt, die gemeinsam einen Teil aller Blöcke nach dem Zufallsprinzip verifizieren.
  5. Transaktions-Sharding. Hier wird einem Shard ein bestimmter Teil der Arbeitslast auf der Grundlage einer Transaktions-ID zugewiesen, z. B. befinden sich alle Transaktionen, die mit 1 beginnen, im Shard 1. Ein plausibles Risiko hierbei sind doppelte Ausgaben, daher wird es sich wahrscheinlich nicht so schnell durchsetzen.
  6. State Sharding. Hier hat ein Knoten eine Teilsicht auf eine Komponente des gesamten Systems. Die Validierung und Genehmigung einer Transaktion kann mehrere Tabellen und damit Shards erfordern. Ethereum arbeitet schon seit einiger Zeit daran und es stand sogar auf ihrer Roadmap, aber sie haben sich entschieden, mit Layer-2-Rollups fortzufahren, um Ethereum zu skalieren und es billiger zu machen. Dadurch bleibt auch der Konsens auf Ethereum einfacher und erfordert keine Sharded-Datenbanken.
  7. Danksharding. Dies ist der derzeitige Weg von Ethereum und soll schließlich einen Durchsatz von mehr als 100.000 Transaktionen pro Sekunde zu einem möglichst günstigen Preis ermöglichen.

Danksharding im Detail

Da Ethereum ein so wichtiges Netzwerk ist, werden wir etwas ausführlicher auf ihre Strategie eingehen.

Danksharding soll Ethereum zu einer wirklich skalierbaren Blockchain werden. Dies erfordert jedoch noch Zwischenschritte.

Einer dieser Zwischenschritte ist Proto-Danksharding . Der Name stammt von zwei Forschern namens Protolambda und Dankrad Feist. Der Zweck dieses Ethereum-Vorschlags ist es, billigere Daten zu Blöcken auf der Blockchain hinzuzufügen.

Rollups müssen nun ihre Daten an alle Knoten im Ethereum-Netzwerk senden, und diese Daten bleiben dort für immer.

Danksharding führt Datenblöcke (Blobs) ein, die an Blöcke angehängt werden können, die nicht von der Ethereum Virtual Machine abgeholt werden können und nach einer bestimmten Zeit automatisch gelöscht werden.

Ein Rollup besteht aus zwei Teilen: den Daten und der Prüfung durch den Prüfer. Der Prüfer muss prüfen, ob der Rollup korrekt ist. Letzteres muss also nicht für immer auf dem EVM sein.

Vollständig Danksharding ist eigentlich gar kein Sharding. Echte Shard Chains sind nicht mehr auf der Roadmap von Ethereum, weil Danksharding eine so gute und einfache Lösung ist.

Danksharding ist die vollständige Umsetzung der Rollup-Skalierung, die mit Proto-Danksharding begann. Mit Danksharding wird es eine Menge Platz auf Ethereum für Rollups geben, auf dem sie ihre komprimierten Transaktionsdaten abladen können. Dies wird es Ethereum ermöglichen, Hunderte von einzelnen Rollups zu unterstützen und schließlich Millionen von Transaktionen pro Sekunde zu erreichen.

Normalerweise würde ich sagen: "Reden ist billig!"

Aber ja, wenn Vitalik es sagt, bin ich etwas gemäßigter in meinen Aussagen. Sein Netzwerk und sein Erfolg sprechen für sich selbst. Wenn sie Erfolg haben, könnte es die schnellste Blockchain in der Welt der Kryptowährungen werden. Das ist etwas anderes, als 50 Dollar für eine Transaktion zu bezahlen und dann auch noch zwei Stunden darauf zu warten!

Sie werden dies tun, indem sie nicht nur 1 Blob, wie im Proto-Teil, sondern 64 Blobs zu einem Block hinzufügen. Ehe Sie sich versehen, haben Sie einen Gruselfilm ! Nun, gruselig. Eher lustig.

Volles Danksharding wird noch einige Jahre auf sich warten lassen, aber nach einer echten Einberufungszeremonie Die Magie von Ethereum hat einen weiteren Teil in Form von Proto-Danksharding, was ein wenig an Hexerei erinnert, auch wenn man diesen Teil nicht als Shard bezeichnen kann.

Stärken des Sharding

  1. Wenn ein Shard ausfällt, funktionieren alle anderen Shards noch. Wenn Sie alles auf einem Server haben und dieser ausfällt, ist Ihr gesamtes Netzwerk nicht mehr erreichbar! Bei der Blockchain ist dies aufgrund ihrer verteilten Datenbank übrigens selten.
  2. Sharding führt zu kleineren Datenbanken.
  3. Sharding macht ein Blockchain-Netzwerk billiger.
  4. Die Verwaltung einer Datenbank wird durch Sharding erleichtert.
  5. Die Arbeitsteilung kann komplexe Vorgänge erleichtern.
  6. Sie macht eine Blockchain schneller.
  7. Sie können billigere Hardware verwenden.

Schwachstellen des Sharding

  1. Die Implementierung von Sharding kann eine sehr komplexe und zeitaufwändige Aufgabe sein.
  2. Wenn Sharding eingeführt wird, können Datenbankdaten verloren gehen oder die Datenbank kann beschädigt werden.
  3. Die Daten liegen an allen möglichen Stellen, so dass es manchmal schwierig ist, den Wald vor lauter Bäumen zu sehen.
  4. Eine Überlastung kann immer noch auftreten, wenn ein bestimmter Splitter viel mehr Arbeit erhält als die anderen.
  5. Die Sicherheit der Blockchain oder eines Shards kann beeinträchtigt werden.
  6. Wenn Sie das Sharding jemals wieder loswerden wollen, kann es eine riesige Aufgabe sein, die Datenbank wieder korrekt zu machen.
  7. Sie benötigen sowohl mehr Hardware als auch mehr Software.
  8. Wenn Shards voneinander abhängig sind, kann ein einziger beschädigter Shard die gesamte Datenbank zusammenbrechen lassen.

Beispiele für Blockchains mit Sharding

  • Zilliqa
  • Ontology
  • Polkadot
  • Near
  • Elrond
  • QuarkChain

Sharding im Vergleich zu anderen Lösungen

Der Zweck des Sharding ist es, die Skalierbarkeit zu erhöhen. Dies geschieht durch die Schaffung von Inseln, die nur einen kleinen Teil der Blockchain überwachen. Bei diesen Shards müssen Sie normalerweise nicht mit anderen Shards kommunizieren.

Vergleicht man dies mit anderen Lösungen wie Roll-Ups, Sidechains oder dem Lightning Network von Bitcoin, so stellt man fest, dass diese Lösungen zwar eine höhere Skalierbarkeit des Netzwerks ermöglichen, dieses aber immer noch mit der Hauptblockchain kommunizieren muss und daher überlastet werden kann.

Der Vorteil des Sharding ist, dass man tatsächlich endlos skalieren kann. Wenn Sie zunächst mit Shards arbeiten, die z. B. alle Transaktionen verarbeiten, die mit 1 beginnen, können Sie eine weitere Unterteilung erstellen, die aus den ersten beiden Ziffern besteht, und so weiter, wodurch die Shards im Verhältnis zur gesamten Datenbank immer kleiner werden.

Die Zukunft des Sharding

Sharding ist eine vielversprechende und bequeme Möglichkeit, die Skalierbarkeit einer Blockchain deutlich zu erhöhen. Auch Kosteneinsparungen sind ein wichtiger Teil dieser Strategie.

Da es jedoch so schwierig zu implementieren ist, kann dies auch das Wachstum von Sharding als Anwendung hemmen.

Wer sich die Nachteile von Sharding ansieht und diese mit der Lösung von Ethereum vergleicht, könnte Zweifel an der Effektivität von Sharding bekommen.

Wenn man jedoch bedenkt, dass selbst die Superhelden von Ethereum Jahre brauchen werden, um so etwas zusammenzuschustern, spricht vielleicht einiges für Sharding.

Was jedoch unbestreitbar ist, ist die Tatsache, dass eine Blockchain, die Sharding verwendet, viel billiger und schneller ist als die traditionelle Blockchain. Und das ist eine unglaublich gute Nachricht für normale Nutzer.