Besonderer Dank geht an Sacha Yves Saint-Leger & Joseph Schweitzer zur Überprüfung.
Sharding ist eine der vielen Verbesserungen, die ETH2 gegenüber ETH1 hat. Der Begriff wurde von der Datenbankforschung entlehnt, bei der ein Scherben ein Stück eines größeren Ganzen bedeutet. Im Kontext von Datenbanken und ETH2 bedeutet Sharding, die Speicherung und Berechnung des gesamten Systems in Scherben zu zerlegen, die Scherben separat zu verarbeiten und die Ergebnisse nach Bedarf zu kombinieren. Insbesondere implementiert ETH2 viele Shard -Ketten, wobei jede Shard ähnliche Fähigkeiten wie die ETH1 -Kette aufweist. Dies führt zu massiven Skalierungsverbesserungen.
In ETH2 gibt es jedoch eine weniger bekannte Art von Sharding. Eine, die aus einer Protokolldesign -Sicht wohl spannender ist. Geben Sie einen Sharded -Konsens ein.
Sharding -Konsens
Ebenso wie die Verarbeitungsleistung des langsamsten Knotens den Durchsatz des Netzwerks einschränkt, begrenzt die Rechenressourcen eines einzelnen Validators die Gesamtzahl der Validatoren, die am Konsens teilnehmen können. Da jeder zusätzliche Validator für jeden anderen Validator im System zusätzliche Arbeiten einführt, gibt es einen Punkt, an dem der Validator mit den geringsten Ressourcen nicht mehr teilnehmen kann (da er die Stimmen aller anderen Validatoren nicht mehr im Auge behalten kann). Die Lösung, die ETH2 dafür einsetzt Sharding -Konsens.
Es niederbrechen
ETH2 zerlegt die Zeit in zwei Dauer, Schlitze und Epochen.
Ein Slot ist der 12-Sekunden-Zeitrahmen, in dem ein neuer Block zur Kette erwartet wird. Blöcke sind der Mechanismus, mit dem zusätzlich zu den Transaktionen, die die Kette tatsächlich nützlich machen, in der Kette in der Kette aufgenommen werden.
Eine Epoche besteht aus 32 Slots (6,4 Minuten), in denen die Beacon -Kette alle Berechnungen durchführt, die mit dem Unterhalt der Kette verbunden sind, darunter: Rechtfertigung und Fertigstellung neuer Blöcke und Ausgabe von Belohnungen und Strafen an Validatoren.
Wie wir uns berührten Erster Beitrag dieser SerieValidatoren werden in Ausschüsse organisiert, um ihre Arbeit zu erledigen. Zu jeder Zeit ist jeder Validator ein Mitglied einer genau einer Beacon -Kette und eines Shard -Kettenausschusses und ist aufgefordert, eine Bescheinigung genau einmal pro Epoche zu bezeugen – wo eine Bescheinigung für einen Beacon -Kettenblock ist, der für einen Slot vorgeschlagen wurde.
Das Sicherheitsmodell von ETH2s Sharded Consensus beruht auf der Idee, dass Ausschüsse mehr oder weniger eine genaue statistische Darstellung des Gesamt -Validator -Satzes sind.
Wenn wir beispielsweise eine Situation haben, in der 33% der Validatoren im Gesamtsatz bösartig sind, besteht die Möglichkeit, dass sie im selben Ausschuss landen könnten. Dies wäre eine Katastrophe für unser Sicherheitsmodell.
Wir brauchen also einen Weg, um sicherzustellen, dass dies nicht passieren kann. Mit anderen Worten, wir brauchen eine Möglichkeit, um sicherzustellen, dass, wenn 33% der Validatoren bösartig sind, nur etwa ~ 33% der Validatoren in einem Komitee böswillig sind.
Es stellt sich heraus, dass wir dies erreichen können, indem wir zwei Dinge tun:
- Die Gewährleistung des Ausschusses für die Ausschüsse sind zufällig
- Erfordern einer Mindestanzahl von Validatoren in jedem Ausschuss
Beispielsweise ist die Chance eines Angreifers mit 1/3 der Validatoren, die die Kontrolle über> 2/3 Ausschuss erlangen, mit 128 zufällig abgetasteten Validatoren pro Komitee verschwindend klein (Wahrscheinlichkeit von weniger als 2^-40).
Aufbauen
Die von Validatoren abgegebenen Stimmen werden Bescheinigungen genannt. Eine Bescheinigung besteht aus vielen Elementen, insbesondere aus:
- eine Abstimmung für den aktuellen Beacon -Kettenkopf
- Eine Abstimmung darüber, welcher Beacon -Block gerechtfertigt/abgeschlossen sein sollte
- eine Abstimmung über den aktuellen Stand der Shard -Kette
- Die Unterschriften aller Validatoren, die dieser Abstimmung zustimmen
Durch die Kombination von möglichst vielen Komponenten wie möglich in eine Bescheinigung, wird die Gesamteffizienz des Systems erhöht. Dies ist möglich, da die Knoten nur dann über die Bescheinigungen über den Zustand der Beacon -Kette und jeder Shard -Kette informiert werden müssen, anstatt die Stimmen und Unterschriften für Leuchtfeuerblöcke und Shard -Blöcke separat zu überprüfen.
Wenn jeder Validator seine eigene Bescheinigung erzeugt und jede Bescheinigung von allen anderen Knoten überprüft werden musste, wäre es unerschwinglich teuer, ein ETH2 -Knoten zu sein. Aggregation eingeben.
Die Beglaubigungen sind so leicht zu kombinieren, dass zwei oder mehr Validatoren mit denselben Stimmen bezeugt werden, sie können kombiniert werden, indem die Signaturfelder in einer Bescheinigung zusammengefügt werden. Das verstehen wir unter Aggregation.
Ausschüsse werden durch ihren Bau Stimmen haben, die leicht zu aggregieren sind, da sie demselben Scherben zugeordnet sind und daher sowohl für die Shard State als auch für die Beacon -Kette die gleichen Stimmen haben sollten. Dies ist der Mechanismus, nach dem ETH2 die Anzahl der Validatoren skaliert. Indem Validatoren die Validatoren in die Ausschüsse einteilen, müssen sie sich nur um ihre Kollegen des Ausschusses kümmern und nur sehr wenige aggregierte Bescheinigungen von jedem der anderen Ausschüsse überprüfen.
Signaturaggregation
ETH2 nutzt die BLS -Signaturen – Ein Signaturschema, das über mehrere elliptische Kurven definiert ist, die der Aggregation freundlich sind. Auf der ausgewählten spezifischen Kurve sind Unterschriften 96 Bytes jede.
Wenn 10% aller ETH festgelegt sind, gibt es bei ETH2 ~ 350.000 Validatoren. Dies bedeutet, dass die Unterschriften einer Epoche unterschrieben würden 33,6 Megabyte was zu ~ kommt7,6 Gigabyte pro Tag. In diesem Fall alle falschen Behauptungen über die ETH1 State-Größe erreicht im Jahr 2018 1 TB wäre in weniger als 133 Tagen in Eth2s Fall der Fall (basierend auf Unterschriften).
Der Trick hier ist, dass BLS -Signaturen aggregiert werden können: Wenn Alice Signatur erzeugt Aund Bobs Unterschrift ist B Unter den gleichen Daten können sowohl die Unterschriften von Alice als auch Bob durch nur gespeichert werden und überprüft werden C = a + b. Durch die Verwendung der Signaturaggregation muss nur 1 Signatur gespeichert und für den gesamten Ausschuss überprüft werden. Dies reduziert die Speicheranforderungen auf weniger als 2 Megabyte pro Tag.
Zusammenfassend,
Durch die Trennung von Validatoren in Ausschüsse wird der Aufwand zur Überprüfung von ETH2 durch Größenordnungen reduziert.
Damit ein Knoten die Beacon -Kette und alle Shard -Ketten validieren kann, muss er nur die aggregierten Bescheinigungen von jedem der Ausschüsse untersuchen. Auf diese Weise kann es den Zustand jeder Scherde und die Meinungen jedes Validators kennen, welche Blöcke ein Teil der Kette sind und sind.
Der Ausschussmechanismus hilft ETH2 daher, zwei der in der festgelegten Designziele zu erreichen Erster Artikel: Das Teil der Teilnahme am ETH2-Netzwerk muss bei einem Laptop der Verbraucher möglich sein und dass es sich bemühen muss, maximal dezentralisiert zu werden, indem es so viele Validatoren wie möglich unterstützt.
Um Zahlen zu geben, während die meisten byzantinischen Fehlertoleranten von Stake -Protokollen auf Zehn (und in extremen Fällen Hunderte von Validatoren) skalieren, ist ETH2 in der Lage, Hunderttausende von Validatoren zu haben, die alle zur Sicherheit beitragen, ohne die Latenz oder den Durchsatz zu beeinträchtigen.

