Verkle Trees
Verkle Trees (ein Schachtelwort aus "Vektor-Verpflichtung" und "Merkle Bäumen") sind eine Datenstruktur, die zum Upgrade von Ethereum Nodes genutzt werden kann, so dass keine großen Mengen an Zustandsdaten mehr gespeichert werden müssen, ohne dass die Fähigkeit der Blockvalidierung verloren geht.
Zustandslosigkeit
Verkle Bäume sind ein kritischer Schritt hin zu Zustandsfreien Ethereum Clients. Zustandsfreie Clients müssen nicht den ganzen Zustand der Datenbank speichern, um hereinkommende Blöcke prüfen zu können. Anstatt ihre eigene Lokale Kopie von Ethereums' Zustand zur Verifizierung zu verwenden, nutzen zustandsfreie Clients einen "Zeugen" der Zustandsdaten, die mit dem Block ankommen. Ein Zeuge ist eine Ansammlung von Einzelteilen an Zustandsdaten, die benötigt werden, um bestimmte Transaktionen auszuführen und gleichzeitig ein kryptographischer Beweis das der Zeuge wirklich Teil der ganzen Daten ist. Der Zeuge wird anstatt der Zustandsdatenbank verwendet. Damit dies funktioniert, müssen Zeugen sehr klein sein, so dass sie sicher und rechtzeitig über das Netzwerk verteilt werden können, damit Validatoren sie innerhalb des 12 Sekunden Zeitfensters bearbeiten können. Die momentane Zustandsdatenstruktur ist dafür nicht geeignet, weil Zeugen zu groß sind. Verkle Trees lösen dieses Problem, indem sie kleine Zeugen ermöglichen und damit eines der Hauptprobleme der zustandsfreien Clienten entfernen.
Was ist ein Zeuge und warum brauchen wir sie?
Einen Block zu verifizieren bedeutet, die Transaktionen des blockes auszuführen, die Änderungen vollständig in Ethereum's Zustandsbaum zu übertragen und den neuen Wurzelhash zu berechnen. Der berechnete Wurzelhash eines verifizierten Blockes ist identisch zu dem, der mit dem Block geliefert wurde (weil dies bedeutet, dass der Block-Vorschlagende die Berechnung exakt wie der Verifizierende ausgeführt hat). In heutigen Ethereum Clients wird Zugang zum gesamten Zustandsbaum benötigt, der eine große lokal gespeicherte Datenstruktur ist. Ein Zeuge enthält nur Fragmente der Zustandsdaten, die benötigt werden, um die Transaktionen im aktuellen Block auszuführen. Ein Validator kann nur mit diesen Datenfragmenten verifizieren, dass der Block-Vorschlagende die Block-Transaktionen korrekt ausgeführt und den Zustand aktualisiert hat. Dies bedeutet jedoch, dass der Zeuge zwischen Netzwerkteilnehmern des Ethereumnetzwerks schnell genug übertragen werden muss, um innerhalb eines 12 Sekunden Zeitrahmens empfangen und von jeder Node sicher verarbeitet werden zu können. Wenn der Zeuge zu groß ist, könnte das Herunterladen auf manchen Nodes zu lange dauern, so dass diese den Anschluss verlieren könnten. Dies würde Zentralisierung forcieren, da nur Nodes mit sehr schneller Internetverbindung in der Lage wären, erfolgreich bei der Blockvalidierung zu partizipieren. Mit Verkle Trees muss der Zustand nicht mehr auf einem lokalen Speichermedium gespeichert werden; Alles was gebraucht wird, befindet sich im Block selber. Unglücklicherweise sind die Zeugen, die aus Merkle-Bäumen erstellt werden können, viel zu groß, um zustandsfreie Clients zu ermöglichen.
Warum erlauben Verkle Bäume kleinere Zeugen?
Die Struktur eines Merkle Trie erzeugt sehr große Zeugen - zu groß, um sicher innerhalb eines 12 Sekunden Zeitfensters innerhalb von Netzwerkteilnehmern übertragen zu werden. Das liegt daran, weil der Zeuge aus einem Daten-verbindenen-Pfad besteht, der von den Blättern zum Wurzelhash gehalten wird. Um die Daten zu verifizieren, ist es notwendig, nicht nur die zwischen-Hashes, die jedes Blatt mit der Wurzel verbinden, zu haben, sondern auch alle Geschwisterknoten. Jeder Knoten im Beweis hat ein Geschwister, mit dem es gehashed ist, um den nächsten Hash hoch am Baum zu erzeugen. Das sind viele Daten. Verkle Trees reduzieren die Größe eines Zeugen, indem sie die Distanz zwischen Blättern des Baumes und ihrer Wurzel reduzieren und zudem Geschwisterknoten zur Verifizierung des Wurzelhashes unnötig machen. Noch mehr Speichereffizienz kann durch die Nutzung von Polynombindungs-Schemata anstatt der Hash-Stil Vectorbindung erreicht werden. Polynombindung erlaubt es Zeugen, eine feste Größe unabhängig der Anzahl der zu beweisenden Blätter zu haben.
In einem Polynombindungs-Schema haben die Zeugen überschaubare Größen, die leicht unter Netzwerkteilnehmern versendet werden können. Dies erlaubt Clients, Zustandsveränderungen in jedem Block mit minimaler Menge an Daten zu verifizieren.
Wie sieht die Struktur von Verkle Bäumen aus?
Verkle Bäume sind (key,value)
Paare, in denen die keys 32-byte Elemente zusammengestellt aus einem 31-byte stem und einem einzelnen byte suffix sind. Diese Schlüssel sind in extension Knoten und inner Knoten organisiert. Erweiterungsknoten repräsentieren einen einzelnen Stamm für 256 Kinder mit verschiedenen Suffixes. Innere-Knoten haben auch 256 Kinder, aber sie können andere Erweiterungsknoten sein. Der Hauptunterschied zwischen Verklebaum- und Merklebaum-Struktur ist, dass der Verkle Baum viel flacher mit weniger Zwischenknoten ist, die das Blatt zur Wurzel verbinden und so insgesamt weniger Daten benötigen, um einen Beweis zu generieren.
Lesen Sie mehr üner die Struktur von Verkle Bäumen(opens in a new tab)
Aktueller Fortschritt
Verkle Tree Testnetzwerke laufen bereits, aber es sind noch substantielle Updates der Clients vonnöten, um Verkle Bäume zu unterstützen. Sie können dazu beitragen, den Fortschritt zu beschleunigen, indem Sie Kontrakte in die Testnets einbringen oder Testnet-Clients betreiben.
Entdecken Sie das Verkle Gen Devnet 2-Testnetz(opens in a new tab)
Sehen Sie sich an, wie Guillaume Ballet das Condrieu Verkle-Testnetz erklärt(opens in a new tab) (beachten Sie, dass das Condrieu-Testnetz Proof-of-Work war und durch das Verkle Gen Devnet 2-Testnetz ersetzt wurde).
Weiterführende Informationen
- Verkle Trees für Zustandslosigkeit(opens in a new tab)
- Dankrad Feist erklärt Verkle Trees bei PEEPanEIP(opens in a new tab)
- Guillaume Ballet erklärt Verkle Trees bei ETHGlobal(opens in a new tab)
- "Wie Verkle Trees Ethereum schlank und super machen" von Guillaume Ballet bei Devcon 6(opens in a new tab)
- Piper Merriam über zustandsfreie Clients bei ETHDenver 2020(opens in a new tab)
- Dankrad Fiest erklärt Verkle Trees und Zustandslosigkeit im Podcast zu Null-Wissen(opens in a new tab)
- Vitalik Buterin über Verkle Trees(opens in a new tab)
- Dankrad Feist über Verkle Trees(opens in a new tab)
- Verkle Trees EIP Dokumentation(opens in a new tab)