Mina Protokoll — Eine prägnante Blockchain

From Mina Wiki
Jump to navigation Jump to search

Man kann Mina als “Eine Wallet, die in die Tasche passt” betrachten.

  • Die erste Kryptowährung mit einer prägnanten Blockchain.
  • Blockchain komprimiert von hunderten GB (wie in existierenden Protokollen) auf nur kB in Größe.
  • Skalierbar, sicher, und dezentralisiert.
  • Ermöglicht die Verifizierung der Blockchain auf einem Mobiltelefon.

Minas Blockchain bleibt konstant groß — in der Größe von ein paar Tweets, egal wie viele Transaktionen auf dem Netzwerk durchgeführt werden.

VIDEO: hack.summit ("blockchain") 2018 - Izaak Meckler - cofundador y CTO, Protocolo Mina

In der “Kryptosphäre” werden wir häufig ermutigt, dem Motto “Don’t trust, verify” — “Vertraue nicht, verifiziere” zu folgen. Obwohl wir die Notwendigkeit begreifen, aktive Netzwerknutzer zu sein, sind Endnutzer heutiger Blockchains weniger dazu geneigt, Full Nodes laufen zu lassen. Dies liegt an den ständig wachsenden Anforderungen, dies tun zu können.

https://images.ctfassets.net/737jygdrovm3/51HSJhHwIYGbRYzUeEvnOv/84d8e98240ca09a711f8645109168ae6/1-1.png


Vorwort

Warum kann nicht jeder eine Full Node sein?

Bevor wir eintauchen, sollten wir zunächst Verständnis für den grundlegenden Aufbau eines typischen Kryptowährungs-Protokolls schaffen — ein Prozessor, auch als Miner oder Staker (respektive PoW vs. PoS) bekannt, gibt eine Transaktion in die Datenbank. Eine Full Node beobachtet dann die Transaktion, um sicherzustellen, dass ehrlich gehandelt wurde. Endnutzer überprüfen dies typischerweise nicht selbstständig — stattdessen delegieren sie Vertrauen an bereitwillige Netzwerkteilnehmer.


Warum ist dies so?

  • Ressourcenanforderungen & Komplexität, eine Full Node laufen zu lassen, entmutigt Endnutzer dies zu tun.
  • Es ist intensiv, eine Full Node auf einem Computer laufen zu lassen, und unmöglich auf einem Mobiltelefon.
  • Es ist einfacher, Dritten zu vertrauen, die Validierung durchzuführen.


Im Anfangsstadium jeder Kryptowährung ist es relativ einfach eine Full Node zu betreiben, da die Blockchain klein ist — vielleicht ein paar Megabyte. Jedoch wächst sie mit der Zeit, und je mehr Transaktionen aufgenommen werden, auf mehrere hundert Gigabyte (wie in der obigen Grafik zu sehen). Dies macht das Betreiben einer Full Node ohne einen für diesen Zweck vorgesehenen Computer weniger realistisch, und viel weniger realistisch auf einem Smartphone.


Wie können wir vom aktuellen Status der Blockchain überzeugt sein, ohne die gesamte Historie dieses Status einzusehen?


Einführung in Mina

“Mina ist ein neues Kryptowährungs-Protokoll, dass es jedem [auf beliebigen Geräten] ermöglicht mit dem Netzwerk zu synchronisieren, mit Full-Node-Level-Sicherheit, während nur wenige Kilobytes an Daten heruntergeladen, und wenige Millisekunden an Berechnung ausgeführt werden — im Vergleich zu Gigabytes über Gigabytes in traditionellen Kryptowährungs-Protokollen.”


VIDEO: #243 Izaak Meckler & Evan Shapiro: Mina — A Succinct Blockchain — Epicenter


O(1) Labs entwickelt das Mina Protokoll um das Problem der Blockchaingröße zu adressieren, indem die erste prägnante oder komprimierte Blockchain erschaffen wird — in der Größe von wenigen Tweets. Dies bietet Endnutzern eine niedrige Einstiegshürde in die Validierung von Transaktionen.


Was macht dies möglich?

  • Die Nutzung von zk-SNARKs — effektives Komprimieren von Blocks in einen einzigen Nachweis (single proof) oder einziges Zertifikat.
  • Endnutzer überprüfen diesen Nachweis, statt die ganze Transaktionshistorie eines Blocks nachzuprüfen.
  • Rekursive Zusammensetzung dieser SNARKs/Zertifikate — eine Blockchain mit konstanter Größe ermöglichend.

zk-SNARKs sind eine Iteration von Zero-Knowledge-Proofs — ein Kryptografieschema, in welchem Zero Knowledge an einen Verifizierer weitergegeben wird, wenn diesem der Nachweis einer Berechnung zukommen gelassen wird.


Wie Mina funktioniert

zk-SNARKs in Mina

Im Mittelpunkt des Mina Protokolls steht die Nutzung von zk-SNARKs, die benutzt werden können, um jegliche Berechnung zu bestätigen. zk-SNARKs fungieren als fälschungssichere Zertifikate, die nachweisen, dass eine Berechnung korrekt ausgeführt wurde, ohne dabei die gesamte Rechnung nachzuweisen. Wie erwähnt können wir jede Berechnung nehmen, wie zum Beispiel die Prüfung der Transaktionen in einem Block, und daraus einen SNARK erzeugen. Dieser SNARK beweist die Richtigkeit der Transaktionshistorie eines Blocks, ohne dabei alle Transaktionen aufdecken zu müssen. Dadurch verringert sich die Größe eines Blocks auf einen einzelnen SNARK (~1kB).

Der SNARK verifiziert ALLE Regeln des Konsens.

Er stellt sicher:

  • Signierung von Transaktionen.
  • Deren Gültigkeit.
  • Konsens-Regeln (Gesamte Hash Power + Chain Strength für PoW, und Variable Random Function/andere Regeln für PoS).

Falls der SNARK nicht ehrlich generiert ist, ist er nicht gültig. Jeder in dem Netzwerk würde dies nahezu unmittelbar sehen können, selbst auf etwas so “leichtem” wie einem Raspberry Pi oder Smartphone.

Die Aufrechterhaltung eines niedrigen Ressourcenanspruchs für die Verifizierung von Transaktionen in einem Block, ohne Vertrauensnotwendigkeit (trustlessly), ist der erste Schritt für die Schaffung einer nachhaltigen und skalierbaren Lösung für das bestehende Problem.

Ein sehr echtes Gespräch zwischen einem Mina Prozessor und einem Endnutzer:

“Hi Prüfer/Endnutzer! Ich erstelle ein Zertifikat, sodass du die Transaktionshistorie eines Blocks leicht prüfen kannst. Dieser Prozess bedarf viel Rechenleistung, also werde ich dafür 
belohnt. Du kannst die Gültigkeit dieses Nachweises kontrollieren, indem du den SNARK prüfst, was nur wenige Millisekunden und wenige Kilobytes freien Speicherplatzes in Anspruch nehmen 
wird. Auf diese Weise wirst du nicht viele hunderte Gigabytes herunterladen müssen, um die Blockchain zu verifizieren!” — SNARK Prozessor.
“Vielen DANK, Prozessor. Ich werde dieses Zertifikat überprüfen! Da es so klein ist, muss ich nicht jemand anderem vertrauen, um die Blockchain für mich zu verifizieren, und ich kann 
endlich eine Validating Node & Wallet auf so etwas wie meinem Smartphone laufen lassen. Dankeschön. Mein Leben ist jetzt so wunderbar.” — End user.


Jeden Block mit einem SNARK zu ersetzen ist nicht die vollständige Lösung.***

Ursprünglich wurde angenommen, dass wir einfach für jeden Block einen SNARK erzeugen können, jeder Block auf einen Kilobyte schrumpfend, und es genug sein zu lassen. Allerdings würde dies mit der Zeit, während sich SNARKS anhäufen, in linearem Wachstum resultieren, wenn auch in weitaus geringerem Umfang als in existierenden Blockchains.

Wie können wir das beheben?

Wir wissen, dass ein SNARK genutzt werden kann, um jede Berechnung zu prüfen. Einen SNARK zu erzeugen ist selbst eine Berechnung — was wäre, wenn wir einen SNARK von mehreren SNARKs erstellen?


Eine rekursive Zusammenstellung von SNARKs in Mina

Wie bereits erwähnt, können wir diese Zertifikate in einer rekursiven Komposition verketten und der Blockchain erlauben, eine gleichbleibende Größe von ~20kB aufrechtzuerhalten (SNARK + tail-end Merkle path).

Jedes mal, wenn ein neuer Block produziert wird, wird ein SNARK/Zertifikat erstellt. Durch die Erzeugung eines einzelnen SNARK, der die vorherigen Zertifikate enthält, kann gewissermaßen ein einzelner “mega” SNARK erschaffen werden, der die gesamte Transaktionshistorie der Blockchain beweist, was erlaubt, vom Genesis-Block bis zum aktuellen Status zu springen, wobei die Größe eines einzelnen Zertifikats aufrechterhalten wird.


Um diese Idee zu simplifizieren, nehmen wir zum Beispiel an:

  • Ein Zertifikat gibt an, dass du von Block 0 aufBlock 2 gehen kannst.
  • Ein zusätzliches Zertifikat gibt an, dass du von Block 2 auf Block 4 gehen kannst.


Du könntest diese SNARKs dann in einem einzelnen SNARK kombinieren, welches angibt, dass du von Block 0 to Block 4 gehen kannst.


Der neue SNARK/das Zertifikat bleibt~1kB groß. In größerem Umfang kannst du ein Zertifikat für die gesamte Transaktionshistorie der Blockchain erzeugen, welches konstant groß bleibt — ungeachtet der Menge an Zertifikaten, die in den neusten SNARK “gepackt” wurden.


Eine Validating Node in Mina wird umfassen:

Ein rekursiv zusammengestelltes zk-SNARK (1kB), das die Gültigkeit der gesamten Vorgeschichte der Blockchain beweist, und ein Merkle-Wurzel-Pfad des aktuellen Zustands (20kB); zusammen beweisen sie die Gültigkeit des Kontostands eines Nutzers. All dies braucht nur wenige Millisekunden zum Aufsynchronisieren.


Anwendungen, Dezentralisierung, und Skalierbarkeit

Anwendungen

Die Konstruktion des Mina Protokolls ermöglicht der Blockchain, für Endnutzer einfach innerhalb ihres Browsers und in Applikationen zugänglich zu sein, ohne hunderte Gigabyte an Daten herunterzuladen und ohne Vertrauen zu delegieren.

Stelle dir eine Applikation wie eine Hyper-Lite Wallet vor, in der du nicht darauf vertrauen musst, dass der Entwickler den Verifizierungsprozess korrekt ausführt. Dieser Validierungsprozess könnte vollständig von den Endnutzern durchgeführt werden, ohne von ihnne zu verlangen, über für diesen Zweck vorgesehene Hardware zu verfügen.

Ein beliebiges Gerät wäre in der Lage, eine Validating Node laufen zu lassen, einschließlich aber nicht beschränkt auf Smartphones, im Browser, or auf Feature-Phones (ja, dein altes unzerstörbares Nokia).


Dezentralisierung

Wie erwähnt ist es in den heute existierenden Kryptowährungen so, dass Endnutzer Vertrauen an Services wie Online-Wallets, oder Light Clients im Falle von Mining, delegieren. Dies könnte bei beispielsweise einer 51% Attacke problematisch werden, da die Aufgabe der Verifizierung von Transaktionen oft in den Händen dieser Dienstleister konzentriert sind.

Durch das Bieten eines einfachen Wegs für Netzwerkteilnehmer, Validating Nodes laufen zu lassen, wird die Dezentralisierung vergrößert, da Transaktionen von einem breiteren Spektrum an Netzwerkteilnehmern validiert werden können — den Endnutzern.


Skalierbarkeit

Hinsichtlich der Verbesserung der Skalierbarkeit, würde die Erhöhung der Durchsatzleistung auf tausende Transaktionen pro Sekunde in existierenden Protokollen eine erhöhte Menge an Daten, die für die Verifikation nötig sind, produzieren. Man würde zwangsläufig mit einer Blockchain konfrontiert sein, die schneller wächst, als das sie verifiziert werden kann.

Mina hält die Blockchain jedoch konstant gleich groß, womit ein Weg besteht, die für die Verifizierung von Transaktionen nötigen Daten abzuschwächen, was eine hohe Durchsatzleistung ermöglicht, da die Verifikationsdaten um mehrere Größenordnungen komprimiert werden.

Kernpunkt

Durch die Schaffung einer Blockchain, die konstant groß bleibt, ermöglicht Mina es Endnutzern mittels niedriger Einstiegsbarriere, Transaktionen selber zu verifizieren.

  • Keine Notwendigkeit, Vertrauen an andere zu delegieren, die mit den Anforderungen an das Betreiben einer Full Node mitzuhalten gewillt sind — wie es in traditionellen Blockchains der Fall ist.
  • Erhaltung von Full Node Level Sicherheit auf praktisch jedem Gerät durch das Herunterladen eines einzigen SNARK, welcher als Zertifikat für die gesamte Blockchain & einen tail-end Merkle-Pfad fungiert.
  • Nutzung einer rekursiven Zusammenstellung von SNARKs, womit die Größe der Blockchain ~20kB bleibt.
  • Verfügung über ein breites Netzwerk an validierenden Nodes steigert Dezentralisierung, da mehr Endnutzer damit ausgestattet sind, an der Verifizierung des Netzwerks teilzunehmen.


Bonusgedanke:

Du kannst dir Mina als eine in einen PokéBall gepresste Blockchain vorstellen. Statt einen Relaxo in einen Pokéball zu stopfen, komprimiert Mina die Blockchain in einem SNARK.