Mithilfe von Zero-Knowledge-Proofs versucht ZeroSync, die Rechenkosten für das Bootstrapping eines vollständig validierenden Bitcoin-Clients radikal zu reduzieren.
Dies ist ein Meinungsleitartikel von Shinobi, einem autodidaktischen Pädagogen im Bitcoin-Bereich und technisch orientierten Bitcoin-Podcast-Moderator.
Zero-Knowledge Proofs (ZKPs) werden in diesem Bereich seit über einem Jahrzehnt diskutiert. Sogar Satoshi Nakamoto selbst waren sie als Primitive bekannt, die verwendet werden konnten, und die Idee, sie auf Bitcoin anzuwenden, wurde bereits 2010 diskutiert, als sie noch aktiv waren.
Meiner Meinung nach waren sie schon immer eines der potenziellen „langfristigen“ Merkmale von Bitcoin, das nie wirklich eine solide, konkrete Implementierung hatte, aber am Ende eine enorme Menge an Wert und Nutzen für die in die Implementierung investierte Arbeit schaffen könnte ihnen. Wer würde nicht denken, dass es sehr wertvoll ist, kryptografisch zu beweisen, dass eine Aussage wahr ist oder dass Sie einige Informationen besitzen, ohne sie preiszugeben? Vor allem, wenn Sie dies für sehr komplizierte Dinge mit relativ kleinen Beweisen tun können?
Komplizierte und große Smart Contracts/Skripte zum Sperren von Bitcoin erfordern am Ende das Einfügen von proportional großen Zeugendaten in die Blockchain, um diese Münzen auszugeben. Das können entweder buchstäblich große Datenmengen sein, oder es können auch Daten sein, deren Berechnung und Überprüfung teuer sind. Dies ist ein herkömmlicher Kompromiss von Blockchains: Je komplizierter die Bedingung ist, die Sie für die Ausgabe von Münzen benötigen, desto teurer ist die Überprüfung oder es sind mehr Daten erforderlich, um sie auszugeben.
ZKPs wurden immer als Möglichkeit hingehalten, dies zu ändern, indem hochkomplizierte Skriptbedingungen mit einer kleinen oder konstanten Datenmenge bewiesen werden können, die, wenn sie verifiziert sind, definitiv zeigen, dass diese Bedingungen erfüllt waren. Dies liegt an der grundsätzlichen Asymmetrie zwischen Beweisen und Verifizieren mit ZKPs.
Um ein konkretes und möglichst einfaches Beispiel zu geben: Ringsignaturen sind eine sehr einfache Form von ZKP. Die Idee ist, eine Signatur bereitzustellen, die nachweislich von einem Schlüssel innerhalb einer großen Gruppe von Schlüsseln erstellt wurde, ohne genau zu verraten, welcher. Durch richtiges Definieren eines Signaturalgorithmus kann eine einzelne Signatur erzeugt werden, die mit dem gesamten Satz öffentlicher Schlüssel verifiziert werden kann und gezeigt werden kann, dass sie von einem von ihnen erzeugt wurde, aber verschleiert, welcher.
So funktionieren ZKPs auf sehr hohem Niveau. Sie erstellen ein Protokoll, um etwas zu beweisen, das eine Möglichkeit für die Person, die eine Tatsache behauptet, beinhaltet, einen Beweis zu liefern, und die Person, gegenüber der sie es behauptet, um es zu überprüfen. Bei Ringsignaturen handelt es sich um einen Signaturalgorithmus, der anhand eines Satzes öffentlicher Schlüssel validiert, ohne anzugeben, welcher. Das ist der entscheidende Punkt: Sie beweisen etwas, ohne tatsächlich die Informationen preiszugeben, die es herkömmlicherweise beweisen würden (in diesem Fall eine Signatur eines einzelnen öffentlichen Schlüssels).
Einführung von ZeroSync
Nach jahrelanger Diskussion über die Möglichkeiten werden endlich Fortschritte bei der Einführung von ZKPs in Bitcoin in Form des ZeroSync-Projekts erzielt. Der interessante Teil ist jedoch es hat nichts mit dem Sperren oder Ausgeben von Coins zu tun. Es kommt kein ZKP-OP-Code oder irgendeine Möglichkeit, Münzen mit ihnen an der Kette zu sperren. Es wird angewendet, um vollständige Knoten dabei zu unterstützen, eine viel schnellere anfängliche Synchronisierung durchzuführen.
Dies ist jedoch ein großes Unterfangen und nichts, was auf einmal passieren wird. Wie ich oben bei der Beschreibung von Ringsignaturen sagte, erfordert ein ZKP, dass ein Protokoll für jede spezifische Sache entworfen wird, die Sie zu beweisen versuchen. Es gibt keinen „Zero-Knowledge-Beweis“, der irgendetwas willkürlich beweisen kann, weil jeder sein eigenes eindeutiges Beweisprotokoll benötigt, um eine bestimmte Art von Berechnung oder Behauptung über eine Art von Daten ausreichend zu validieren.
ZeroSync arbeitet daran, iterativ drei Beweise zu erstellen, die nach Fertigstellung eine vollständige Überprüfung der historischen Blockchain liefern, ohne dass ein Benutzer sie tatsächlich herunterladen und verarbeiten muss. Das Tolle daran ist, dass absolut keine Konsensänderung des Bitcoin-Protokolls erforderlich ist, um dies zu erreichen. Alles geschieht einfach auf der Anwendungsebene, dh in der Software, die Sie ausführen. Es validiert und implementiert immer noch genau die gleichen Konsensregeln wie ein herkömmlicher Bitcoin-Knoten. Wenn Sie fertig sind, kann sich jeder einfach für die Verwendung eines solchen ZeroSync-Knotens entscheiden und sicher sein, dass das heruntergeladene UTXO-Set gültig ist. Oder Sie können Bitcoin Core einfach weiter ausführen und alles auf herkömmliche Weise vollständig validieren.
Block-Header-Proofs
Der erste Beweis, an dem das ZeroSync-Team arbeitet und der zu diesem Zeitpunkt veröffentlicht werden sollte, deckt die Gültigkeit von Block-Headern ab. Es beweist, dass jeder Block in der Kette die Schwierigkeitsanforderungen zu diesem Zeitpunkt korrekt erfüllte, und verfolgt jede Schwierigkeitsänderung, um sicherzustellen, dass jeder Block das entsprechende Ziel erreicht. Dies wird auch einen großen Vorteil für die Wallet-Architektur der Simplified Payment Verification (SPV) im Prozess mit sich bringen.
Jeder Bitcoin-Block ist im Wesentlichen ein Merkle-Baum jeder Transaktion im Block, plus dem Header, der einige andere Daten und die Wurzel dieses Merkle-Baums enthält. Der Block-Header-Beweis von ZeroSync wird im Verlauf der Konstruktion auch einen solchen Merkle-Baum anwenden jeden einzelnen Blockheader in der Kette. So wie jede Transaktion mit einem Merkle-Baum festgeschrieben wird, was zu einem einzelnen Hash führt, wird jeder Block in der Blockchain mithilfe eines Merkle-Baums einem einzelnen Hash zugeordnet. Dies wird wesentlich kompaktere SPV-Proofs ermöglichen. Derzeit muss ein Benutzer zur Implementierung von SPV eine vollständige Kopie jedes Block-Headers in der Blockchain aufbewahren und, wenn eine Transaktion und der Merkle-Baumpfad von ihr zum Block-Header bereitgestellt werden, diese verwenden, um zu überprüfen, ob sie tatsächlich festgeschrieben wurde Ein Block.
Mit Block-Header-Proofs müssten Benutzer nicht einmal eine Kopie der Block-Header haben, um zu überprüfen, ob eine Transaktion innerhalb der Blockchain festgeschrieben ist. Sie fügen einfach einen Merkle-Pfad vom Block-Header, in dem sich die Transaktion befindet, zum Root-Hash des aktuellen Blockchain-Merkle-Baums hinzu und bieten die gleichen Sicherheitsgarantien in Kombination mit einem ZKP der Block-Header-Beweisgültigkeit.
Überprüfen von Blockinhalten
Der zweite Beweis konzentriert sich auf die tatsächliche Gültigkeit des Inhalts des Blocks, beweist jedoch, wie die Assume Valid-Funktion von Bitcoin Core, nicht die Gültigkeit der Zeugendaten. Es wird die Begrenzung der Transaktionsgröße prüfen und verifizieren, coin Inflationsregeln usw., liefert aber keinen Beweis dafür, dass die Signaturen, Hash-Locks und andere Zeugendaten korrekt sind. Dieser Nachweis wird jedoch Utreexo einbeziehen, um das UTXO-Set bei jeder Blockhöhe in das gesamte ZKP-Protokoll für die Kette zu integrieren.
Der erste Beweis würde Ihnen einfach zeigen, dass die Blockheader gültig sind, aber das sagt nichts über die aus coin Netzteil oder das UTXO-Set. Dieser zweite Beweis würde es ermöglichen, dass ein UTXO-Set an einen Benutzer mit einem ZKP geliefert wird, der beweist, dass alle Blockheader, die zu diesem UTXO-Set führen, gültig sind, sowie eine Verpflichtung zu jedem UTXO-Set und allen Änderungen daran enthalten, die dies beweisen Der Übergang von einem zum nächsten ist ebenfalls gültig. Dies würde eine vollständige Synchronisierung bis zur standardmäßigen „Assume Valid“-Höhe von Bitcoin Core ermöglichen, wobei nur das UTXO auf diese Blockhöhe und ein winziger Beweis eingestellt sind, alles mit genau dem gleichen Vertrauensmodell wie das Herunterladen all dessen und das direkte Verifizieren der vollständigen Blöcke.
Überprüfung aller Zeugendaten
Schließlich wird der endgültige Beweis sowohl den ZKP für die Blockheader beinhalten als auch auf dem ZKP für Assume Valid aufbauen, um den Nachweis der Gültigkeit jedes Teils von Zeugendaten in der historischen Kette einzuschließen. Nach dieser Phase wird ein Knoten, der das endgültige ZeroSync-Proof-System verwendet, technisch gesehen tatsächlich in der Lage sein, mit einem einzigen Proof und einem UTXO-Set mit einem stärkeren Verifizierungsmodell als Bitcoin Core zu booten.
Normalerweise verwendet Bitcoin Core die standardmäßige Assume Valid-Blockhöhe, um die Witness-Validierung für jeden Block davor zu überspringen (obwohl der Benutzer mit annehmenvalid=0 überschreiben und Witnesses für jeden Block validieren kann), aber ein ZeroSync-Knoten hätte einen Korrektheitsnachweis für jeden Block Zeugendaten.
Das einzige Problem bei diesem letzten Beweis ist, dass die Rechenkomplexität, um ihn tatsächlich zu konstruieren, viel höher ist als die der beiden vorherigen. Das Verifizieren eines Beweises ist einfach und schnell und erfordert nur den ZKP und den Verifizierer, aber um ihn zu erstellen, müssen die vollständigen Rohdaten, die einen herkömmlichen Beweis darstellen würden (in diesem Fall die gesamte historische Blockchain), genommen und tatsächlich verarbeitet werden, um einen ZKP zu erstellen dafür. Das Hinzufügen der Zeugendaten in den Beweis ist derzeit sehr teuer. Um dieses Roadmap-Ziel zu erreichen, sind viele Optimierungen erforderlich. Aber nehmen wir an, dass es sich als undurchführbar erweist, dies zu tun. Dieses Projekt würde immer noch einen enormen Wert bieten, indem es Benutzern ermöglicht, bis zur standardmäßigen Blockhöhe von „Als gültig annehmen“ eine „Nullsynchronisierung“ durchzuführen und dann den Rest der Kette von dort bis zur Spitze auf herkömmliche Weise zu überprüfen.
Reduzierung der Rechenkosten von Bitcoin
Wenn seine Roadmap erfolgreich ist, könnte dieses Projekt einen massiven Einfluss auf die Reduzierung der Rechenkosten für Bitcoin-Benutzer haben, um einen vollständig validierenden Bitcoin-Client zu booten. Angesichts der Tatsache, dass die Blockchain derzeit fast 500 GB groß ist, gibt es sehr restriktive Kosten, die eine große Anzahl von Benutzern daran hindern, einen validierenden Client auszuführen. Sie müssen die verfügbare Bandbreite haben, um sie herunterzuladen, und in vielen Teilen der Welt ist Bandbreite immer noch unerschwinglich teuer. Sie brauchen auch ein Gerät, das leistungsfähig genug ist, um diese Daten zu verarbeiten, und in vielen Teilen der Welt haben die Menschen nichts als ein Smartphone in Bezug auf digitale Geräte, die sich mit dem Internet verbinden können.
ZeroSync könnte diese Kosten auf ein paar Gigabyte für das UTXO-Set und einen ZKP-Proof senken, der so klein ist, dass er auf eine 1,44-MB-Diskette passt. Und es erfordert keinerlei Konsensänderungen oder Forks, um dies zu tun.
Zum Abschluss möchte ich noch eine kleine Frechheit anmerken: ZeroSync basiert auf der von Starkware entwickelten Cairo-Sprache, einer Turing-vollständigen Sprache, die zum Erstellen von Zero-Knowledge-Systemen für beliebige Berechnungen verwendet werden kann. Starkware ist ein Unternehmen, das ZKPs für die entwickelt Ethereum Ökosystem, insbesondere die Entwicklung von Zero-Knowledge-Rollups als Second-Layer-Lösung. ZeroSync, das einen ZKP-verifizierten Synchronisierungsclient für Bitcoin entwickelt, könnte das erste Mal sein, dass eine echte Materialentwicklung aus einem Altcoin tatsächlich eine wertvolle Verbesserung hervorbringt, die sich wieder in das Bitcoin-Ökosystem einfügt.
ZKPs können zu einem sehr mächtigen Werkzeug für Bitcoin werden, auch ohne sie in die Konsensschicht einzubinden oder sie als eine Möglichkeit zu verwenden, Bitcoin tatsächlich zu sperren und auszugeben. Hoffentlich ist ZeroSync in der Lage, seine Roadmap-Ziele zu erreichen und den Quick-Sync-Client zu produzieren, an dem sein Team arbeitet. Danach könnte noch mehr getan werden, um ZKPs im Bitcoin-Ökosystem einzusetzen, abgesehen vom Bootstrapping eines Knotens.
Dies ist ein Gastbeitrag von Shinobi. Die geäußerten Meinungen sind ausschließlich ihre eigenen und spiegeln nicht unbedingt die von BTC Inc oder Bitcoin Magazine wider.