Eigene Proof-Systemdesign-Philosophie

Feb 25 2023
Eigen-Perspektive: Eigen Network konzentriert sich auf die Bereitstellung von Middleware und Netzwerk zur Verbesserung der Privatsphäre für Full-Stack-Entwickler. Daher sollte die erste Zukunft unseres idealen Beweissystems eine benutzerseitige, datenschutzfreundliche Beweisberechnung bieten, was bedeutet, dass der Beweis kostengünstig (für die CPU geeignet) und transparent sein sollte.

Eigen-Perspektive: Eigen Network konzentriert sich auf die Bereitstellung von Middleware und Netzwerk zur Verbesserung der Privatsphäre für Full-Stack-Entwickler. Daher sollte die erste Zukunft unseres idealen Beweissystems eine benutzerseitige, datenschutzfreundliche Beweisberechnung bieten, was bedeutet, dass der Beweis kostengünstig (für die CPU geeignet) und transparent sein sollte. Zweitens gilt: Je niedriger die Verifizierungskosten auf der Ethereum-Blockchain, desto besser.

Analyse des bestehenden Beweissystems

Arithmetisierung: Bei der Arithmetisierung handelt es sich um den Prozess der Umwandlung einer Aussage zur Rechenintegrität (Computation Integrity, CI) in eine formale algebraische Sprache. Dieser Schritt dient zwei Zwecken: Erstens soll die CI-Erklärung klar und prägnant präsentiert werden; Zweitens ist die Einbettung der CI-Anweisung in den algebraischen Bereich für die letztgenannte Polynomkonvertierung eine Bettung. Derzeit ist die Halo2-Arithmetisierung am ausgereiftesten. Es wurden benutzerdefinierte Gates und Nachschlagetabellen implementiert.

Benutzerdefiniertes Gate: Das benutzerdefinierte Gate ermöglicht eine erhebliche Reduzierung der Schaltungsgröße (Anzahl der Gates) und erhöht die Entwurfsflexibilität der Schaltung. In der Praxis können zahlreiche Operationen wie Punktaddition und Skalarmultiplikation auf elliptischen Kurven als benutzerdefinierte Gatter konstruiert werden.

Nachschlagetabelle: für häufig verwendete Vorgänge die Nachschlagetabelle der legitimen (Eingabe-, Ausgabe-)Kombinationen; und der Prüfer argumentiert, dass die Zeugenwerte in dieser Tabelle vorhanden sind. Es reduziert die Schaltkreisgatter für die Hash-Funktionen sha256 oder keccak erheblich, verbunden mit den Kosten einer leicht erhöhten Validierungskomplexität. Um zkEVM zu implementieren, müssen wir die Nachschlagetabelle verwenden, um Speicherlese- und -schreibfunktionen zu implementieren.

Beweissystem: Ein wissensfreier Beweis ist eine Methode, mit der eine Partei (der Beweiser) einer anderen Partei (dem Prüfer) beweisen kann, dass eine bestimmte Aussage wahr ist, während der Beweiser die Übermittlung zusätzlicher Informationen außer der Tatsache, dass die Aussage wahr ist, vermeidet in der Tat wahr. Engagement ist beim Zero-Knowledge-Proof sehr wichtig. Zu den derzeit beliebtesten Commitment-Schemata gehören KZG-Commitment, Merkle-Commitment (oder Polynomial Low Degree Detection, FRI) und Vector Inner Product Commitment (IPAs).

Der rekursive Zero-Knowledge-Proof ist in zwei Schichten unterteilt: die untere und die obere Schicht. Die unterste Ebene enthält eine Rekursionsebene. Das Ziel jeder Schicht ist wie folgt: (1) Die unterste Schicht: je schneller, desto besser; (2) Die oberste Ebene: Je kleiner die Beweisgröße, desto besser, und je geringer der Rechenaufwand, desto besser.

Tab 1. Vergleich der Kernparameter
Tab 2. Groth16 und Plonk

aus dem Plonk-Artikel: m = Anzahl der Drähte, n = Anzahl der Multiplikationsgatter, a = Anzahl der Additionsgatter, P = Paarung, l = Anzahl der Pub-Eingänge.

(1) Gemäß Tabelle 1 konzentrieren wir uns auf die Parameter Beweisgröße und überprüfen die Zeit. KZG ist das Beste, IPAs sind das Zweite und FRI ist das Schlechteste. (2) Gemäß Tabelle 2 konzentrieren wir uns auf die Beweisgröße und die Überprüfungszeit. Groth16 ist dem Plonk-Beweissystem (Kate Commitment) überlegen. Da der Aufbau des Groth16-Systems nicht universell ist, kann es nicht direkt in zkVM oder zkEVM verwendet werden.

Abgesehen von zkVM als Arithmetisierungsschicht wählen wir für einige Szenarien, wie privates DEX, zk KYC oder den Nachweis der Datenintegrität, für die zkVM nicht erforderlich ist, schließlich das Plonk-Proof-System als oberste Schicht.

Eigen Network verfügt auch über einige frühere Arbeiten zum Aufbau eines Aggregationsnachweises und zur Aktivierung der GPU-Beschleunigung (und wird ffplonk unterstützen , um die Gaskosten in Zukunft zu senken).

(1) Gemäß Tabelle 2 ist das Setup von Groth16 nicht universell und unterstützt keine rekursive Unterstützung, daher schließen wir es aus. Das Plonk-System hat das gleiche Problem. Also lehnen wir es auch ab. (2) FRI und IPAs sind in der rekursiven Schicht sehr einfach. Da das FRI-System eine spezielle Gruppenoptimierungstechnik verwendet, ist die Beweisgeschwindigkeit schneller. Daher haben wir uns für das FRI-System in der untersten Ebene entschieden.

Wir freuen uns sehr, Ihnen mitteilen zu können, dass wir den ersten Rusty Pil-Stark (von Polygon Hermez) bauen und parallele Merkelisierung und parallele FFT unterstützen.

Die Architektur des Eigenbeweissystems ist in Abb. 1 dargestellt.

Abb. 1: Layered Proof System

Das auf dem Goldlöckchen-Feld basierende FRI-Proof-System verfügt über die schnellste Proof-Geschwindigkeit, was die System-Proof-Zeit am kürzesten macht und dem Benutzer das beste Erlebnis bietet. Das Plonk-System weist die kleinste Prüfgröße und die geringste Verifizierungskomplexität auf, wodurch das System das niedrigste Speichergas und den niedrigsten Verifizierungsgasverbrauch aufweist. Daher vereint das Eigenbeweissystem die Vorteile beider und ist das beste Beweissystem im ZK-Bereich.

Derzeit haben wir das Beweissystem in eigen-zkvm als Open-Source-Version bereitgestellt . Schauen Sie sich die Readme-Datei an und probieren Sie das Fibonacci-Beispiel aus.

Schließen

Wir haben das MVP unseres Layered-Proof-Systems fertiggestellt und die zkVM von Hermez auf unser Proof-System migriert. Das vollständige Beispiel finden Sie hier: zkVM auf Eigen Layered Proof System .

Doch es kommen einige neue Herausforderungen auf uns zu. Da Multilayer mehrere Arithmetisierungen mit sich bringt, insbesondere beim Nachweis für zkVM. Daher ist die Parallelisierung der Arithmetisierungsphase unsere nächste wichtige Arbeit.