Ursprünglicher Titel: „Mögliche Zukünfte des Ethereum-Protokolls, Teil 4: The Verge“
Original author: Vitalik Buterin
原文编译:Mensh,ChainCatcher
Vielen Dank an Justin Drake, Hsia-wei Wanp, Guillaume Ballet, Icinacio, Rosh Rudolf, Lev Soukhanoy, Ryan Sean Adams und Uma Roy für ihr Feedback und ihre Überprüfung.
Einer der mächtigsten Funktionen von Block ist, dass jeder eine Node auf seinem eigenen Computer ausführen und die Richtigkeit der Block-Chain überprüfen kann. Selbst wenn 9596 Nodes, die die Konsensregeln (PoW, PoS) der Chain ausführen, sofort einer Regeländerung zustimmen und beginnen, Blocks gemäß den neuen Regeln zu produzieren, wird jeder, der eine vollständig überprüfte Node betreibt, die Chain ablehnen. Die Münzpräger, die nicht Teil dieser Verschwörungsgruppe sind, werden automatisch zu einer on-chain wechseln, die weiterhin den alten Regeln folgt, und diese Chain weiter aufbauen, während vollständig überprüfte Benutzer dieser Chain folgen werden.
Dies ist der entscheidende Unterschied zwischen Blockchain und zentralisierten Systemen. Um diese Eigenschaft jedoch wahr werden zu lassen, muss es praktikabel sein, dass eine vollständig verifizierte Node von genügend vielen Personen betrieben wird. Dies gilt sowohl für Staker (da sie ohne Überprüfung der Kette keinen Beitrag zur Einhaltung der Protokollregeln leisten) als auch für normale Benutzer. Heutzutage ist es möglich, eine Node auf Consumer-Laptops (einschließlich des Laptops, den ich zum Schreiben dieses Artikels verwende) auszuführen, aber es ist schwierig, dies zu erreichen. The Verge will diese Situation ändern, indem die Berechnungskosten für eine vollständig verifizierte Kette gesenkt werden, sodass jeder Mobil-Wallet, Browser-Wallet und sogar Smartwatch standardmäßig verifiziert werden kann.
Die Verge 2023 Roadmap
Ursprünglich bezog sich “Verge” auf den Transfer des Ethereum-Statusspeichers auf einen Verkle-Baum - eine baumartige Struktur, die kompaktere Beweise ermöglicht und die zustandslose Verifizierung von Ethereum-Blöcken ermöglicht. Ein Node kann einen Ethereum-Block verifizieren, ohne den Ethereum-Status (Kontostand, Vertragscode, Speicherplatz usw.) auf seiner Festplatte speichern zu müssen, jedoch auf Kosten von einigen hundert KB an Beweisdaten und einigen hundert Millisekunden zusätzlicher Zeit für die Verifizierung eines Beweises. Heutzutage steht Verge für eine größere Vision, die sich auf die Maximierung der Ressourceneffizienz der Ethereum-Blockchain konzentriert, einschließlich nicht nur der zustandslosen Verifizierungstechnologie, sondern auch der Verwendung von SNARK zur Verifizierung aller Ethereum-Transaktionen.
Neben der langfristigen Folgen für die Überprüfung der gesamten SNARK-Kette gibt es ein weiteres neues Problem, das mit der Frage zusammenhängt, ob Verkle Trees die beste Technologie sind. Verkle Trees sind anfällig für Angriffe von Quantencomputern. Wenn wir also Verkle Trees im derzeitigen KECCAK Merkle Patricia Tree verwenden, müssen wir den Baum später erneut ersetzen. Der Selbstersetzungsansatz von Merkle Trees besteht darin, STARKs zu überspringen, die Merkle-Verzweigungen verwenden, und sie in den binären Baum einfügen. Historisch gesehen wurde diese Methode aufgrund der Kosten und der technischen Komplexität als nicht praktikabel angesehen. In letzter Zeit haben wir jedoch gesehen, dass Starkware auf einem Laptop ckcle STARKs verwendet hat, um 1,7 Millionen Poseidon Hashes pro Sekunde zu beweisen. Durch die Einführung von GKB und anderen Technologien verkürzt sich auch die Beweiszeit für mehr “traditionelle” Hash-Werte. Daher ist “Verge” im letzten Jahr offener geworden und es gibt mehrere Möglichkeiten.
The Verge: Schlüsselziel
In diesem Kapitel
Heutzutage muss der ETH-Client Hunderte von Gigabytes an Statusdaten speichern, um Blocks zu überprüfen, und diese Menge nimmt jedes Jahr zu. Die ursprünglichen Statusdaten wachsen jedes Jahr um etwa 30 GB, und jeder einzelne Client muss einige zusätzliche Daten speichern, um das Tripel effektiv zu aktualisieren.
Dies reduziert die Anzahl der Benutzer, die einen vollständig validierenden Ethereum-Node betreiben können: Obwohl Festplatten, die groß genug sind, um den gesamten Ethereum-Zustand und sogar mehrere Jahre Geschichte zu speichern, allgegenwärtig sind, verfügen die von Menschen standardmäßig gekauften Computer oft nur über einige hundert Gigabyte oder Terabyte Speicherplatz. Die Zustandsgröße führt auch zu erheblichen Reibungsverlusten beim ersten Aufbau eines Nodes: Der Node muss den gesamten Zustand herunterladen, was Stunden oder sogar Tage dauern kann. Dies hat verschiedene Kettenreaktionen zur Folge. Zum Beispiel erhöht es erheblich die Schwierigkeit für Node-Betreiber, ihre Node-Einstellungen zu aktualisieren. Technisch gesehen ist es möglich, ein Upgrade ohne Ausfallzeit durchzuführen - indem ein neuer Client gestartet wird, auf dessen Synchronisierung gewartet wird, dann der alte Client geschlossen wird und der geheime Schlüssel übertragen wird - aber in der Praxis ist dies äußerst komplex.
Die zustandslose Überprüfung ist eine Technologie, die es Nodes ermöglicht, Blöcke zu überprüfen, ohne den gesamten Zustand zu kennen. Stattdessen ist jeder Block mit einem Zeugen versehen, der Folgendes enthält: (i) den Wert, den Code, das Guthaben und die Speicherung an bestimmten Stellen im Zustand, auf die dieser Block zugreifen wird; (ii) Verschlüsselungsbeweise, die belegen, dass diese Werte korrekt sind.
Tatsächlich erfordert die Implementierung der zustandslosen Verifizierung eine Änderung der Statusbaumstruktur von Ethereum. Dies liegt daran, dass der aktuelle Merkle Patricia-Baum extrem unfreundlich für die Implementierung von Verschlüsselungsnachweisschemata ist, insbesondere im schlimmsten Fall. Sowohl die “rohen” Merblk-Äste als auch die Möglichkeit, sie als STARK zu “verpacken”, sind so. Die Hauptprobleme resultieren aus einigen Schwächen von MPT:
Dies ist ein Baum mit sechs Gabelungen (d. h. jeder Knoten hat 16 Unter-Knoten). Das bedeutet, dass ein Beweis in einem Baum der Größe N im Durchschnitt etwa 32 * (16-1) * log 16(N) = 120 * log 2(N) Bytes benötigt, oder etwa 3840 Bytes in einem Baum mit 2 ^ 32 Elementen. Für einen binären Baum werden nur 32 * (2-1) * log 2(N) = 32 * log 2(N) Bytes benötigt, oder etwa 1024 Bytes.
Der Code wurde nicht merkleisiert. Das bedeutet, dass für jeden Zugriff auf den Konto-Code der gesamte Code, der maximal 24000 Bytes beträgt, vorgelegt werden muss.
Wir können den schlimmsten Fall wie folgt berechnen:
30000000 Gas / 2400 (冷Konto阅读成本) * (5 * 488 + 24000) = 330000000 字节
Die Zweigstelle Kosten sind leicht gesunken (ersetzt 5480 durch 8480), da der obere Teil bei vielen Zweigen wiederholt wird. Aber selbst dann ist es völlig unrealistisch, die Datenmenge innerhalb eines Zeitschlitzes herunterzuladen. Wenn wir versuchen, es mit STARK zu verpacken, stoßen wir auf zwei Probleme: (i) KECCAK ist relativ unfreundlich gegenüber STARK; (ii) 330 MB Daten bedeuten, dass wir 5 Millionen Aufrufe der KECCAK-Rundenfunktion nachweisen müssen, was für alle Hardware außer den leistungsstärksten Consumer-Hardware möglicherweise nicht nachgewiesen werden kann, selbst wenn wir STARK effizienter machen können, um KECCAK nachzuweisen.
Wenn wir den hexadezimalen Baum direkt durch einen Binärbaum ersetzen und den Code zusätzlich merkleisieren, wird der schlimmste Fall etwa 30000000/2400* 32*( 32-14+ 8) = 10400000 Bytes betragen (14 ist die Subtraktion der redundante Bits für 2 ^ 14 Zweige und 8 ist die Länge des Nachweises in den Blöcken des Codes). Es ist zu beachten, dass dies die Gas-Kosten ändern würde, um auf jeden einzelnen Codeblock zuzugreifen; EIP-4762 tut dies. Eine Kapazität von 10,4 MB ist viel besser, aber immer noch zu viel Daten für viele Knoten in einem Zeitschlitz zum Herunterladen. Daher müssen wir leistungsstärkere Technologien einführen. In dieser Hinsicht gibt es zwei führende Lösungen: Verkle-Bäume und STARKed binäre Hash-Bäume.
Verkle Tree verwendet elliptische Kurvenbasierte vektorielle Commitments für kürzere Nachweise. Der entscheidende Punkt ist, dass jeder Beweisteil für jede Eltern-Kind-Beziehung nur 32 Bytes beträgt, unabhängig von der Breite des Baums. Die einzige Begrenzung für die Breite des Beweisbaums besteht darin, dass die Effizienz der Berechnung der Nachweise abnimmt, wenn der Beweisbaum zu breit wird. Die Implementierung für Ethereum hat eine Breite von 256.
Daher wird die Größe eines einzelnen Zweigs im Beweis auf 32-1 OG 256(N) = 4 * log 2(N) Byte erhöht. Somit beträgt die theoretisch maximale Beweisgröße etwa 130.000 Byte (aufgrund der ungleichmäßigen Verteilung der Statusblöcke gibt es geringfügige Abweichungen vom tatsächlichen Berechnungsergebnis, aber es ist eine gute Annäherung).
Zu beachten ist, dass in allen obigen Beispielen der „worst case“ nicht der schlimmste Fall ist: Der schlimmere Fall ist, wenn ein Angreifer absichtlich zwei Adressen „abbaut“, sodass sie in einem Baum eine längere gemeinsame Präfixlänge haben und von einer Adresse Daten gelesen werden, was die Länge des Zweigs im schlimmsten Fall um das Doppelte verlängern könnte. Selbst in einem solchen Fall beträgt die Länge des schlimmsten Falles des Verkle- Baums 2,6 MB, was im Wesentlichen mit den derzeitigen Überprüfungsdaten im schlimmsten Fall übereinstimmt.
Wir haben auch etwas mit dieser Anmerkung gemacht: Wir haben die Kosten für den Zugriff auf ‘angrenzenden’ Speicherplatz sehr niedrig gemacht, entweder durch viele Codeblöcke des gleichen Vertrags oder durch benachbarte Speicherslots. EIP-4762 definiert die Nachbarschaft und erhebt nur 200 Gas für den Zugriff auf Nachbarschaften. Bei benachbartem Zugriff beträgt die maximale Größe des Nachweises immer noch etwa 30000000 / 200 * 32 - 4800800 Byte, was immer noch im Toleranzbereich liegt. Wenn wir aus Sicherheitsgründen diesen Wert weiter reduzieren möchten, können wir die Kosten für den benachbarten Zugriff leicht erhöhen.
Das Prinzip dieser Technologie ist offensichtlich: Sie benötigen lediglich einen Binärbaum, um den Nachweis für den Wert im Block zu erbringen und einen maximalen Nachweis von 10,4 MB zu erhalten. Dann wird der Nachweis durch den STARK ersetzt. Der Nachweis selbst enthält nur die zu beweisenden Daten sowie eine feste Overhead-Größe von 100-300 kB aus dem tatsächlichen STARK.
Die Hauptherausforderung hier besteht darin, die Zeit zu verifizieren. Wir können die gleichen Berechnungen wie oben durchführen, nur dass wir keine Byte-Anzahl, sondern einen Hash-Wert berechnen. Ein Block von 10,4 MB bedeutet 330.000 Hash-Werte. Wenn wir die Möglichkeit eines Angreifers hinzufügen, in dem ‘Adresse’ Baum einen längeren gemeinsamen Präfix zu ‘minen’, dann könnten wir im schlimmsten Fall etwa 660.000 Hash-Werte erreichen. Daher ist es kein Problem, wenn wir nachweisen können, dass die Anzahl der Hash-Werte pro Sekunde 200.000 beträgt.
Auf Verbraucher-Laptops, die die Poseidon-Hash-Funktion verwenden, wurden diese Zahlen erreicht, wobei die Poseidon-Hash-Funktion speziell für die STARK-Freundlichkeit entwickelt wurde. Das Poseidon-System ist jedoch noch relativ unreif, so dass viele Menschen ihm noch nicht vertrauen. Es gibt daher zwei realistische Wege nach vorne:
Um die Konservativität der Hash-Funktion zu beweisen, kann der STARK-Ring von Starkware zum Zeitpunkt der Abfassung dieses Artikels nur 10-30 k Hashwerte pro Sekunde auf einem Consumer-Notebook nachweisen. Allerdings verbessert sich die STARK-Technologie rasant. Selbst heute zeigt die GKR-basierte Technologie das Potenzial, diese Geschwindigkeit auf den Bereich von 100-2 O 0 k zu erhöhen.
Anwendungsfälle für Zeugen außerhalb der Blockverifizierung
Neben der Validierung von Block gibt es drei weitere wichtige Anwendungsfälle, die eine effizientere zustandslose Validierung erfordern:
Alle diese Anwendungsfälle haben etwas gemeinsam: Sie benötigen alle viele Beweise, aber jeder Beweis ist klein. Daher haben STARK-Beweise für sie keine praktische Bedeutung; stattdessen ist es am realistischsten, direkt Merkle-Verzweigungen zu verwenden. Ein weiterer Vorteil von Merkle-Verzweigungen ist, dass sie aktualisierbar sind: Mit einem Beweis für einen Zustandsobjekt X mit dem Block B als Wurzel kann der Beweis aktualisiert werden, wenn ein Unterblock B 2 und sein Zeuge empfangen werden, um ihn auf den Block B 2 als Wurzel zu aktualisieren. Verkle-Beweise sind ebenfalls nativ aktualisierbar.
Die verbleibende Hauptaufgabe ist
Weitere Analyse der Auswirkungen von EIP-4762 (Änderungen der kostenfreien Gaspreise)
Mehr Arbeit zur Fertigstellung und Prüfung des Übergangsprogramms, dies ist ein wesentlicher Teil der Komplexität eines jeden staatenlosen Umsetzungsplans
Weitere Sicherheitsanalyse von Poseidon, Ajtai und anderen “STARK-freundlichen” Hash-Funktionen
Entwicklung eines extrem effizienten STARK-Protokollfunktionen für die “konservative” (oder “traditionelle”) Hash-Weiterentwicklung, z.B. basierend auf Binius oder GKR-Ansätzen.
Wir werden bald eine Entscheidung aus den folgenden drei Optionen treffen: (i) Verkle-Tree, (ii) STARK-freundliche Hash-Funktion und (iii) konservative Hash-Funktion. Ihre Eigenschaften können grob in der folgenden Tabelle zusammengefasst werden:
Abgesehen von diesen “Titelzahlen” gibt es noch einige andere wichtige Überlegungen:
Eine andere mögliche Methode, um die Verkle Zeugenschaftsaktualisierbarkeit auf eine quantensichere und effiziente Weise zu erreichen, besteht darin, einen Merkle-Baum auf der Grundlage eines Lattices zu verwenden.
Wenn im schlimmsten Fall nachgewiesen wird, dass die Effizienz des Systems nicht ausreicht, können wir unerwartete Werkzeuge wie Multidimensionales Gas nutzen, um diesen Mangel auszugleichen: separate Gasgrenzen für (i) Calldaten; (ii) Berechnung; (iii) Zustandszugriff und möglicherweise andere verschiedene Ressourcen. Multidimensionales Gas erhöht die Komplexität, aber im Gegenzug beschränkt es das Verhältnis zwischen durchschnittlichen und schlechtesten Fällen strenger. Mit Multidimensionalem Gas könnte die theoretisch maximale Anzahl von Zweigen von 12500 auf beispielsweise 3000 reduziert werden. Dies würde BLAKE 3 selbst heute (gerade noch) ausreichend machen.
Multi-dimensionales Gas ermöglicht eine Block-Ressourcenbegrenzung, die näher an der Ressourcenbegrenzung der zugrunde liegenden Hardware liegt.
Ein weiteres unerwartetes Werkzeug ist die Berechnung der Latenzzeit des Zustandswurzels nach dem Block. Dadurch haben wir volle 12 Sekunden Zeit, um den Zustandswurzel zu berechnen. Das bedeutet, dass selbst in extremsten Fällen nur 60000 Hashes pro Sekunde ausreichend sind, was uns erneut zu der Annahme veranlasst, dass BLAKE 3 nur knapp ausreicht, um die Anforderungen zu erfüllen.
Ein Nachteil dieser Methode ist, dass sie die Latenzzeit eines Light Clients’ erhöht, jedoch gibt es auch raffiniertere Techniken, um diese Latenzzeit auf die Generierung der Nachweise zu reduzieren. Zum Beispiel können die Nachweise sofort nach der Generierung in einem beliebigen Node im Netzwerk ausgestrahlt werden, anstatt auf den nächsten Block zu warten.
Die Lösung des Zustandslosigkeitsproblems erhöht die Schwierigkeit erheblich, einzelne Standorte zu treffen. Wenn es Techniken gibt, um das Mindestgleichgewicht für einzelne Standorte zu senken, wie Orbit SSF oder Anwendungs-Layer-Strategien wie Team-Standorte, würde dies praktikabler werden.
Wenn gleichzeitig EOF eingeführt wird, wird die multidimensionale Gasanalyse viel einfacher. Dies liegt daran, dass die Hauptausführungskomplexität des multidimensionalen Gases darin besteht, mit den Unteranrufen umzugehen, die nicht das gesamte Gas des übergeordneten Aufrufs übertragen, während EOF einfach solche Unteranrufe als ungültig markieren muss, um dieses Problem unbedeutend zu machen (und eine Alternative innerhalb des Protokolls für einen Teil der aktuellen Hauptgasnutzung des nativen Kontos bereitzustellen.
Zwischen der zustandslosen Validierung und dem historischen Ablauf besteht auch eine wichtige Synergie. Heutzutage muss der Client fast 1 TB historische Daten speichern; diese Daten sind das Vielfache der Zustandsdaten. Selbst wenn der Client zustandslos ist, wird der Traum eines nahezu speicherlosen Clients kaum Realität, es sei denn, wir können ihn von der Verantwortung entbinden, historische Daten zu speichern. Der erste Schritt in diese Richtung ist EIP-4444, was auch bedeutet, dass historische Daten in Torrents oder im Portal Network gespeichert werden.
Das langfristige Ziel der Ethereum-Blockverifizierung ist klar definiert - Ethereum-Blöcke sollten auf folgende Weise verifiziert werden können: (i) Herunterladen des Blocks oder sogar nur eines kleinen Teils des Blocks, der Datenverfügbarkeitsstichproben enthält; (ii) Verifizieren eines kleinen Nachweises für die Gültigkeit des Blocks. Dies ist eine ressourcenschonende Operation, die in einer mobilen App, einer Browser-Wallet oder sogar in einer anderen Chain durchgeführt werden kann (ohne den Datenverfügbarkeitsteil).
Um dies zu erreichen, müssen (i) die Konsensebene (d. h. Proof of Stake) und (ii) die Ausführungsebene (d. h. EVM) mit SNARK oder STARK nachgewiesen werden. Ersteres ist an sich schon eine Herausforderung, die im weiteren Verbesserungsprozess der Konsensebene angegangen werden sollte (z. B. im Hinblick auf die endgültige Abwicklung eines einzelnen Slots). Letzteres erfordert einen Nachweis der EVM-Ausführung.
Vom formalen Standpunkt aus betrachtet wird EVM in der ETH-Blockspezifikation als Zustandsübergangsfunktion definiert: Sie haben einen Ausgangszustand S, einen Block B und Sie berechnen einen neuen Zustand S’ = STF(S, B). Wenn der Benutzer den Light-Client verwendet, besitzt er nicht vollständig S und S’, oder sogar E; stattdessen hat er eine vorherige Zustandswurzel R, eine neue Zustandswurzel R’ und einen Block-Hash-Wert H.
Wenn diese Situation vorliegt, kann ein leichter Client erstellt werden, der die vollständige Überprüfung der ETH-Blockkette und der EVM-Ausführung durchführt. Dies bedeutet, dass die Ressourcen des Clients bereits ziemlich gering sind. Um einen vollständig verifizierten ETH-Blockketten-Client zu implementieren, muss auch in Bezug auf Konsensarbeit geleistet werden.
Die Implementierung des Gültigkeitsnachweises für die EVM-Berechnung existiert bereits und wird von L2 häufig verwendet. Es gibt jedoch noch viel Arbeit zu tun, um den EVM-Gültigkeitsnachweis auf L1 praktikabel zu machen.
Heutzutage weist das elektronische Buchführungssystem in zwei Aspekten Mängel auf: Sicherheit und Überprüfungszeit.
Ein sicherer Gültigkeitsnachweis gewährleistet, dass SNARK tatsächlich die Berechnung des EVM überprüft und keine Schwachstellen aufweist. Zwei Haupttechniken zur Verbesserung der Sicherheit sind Multi-Validator und formale Verifikation. Unter Multi-Validator versteht man mehrere unabhängig voneinander entwickelte Implementierungen von Gültigkeitsnachweis, ähnlich wie mehrere Clients. Wenn ein Block von einer ausreichend großen Teilmenge dieser Implementierungen nachgewiesen wird, akzeptiert der Client den Block. Die formale Verifikation beinhaltet die Verwendung von Tools, die normalerweise zur Beweisführung mathematischer Theoreme verwendet werden, wie z.B. Lean 4, um zu beweisen, dass der Gültigkeitsnachweis nur korrekt ausgeführte zugrunde liegende EVM-Spezifikationen akzeptiert (z.B. EVM K-Semantik oder die mit Python geschriebene EELS-Eth-Schichtspezifikation).
Eine ausreichend schnelle Bestätigungszeit bedeutet, dass jeder Ether-Block in weniger als 4 Sekunden bestätigt werden kann. Heute sind wir noch weit von diesem Ziel entfernt, obwohl wir viel näher dran sind als vor zwei Jahren vorgestellt. Um dieses Ziel zu erreichen, müssen wir in drei Bereichen Fortschritte erzielen:
Die Umsetzung dieses Vorhabens birgt Herausforderungen. Selbst im ungünstigsten Fall, wenn eine sehr große Transaktion den gesamten Block einnimmt, darf die Berechnung nicht sequenziell erfolgen, sondern muss anhand der Opcodes (Opcodes der zugrunde liegenden Virtuellen Maschine wie EVM oder RISC-V) erfolgen. Die Gewährleistung der Konsistenz des “Speichers” der Virtuellen Maschine zwischen den verschiedenen Teilen des Nachweises ist eine entscheidende Herausforderung bei der Umsetzung. Wenn wir jedoch diesen rekursiven Nachweis erbringen können, wissen wir, dass zumindest das Latenzproblem des Beweisers gelöst ist, selbst wenn in anderen Bereichen keine Verbesserungen vorgenommen wurden.
Die Veränderung der Gas-Kosten - Wenn eine Operation lange dauert, um nachzuweisen, sollte selbst wenn ihre Berechnungsgeschwindigkeit relativ hoch ist, die Gas-Kosten sehr hoch sein. EIP-7667 ist ein EIP, das für die Behandlung dieses schwerwiegendsten Problems vorgeschlagen wurde: Es erhöht erheblich die Gas-Kosten von (traditionellen) Hash-Funktionen, da die Operationen und Precompiles dieser Funktionen relativ günstig sind. Um diese erhöhten Gas-Kosten auszugleichen, können wir die Gas-Kosten der EVM-Operationen senken, die günstig zu beweisen sind, und damit die durchschnittliche Durchsatzrate aufrechterhalten.
Datenaustausch: Neben dem Austausch des Statusbaums durch eine STARK-freundlichere Methode müssen wir auch Transaktionslisten, Quittungsbäume und andere kostspielige Strukturen ersetzen. Etan Kissling hat mit der Verschiebung der Transaktions- und Quittungsstruktur zu SSZ einen Schritt in diese Richtung gemacht.
Darüber hinaus können die beiden in der vorherigen Sektion erwähnten Tools (Multidimensionale Gas und Latenzzeit-Status-Root) ebenfalls hilfreich sein. Es ist jedoch zu beachten, dass im Gegensatz zur Zustandslosen Überprüfung die Verwendung dieser beiden Tools bedeutet, dass wir bereits genügend Technologie besitzen, um die derzeit erforderliche Arbeit zu erledigen, und selbst bei Verwendung dieser Technologien erfordert die vollständige ZK-EVM-Überprüfung jedoch mehr Arbeit - es wird nur weniger davon benötigt.
Ein Punkt, der im obigen Text nicht erwähnt wurde, sind die Nachweiserhardwares: GPUs, FPGAs und ASICs werden verwendet, um Nachweise schneller zu generieren. Fabric Cryptography, Cysic und Accseal sind drei Unternehmen, die in diesem Bereich Fortschritte gemacht haben. Dies ist für L2 sehr wertvoll, aber wahrscheinlich kein entscheidender Faktor für L1, da die Menschen darauf bestehen, dass L1 stark dezentralisiert bleibt. Das bedeutet, dass die Nachweisgenerierung im vernünftigen Bereich der ETH-Community bleiben muss und nicht durch Engpässe einzelner Unternehmenshardware eingeschränkt werden sollte. L2 kann aktivere Kompromisse eingehen.
In diesen Bereichen gibt es noch viel mehr Arbeit zu tun:
Wie interagiert es mit anderen Teilen der Roadmap?
Die Kerntechnologie, die für die Erfüllung des L1 EVM Gültigkeitsnachweises erforderlich ist, wird weitgehend mit den beiden anderen Bereichen geteilt:
Eine erfolgreiche Implementierung des Gültigkeitsnachweises in L1 wird endlich zu einem einfachen Ein-Spieler-Staken führen: Selbst die schwächsten Computer (einschließlich Mobiltelefone oder Smartwatches) können eingesetzt werden. Dies erhöht den Wert der Auseinandersetzung mit den anderen Einschränkungen von Solo-Stakes, wie z. B. dem Minimum von 32 ETH.
Zusätzlich kann der EVM Gültigkeitsnachweis von L1 die Gasgrenze von L1 erheblich erhöhen.
Wenn wir einen ETH-Block vollständig mit SNARK überprüfen möchten, ist die Ausführung der EVM nicht der einzige Teil, den wir nachweisen müssen. Wir müssen auch den Konsens nachweisen, d.h. den Teil des Systems, der Einzahlungen, Abhebungen, das Signieren, das Aktualisieren des Validator-Guthabens und andere Elemente des Proof-of-Stake-Teils von ETH-Block bewältigt.
Konsens ist viel einfacher als EVM, aber die Herausforderung besteht darin, dass wir kein L2 EVM-Modul haben, sodass die meiste Arbeit so oder so erledigt werden muss. Daher erfordert die Implementierung eines Konsensmechanismus für die Ethereum-Blockchain ein ‘von Grund auf’ Vorgehen, obwohl das Beweissystem selbst eine gemeinsame Arbeit darstellen kann.
Was ist das und wie funktioniert es?
beacon chain wird als Statusübergangsfunktion definiert, ähnlich wie die EVM. Die Statusübergangsfunktion besteht hauptsächlich aus drei Teilen:
In jedem Block müssen wir für jeden Prüfer 1-16 BLS 12-381 ECADD nachweisen (möglicherweise mehr als einen, da die Signatur in mehreren Sammlungen enthalten sein kann). Dies kann durch die Technik der Vorab-Berechnung von Teilmengen ausgeglichen werden, so dass wir sagen können, dass jeder Prüfer nur einen BLS 12-381 ECADD nachweisen muss. Derzeit gibt es 30.000 Prüfersignaturen pro Slot. In Zukunft könnte sich dies mit der Implementierung der finalen Eindeutigkeit eines einzelnen Slots in zwei Richtungen ändern: Wenn wir den “Brute-Force”-Ansatz verfolgen, könnte die Anzahl der Prüfer pro Slot auf 1 Million steigen. Gleichzeitig würde bei Verwendung von Orbit SSF die Anzahl der Prüfer bei 32.768 bleiben oder sogar auf 8192 abnehmen.
Wie funktioniert die BLS-Aggregation: Die Überprüfung der Gesamtunterschrift erfordert nur eine ECADD pro Teilnehmer, anstelle von ECMUL. Aber 30000 ECADD ist immer noch eine große Menge an Nachweisen.
In Bezug auf Paarungen gibt es derzeit maximal 128 Nachweise pro Steckplatz, was bedeutet, dass 128 Paarungen überprüft werden müssen. Mit ElP-7549 und weiteren Änderungen kann die Anzahl der Nachweise pro Steckplatz auf 16 reduziert werden. Die Anzahl der Paarungen ist gering, aber die Kosten sind extrem hoch: Die Laufzeit (oder der Nachweis) für jede Paarung dauert mehrere tausend Mal länger als ECADD.
Eine der Hauptherausforderungen bei der Berechnung von BLS 12-381 ist, dass es keine bequemen Kurven gibt, deren Ordnung der Feldgröße von BLS 12-381 entspricht, was jedem Beweissystem erhebliche Kosten verursacht. Andererseits wurde für Ethereum die Verkle-Baumstruktur mit der Bandersnatch-Kurve konstruiert, wodurch BLS 12-381 selbst zu einer Selbstkurve für den Nachweis von Verkle-Verzweigungen in SNARK-Systemen wird. Eine recht einfache Implementierung kann 100 G1-Additionen pro Sekunde nachweisen; um die Nachweisgeschwindigkeit ausreichend schnell zu machen, ist fast sicher eine clevere Technik wie GKR erforderlich.
Für den SHA 256-Hashwert ist die momentan schlechteste Situation die Ära-Konvertierungsblöcke, bei denen der gesamte Prüfer-Saldo-Baum und eine große Anzahl von Prüfer-Salden aktualisiert werden. Jeder Prüfer-Saldo-Baum hat nur ein Byte, sodass 1 MB Daten erneut gehasht werden. Dies entspricht 32768 SHA 256-Aufrufen. Wenn tausend Prüfer-Salden über oder unter einem Schwellenwert liegen, müssen die gültigen Salden in den Prüfer-Records aktualisiert werden, was tausend Merkle-Zweige entspricht und daher möglicherweise zehntausend Hash-Werte erfordert. Das Mischen erfordert 90 Bit pro Prüfer (daher 11 MB Daten), kann jedoch zu jeder Zeit in einer Ära berechnet werden. In bestimmten Fällen können diese Zahlen je nach den spezifischen Umständen bei Einzelschlussterminen variieren. Das Mischen wird überflüssig, obwohl Orbit möglicherweise in gewissem Maße diese Anforderung wiederherstellt.
Eine weitere Herausforderung besteht darin, dass alle Validator-Status, einschließlich des öffentlichen Schlüssels, erneut abgerufen werden müssen, um einen Block zu validieren. Für eine Million Validator bedeutet dies allein das Lesen des öffentlichen Schlüssels 48 Millionen Bytes, zusammen mit dem Merkle-Zweig. Dies erfordert Millionen von Hash-Werten für jede Epoche. Wenn wir die Gültigkeit des PoS nachweisen müssen, ist eine praktikable Methode eine Form von inkrementeller verifizierbarer Berechnung: Speichern einer separaten Datenstruktur im Beweissystem, die optimiert ist, um effizient zu suchen und Updates für diese Struktur nachzuweisen.
Insgesamt gibt es viele Herausforderungen. Um diesen Herausforderungen am effektivsten zu begegnen, ist es wahrscheinlich erforderlich, eine gründliche Neugestaltung der Beacon Chain vorzunehmen, möglicherweise zusammen mit dem Übergang zum Single-Slot-Ende. Die Merkmale dieser Neugestaltung könnten Folgendes umfassen:
Tatsächlich benötigen wir mehrere Jahre, um den Gültigkeitsnachweis für den ETH-Konsens zu erhalten. Dies entspricht in etwa der Zeit, die wir benötigen, um Single-Slot-Endgültigkeit, Orbit, Signatur-Algorithmus-Änderungen und Sicherheitsanalysen umzusetzen. Sicherheitsanalysen erfordern jedoch genügend Vertrauen, um Hash-Funktionen wie Poseidon “aggressiv” zu verwenden. Daher ist es am klügsten, diese anderen Probleme zu lösen und dabei die Freundlichkeit von STARK zu berücksichtigen.
Die wichtigste Abwägung liegt wahrscheinlich in der Reihenfolge der Operationen, zwischen einem schrittweisen Ansatz zur Reform der Ethereum-Konsensschicht und einem aggressiveren Ansatz einer “one-time-change-many”. Für die EVM ist ein schrittweiser Ansatz sinnvoll, da er die Störungen der Abwärtskompatibilität minimiert. Für die Konsensschicht ist die Auswirkung auf die Abwärtskompatibilität geringer und es gibt auch Vorteile, die verschiedenen Details der Beacon Chain-Konstruktion umfassend zu überdenken, um die SNARK-Freundlichkeit optimal zu optimieren.
Bei der langfristigen Neugestaltung von ETH PoS muss die Freundlichkeit von STARK, insbesondere Einzel-Slot-Finalität, Orbit, Änderung des Signaturverfahrens und Signaturaggregation, an erster Stelle stehen.