 Der letzte Sprecher für heute ist Sven Halberg und der spricht über das Z-Cash, die anonyme Kryptowährung. Und der Untertitel davon ist zu schweiz, zu schnell für mich. Es geht um Zero-Knowledge Proofs, also Beweise, für die man möglichst wenig Wissen braucht. Bitte einen Runde Applaus für Sven. Danke für die Einleitung. Vielen Dank fürs Kommen. So der kurze Untertitel ist Z-Cash Snarks für den interessierten Line. Und vielleicht hat der den Term schon mal jemand von euch gehört. So, bis zum Ende wisst ihr hoffentlich alle, wie es funktioniert und wie man eine Kryptowährung baut, die so ein bisschen wie Bitcoin ist, aber bessere Privatsphäre und Anonymität hat. Und ja, ein kurzer Disclaimer. Also ich kann euch jetzt nicht wirklich erklären, wie die Z-Cash Snarks funktionieren. Seid jetzt hoffentlich nicht enttäuscht, weil das wäre dann nochmal ein anderer Talk. Also fangen wir mal an. Z-Cash ist eine Kryptowährung, magisches Internetgeld und so ein bisschen wie Bitcoin. Und es basiert darauf auf der Bitcoin-Codebase. Also quasi ein Old Coin, so wie man es nennt. Aber abgesehen von vielen anderen Währungen und Coins gibt es halt wirklich neue Features, die es dem Protokoll hinzufügt. Und das ist hauptsächlich ein neuer Transaktionstyp, der halt das möglich macht, den Sender, den Empfänger und den Betrag des Geldes zu verschleiern. Ja, es gibt zwei verschiedene Adressen. Und die T-Adresses und Z-Adresses, T- und Z-Adressen. Und die neuen Transaktionen, also die Privatantraktionen, werden dann mit den Z-Adressen durchgeführt. Das benutzt diese sogenannten Z-Cash Snarks. Es ist halt so mathematische Magie. Und die gibt es seit ungefähr 2010, oder seitdem wurden wir zuerst zitiert. So ein bisschen Geschichte noch dazu. Z-Cash ist die Weiterentwicklung von zwei anderen akademischen Vorschlägen. Eine ist Zero Coin und das andere ist Zero Cash. Zero Cash, und das war dann schon fast so genau, wie Z-Cash heute ist. Und man kann quasi sagen, Z-Cash ist eine Implementierung von Zero Cash mit halt Verbesserung und Verfeinerung. Viele der Erfinder von Zero Cash haben eine Firma gegründet, um jetzt da halt wirklich dran zu arbeiten und das zu starten. Und das hat dann auch seine eigene Altcoin. Und die sind wohl auch dabei, eine Non-Profit-Stiftung zu gründen, um das dann zu verwalten und vorzuführen. Also auch, und kurz hat es kleiner, ich bin jetzt da nicht involviert. Also ich glaube nur, dass ich halt das halt halbwegs erklären kann. Und ja. Wir haben jetzt nicht so viel Zeit. Deswegen geht es hauptsächlich um die technischen Aspekte des Systems. Es gibt natürlich auch andere wichtige Fragen. Aber ich möchte nur sagen, wie das abstrakte System funktioniert, wie die Transaktionen aussehen, was versteckt wird, was vielleicht nicht versteckt wird. Wie man die Gültigkeit einer Transaktion, wie die Sicherheitsnachs dazukommen. Also falls ihr Bitcoin kennt, das ist halt so eine Bitcoin-Transaktion, wie es aufgebaut ist. Also stellt euch mal Bitcoin vor. Und ich will jetzt nicht wirklich in Blockchain reingehen, weil das brauchen wir jetzt auch nicht. Ich stelle euch einfach so eine lange Liste von Arkationen vor, die halt öffentlich verifzierbar ist. Und das ist auch alles gereicht auch für den Talk, weil das Bitcoin-System halt das für die transparente Version benutzt wird. Und wir können jetzt einfach die offene individuelle Transaktion uns beschränken. Das ist eine Bitcoin-Transaktion. Und dann hat man davon eine ganze lange Liste. Jede dieser Transaktionen hat verschiedene Inputs, also Eingangstransaktionen und verschiedene Ausgangstransaktionen oder Outputs, die dann zu bestimmten Adressen hingehen. Und damit die Transaktion valide ist, muss man halt zeigen, dass man auch die Autorität hat, diese Inputs auszugeben. Und Input und Output müssen sich halt gegeneinander aufregen. Die Balance muss halt aufgeben. Was ich schon mit Zcash gesagt hatte, sieht es fast genauso aus. Außer es gibt den neuen Block am Ende, wo dann diese genannten Joint Splits hinzugefügt werden. Und was die sind und wie man die überprüfen kann, ist halt so der Hauptthema des Talks. Wie sieht so ein Joint Split aus? So der Hauptunterschied zu Bitcoin ist bei den Zcash-Transaktionen, dass es halt durch virtuelle Coins transferiert wird, weil es halt ein bisschen ironisch, weil es bei Bitcoin auch Coins heißt. Obwohl es auch so heißt, wenn da halt nicht wirklich Coins definiert. Wie man halt in dem Bild sieht, jeder Joint Split nimmt zwei Coins als Eingang und gibt auch zwei Coins wieder aus. Also die Eingangskoins sind dann halt nicht mehr valide und dann gibt es zwei neue Coins. Warum zwei? Ja, weil es halt generell genug ist, wenn man nur eine nehmen will, dann kann man die eine, die andere zu 0 setzen und dann funktioniert es trotzdem. Man kann es halt dadurch sehr gut aufteilen und für verschiedene Sachen verwenden. Der wichtige Teil jetzt und jede dieser Coins hat nun quasi ein Plaintext nonz, die halt die Information beinhaltet über diese Coins, also den Eigner und andere technische Werte. Und diese Werte werden alle halt geheim gehalten. Die werden vom Eigner, sind vom Eigner bekannt, aber sonst niemand. Was halt in der Blockchain publiziert ist, als Teil des Joint Splits, sind halt diese Nullifiers, die auf der linken Seite und diese Commitments auf der rechten Seite. Diese sind eigentlich nur Nummern, die von den, von, Klartext der Coins halt erstellt werden. Die Nullifier sind, werden immer verwendet, wenn ein Betrag ausgegeben wird oder Commitments, wenn es ausgezahlt wird. Diese Commitments können nicht zueinander gematched werden, also zu einer Übereinstimmung gebracht werden, deswegen kann man die nicht verfolgen. Das heißt Nullif, Nullifier, weil das im Wesentlichen die Münze entwertet. Das ist hinterher keine gültige Münze mehr. Das funktioniert ganz einfach. Ich kann das in diesem Bild erklären. Jeder Knoten im Netz hat einfach eine Liste von allen Nullfalls, den er vorher gesehen hat und von allen Commitments, die er vorher gesehen hat. Und wenn ein Joint Split vergleicht einfach die Liste die er schon gesehen hat und nur wenn da etwas ist, was nur eine Münze ist, die noch nicht nullifiziert worden ist, dann ist es eine Münze, die was wert ist. Das braucht noch keine Zaubertricks. Nimm was. Die Magie besteht darin, dass diese Nummern nicht aus der dünnen Luft gezogen werden, sondern diese Zahlen korrespondieren zu Münzen und gehören einem eigener. Und wie das funktioniert, ist der Rest des Talks. Das ist wie ein Joint Split im Detail aussieht. Das ist aus dem Paper eine Darstellung von Joint Split. Man sieht, dass da eine Anzahl von Werten ist, über die wir uns nicht interessieren. Man sieht die zwei Nullifiers für die Eingabe von den Münzen und die Commitments für die Ausgabe von den Münzen. Und man sieht einen Wert namens RT. Das ist eine Zahl, die eindeutig die Menge der Commitments in diesem Augenblick eindeutig festlegt und die spezifiziert die Nullifiers. Das ist also die Wurzel des Merkel-Hash-Trees. Falls ihr wisst, was das ist, sonst, wenn ihr das nicht wisst, dann kümmert euch nicht weiter drum. Es ist einfach eine eindeutige Zahl, die die Existenz von Münzen verstätigt. Zum Schluss das Interessanteste ist das List kleine Pi. Das ist eine Bestätigung der Gültigkeit. Das ist eine Zahl, die mit einem Art von Prozess uns davon überzeugen soll, dass diese Transaktion eine gültige Transaktion ist und mit allen Bedingungen übereinstimmt, die wir von einer gültigen Transaktion erwarten. Und um zu motivieren, wie das funktionieren könnte, ohne zu sehr ins Detail gehen zu wollen, stellt euch vor, ich könnte jemanden davon überzeugen, dass ich ganz einfach weiß den Kontext von diesen zwei Eingangsknoten und den zwei Ausgangsknoten, dass ich einfach jemanden davon überzeugen kann, dass ich diese Klartexte habe und diese zwei Nullifizierwerte mit dem Eingangswerten übereinstimmen und die Commitments mit den Ausgangswerten übereinstimmen, dass die Bilanz stimmt und dass das alles mit dem Mercury zusammenhängt. Es ist schon intuitiv überzeugend, wenn so ein Beweis existiert, dass das gut ist und das ist im Wesentlichen der Spielplan. Um das präziser zu machen, das ist jetzt der Job, unsere Aufgabe. Ganz einfach. Der Titel CK Snark, er steht für ein zero-knowledge, kompaktes, nicht interaktives Argument von Wissen. So zero-knowledge. Ja, also zero-knowledge, ohne Beweis, der ohne Vorwissen geführt wird kann. Das ist halt so die grob vereinfachte API des CK Snark Systems. Also vielleicht kurzer Kerrwert. Es gibt Muld, es gibt verschiedene Aufbauten dieser CK Snark. Aber wir reden jetzt hier über die Version, die halt bei CK Snark benutzt wird. Und das ist halt ziemlich interessant, auch alles ziemlich interessant, wie das Setup gemacht wurde für CK Snark, was so eine Woche vorher gemacht wurde. Das ist super interessant, aber wir haben da jetzt auch leider keine Zeit für. Es waren viele Leute dabei und sie haben alle irgendwie dokumentiert, wie das funktionierte. Und jetzt könnt ihr gerne online nachlesen. Das ist hier die Proof Procedure, also die Beweis, der Beweisprozess. Es gibt halt, man gibt plaintext rein, und der generiert dann diesen Pi-Wert, den wir dann weiter benutzen können. Und den können wir dann verifizieren. Und es sollte dann quasi uns davon überzeugen, dass der Beweis gültig ist. Dann geht man das halt in Lipsnark rein, also die Library. Und dann funktioniert das System. So, um das jetzt konkreter zu machen, das ist, hier geht es um das Joint Split Statement schon wieder, und das ist dann die Ansammlung aller Sachen, die uns beweisen, dass die Transaktion halt valide ist. Der Prover kennt halt vier Notizen, vier Werte. Der Eigentümer des Notes, der Wert des Transaktions und zwei technische Parameter. Und das sollte diese Bedingungen erfüllen, dass die Eingangshoten ist in Merkeltrie, das wird durch RT bestätigt, die Nullifier korrespondieren zu ihren Eingängen und die Commitments korrespondieren zu den Ausgängen. Das ist ausbalanciert, die Beträge stimmen wir ein. Es autorisiert, die Ausgabe zu machen. Non-Maliability heißt, Joint Split ist eindeutig, und die Eindeutigkeit von Ro ist auch eine, muss eine pseudo-Zufallszahl sein. Noch mal, noch mal zurück. Wie kodieren wir das, sodass das CK Snark daraus, dass da sich ein Reim machen kann, daraus für Programmierende oder Zuhörern, Wissen, wie man manche Codes implementieren kann. Und dieses Bild in der nächsten Folie sollte bekannt vorkommen, das ist bulgische Logik. Eine Schaltplanung ist eine bulgische Logik, eine bulgische Lautkreise. Das implementiert eine logische Funktion. Das ist einfach ein dummes Beispiel. Nimmt einige Eingänge auf der Links und kombiniert das durch bulgische Logik durch bulgische Gates zu einem Ausgang. Ihr wisst, dass das genug ist, um alles zu tun, was im Computer gemacht werden kann. Aber es stellt sich heraus, dass bulgische Algebra nicht so gut ist, weil alles auf 0 und 1 hinausläuft. Was CK Snarks benutzt, ist ein arithmetischer Schaltkreis. Die Zahlen entlang der Pfeile sind folchene Gezahlen und die Gatter benutzen nicht bulgische, sondern tatsächliche Algebra. Das ist ein anderes Spielbeispiel für eine Schaltung, die eine Math-Arithmetic benutzt, so labiomäßig. Wir können diese arithmetischen Schaltungen noch zu verwenden, um bulgische Operationen zu darzustellen. Wenn ihr einfach betrachtet, dass die Eingänge einfach auf 0 und 1 reduziert sind, beschränkt sind, dann ist auch der Ausgang 0 und 1 und das ist dann bulgische Algebra. Das ist ein bulges N zum Beispiel. Hier ist das bulgische Nog zum Beispiel. Das ist 1 minus x und wenn der Ausgang 0 1 ist, dann ist der Ausgang 0. Wir können eine ganze Menge mit diesen Schaltungen machen. Wir können alle möglichen Funktionen und Ausdrücke darstellen. Was wir in dem Joint Split Aussage haben, sind Bedingungen, dass ein Wert mit dem anderen Wert übereinstimmen muss. Wie kommen wir dorthin? Damit führen wir das Konzept der Erfüllbarkeit ein. Wir schauen uns jetzt wieder diesen arithmetischen Schaltkreis an. Der ist erfüllbar, falls wir Eingangswerte finden für x und y, dass der Ausgang 0 ist. Warum 0? Weil das uns auf die Erfüllbarkeit von Gleichungen zurückführt. Zum Beispiel die Gleichung da oben. Wenn wir wissen wollen, ob das erfüllbar ist, mit einem Satz x, y und z, dann macht es eure Schulmathematik. Wenn er anstatt anschaut, ob die Seiten gleich sind, dann formt es so um, dass der linke Ausdruck dem rechten Ausdruck 0 entspricht. Erfüllbarkeit ist dann gegeben, wenn der linke Seite 0 wird, dann ist der Ausdruck erfüllbar. Dann sehen wir ihn als erfüllbar an. Und die ZK Snarks erlauben euch nicht nur Erfüllbarkeit selbst, sondern auch die Existenz von, nicht nur die Existenz von irgendeiner Zuweisung, sondern es erlaubt uns auch die, es erlaubt uns auch zu beweisen, dass wir wissen, welche Zuweisung genau das jetzt erfüllt. Das ist unser Spielplan. Ihr habt jetzt ungefähr eine Vorstellung. Unser Plan ist, den Joint Split Aussage zu kodieren, in formalen Gleichungen zu kodieren, die alle in eine arithmetische Schaltung um zu ändern, das in den ZK Snarks reinzustecken und dann das Wissen über die Knoten zu beweisen. Und hier sind die Zutaten von Joint Split. Wenn ihr darüber zurückdenken wollt. Was ... Ja, also hier sind die Inhalte, also Helmöckl Hashtrees, die Commitments, das Schemas, die Pseudo-Random Funktionen. Die haben wir dann alle über SHA256, die kennt ihr bestimmt alle und dann müssen wir quasi eine arithmetische Schaltung für SHA256 bauen und das ist dann die Basis für alles, was wir brauchen. Also, wenn ihr euch SHA256 anguckt, dann gibt es viele arithmetische Operationen und die, die wir hier sehen, und die Sikesh ... Sikesh beruht darauf, dass alle Zahlen als binärze Zahlen dargestellt werden und alle Stellen können höchstens 0 und 1 behinghalten und nur wenn man die direkte Präsentation braucht, dann wird das mit einer arithmetischen Schaltung umgewandelt von binärer Starstellung in eine natürliche Zahl. Man kann auch zurückgehen mit einem kleinen Trick, über den ich jetzt nicht eingehen will, um euch nicht zu verwirren. Wir können auch so was machen wie Schiebit hin- und herschieben und Bittpermotieren, in dem einfach die Verdrahtung permutiert. Das wäre ein Bittschieben bei um 2, also Division durch 4. Umvertraten, damit das alles 2 Stellen nach rechts geht. Das gibt euch schon eine gute Idee, was zu tun ist. Man guckt einen SHA256 an und kombiniert den mit einer arithmetischen Schaltung und wenn das fertig ist, dann sieht es ungefähr so aus. Das ist vom Zero Cash Paper Papier. Das ist ein ziemlicher Salat. Es wird alles runtergekocht. Auf H ist SHA256. Man sieht eine ganze Menge davon. Da ist nicht viel mehr dabei. Da ist eine Verbindung, eine Konkretination dabei. Da sind konstant dabei. Da ist reguläre Arthmetik dabei. Das unten ist das Balancieren, da ist eine Kontrolle für Overflow, für Überlauf. Da ist eine Bedingung, dass die Ausgabe funktioniert wird und dass die Nullifier die Eingabe richtig übereinstimmt. Nur, dass Merkel drinachgucken, ist der Merkelbaum nachschauen. Das fehlt, weil das nicht auf die Folie gepasst hat. Wir haben 7 Minuten für Fragen. Wir haben 7 Minuten für Fragen. So, kurze Frage antwort jetzt. Bitte stelle dich an die Mikrofon. Nummer 4. Davon ausgehen, dass es einen Bug gibt und dass jemand einfach so Geld erstellen kann. Mit der anonymen Währung. Gibt es einen Weg, wie die Community sehen kann, dass es halt viel mehr Geld gibt und dass es viel mehr Sikons gibt, als es eigentlich geben sollte? Hm. Nicht sofort, also nicht direkt. Das ist auch was das Gefährliche. Also was man sehen kann, wenn mit den Joint Split Statements, was man sehen kann, ist, wenn sie ausgegeben werden. Also das System weiß jederzeit, wie viel Coins erstellt wurden und wie viel Coins ausgegeben wurden. Aber natürlich weiß man dann natürlich nicht genau, was dann, da ist es nicht genau das, was du willst. Und dann gibt es halt Diskussionen darüber, das System weiter aufzubauen, um halt so eine Art normalen Account zu haben, wo dann jeder Knoten die Verpflichtung hätte, das Geld sichtbar zu machen und dann es wieder zurückzukommen. Und das gibt es auch nicht. Das würde dann halt, das verhindern. Könnte die Sikash Blockchain sich splitten, also forken? Und ja, das könnte genauso passieren wie ein Bitcoin oder einen anderen Blockchain-System. Also der Konsensmechanismus und was dann den fork veräußern würde, ist genauso gleich wie bei Bitcoin. Mikrofon Nummer 8. Sie fragt, ja, als ob du dir so die ethischen Aspekte und die Finanzierungsaspekte angeschaut hast, wenn ich mir das so angeschaut habe, also den Algorithmus, den Sie benutzt haben, wie der Algorithmus Geld sammelt für Sie, für die Entwickler und die Investoren. Das wird in den ersten vier Jahren oder so 20% eingesammelt für die Entwickler und die Investoren. Und das wird dann nachauf und auch von allen je erstellten Coins sind auch dann nach irgendwie 10% für die Entwickler. Und was denkst du über diese Vorgehensweise? Weil Sie so quasi die... Algorithmisch eine Ungleichheit programmiert wird. Ich kann nur für mich selbst sprechen, für meine eigene Interpretation. Ich gebe zu, dass ich da nicht zu genau hingeschaut habe. Ich habe im Wesentlichen auf die technische Seite gesehen, wie ich das interpretiere, dass sie das deshalb gemacht haben, weil um eine bessere Alternative zu haben, das heißt, sie haben eine Primine. Einem Vor-Mining-Ding, wo das Primining ist, dass die ursprünglichen Entwickler einfach eine Währung erzeugen, Münzen erzeugen, die sie dann selbst gehören. Das heißt, dass die ersten... die ersten paar Blocks hinter... Das ist dieses langsame Mine. Das heißt dann, dass am Anfang das Mine, also dass der Stelleneublöcke halt langsamer ist als bei anderen Blockschen zum Beispiel. Und das heißt dann, dass halt Early Adopters oder halt die Entwickler weniger Einfluss haben als in anderen Projekten. Und da Sie das halt nicht haben, haben Sie halt dieses 20% stellten Coins und der 10% der Gesamtcoins, das dann an die Entwickler geht. Und du hast davon geredet, dass es halt algorithmisch geschieht und wie ich das ethisch bewerten würde. Ja, ich würde halt sagen, Sie haben es halt in den Algorithmus eingefügt, aber halt immer noch der... der Konsens des Netzwerks, der es bestätigt, also man müsste die... man musste es ja nicht machen, sondern auch die Software nicht ausführen. Also vielleicht gibt es schon einen Alternative, ein alternatives Z-Cache zum Beispiel, aber soweit ich weiß nicht, aber es wäre ja möglich. Es gibt da eine große Diskussion drüber und es ist interessant, aber ja, das ist so meine Repetition. Noch eine Frage. Mikrofon 7. Das hast du schon so ein bisschen angesprochen, aber ich frage mich so, was für alternative Z-Cache Möglichkeiten hast du dir schon angeschaut? Es gibt da zum Beispiel Monero, hast du dir das angeschaut? Also es hat einen anderen Hash-Algorithmus, aber ich kenne mich jetzt nicht wirklich mit Monero aus. Ich weiß nur, dass sie Ring-Signaturen benutzen. Es gibt auch Arithmetik, aber ich habe jetzt mir nicht genau die Unterschiede angeguckt. Ich denke, dass die Privatsphärger sich halten, die sie geben können, weniger stark sind als die von Z-Cache, aber ich kann das nicht in den Details. Okay, das ist es für heute. Vielen Dank und ein Runde Applaus für unseren letzten Talk für heute. Und das ist es auch von uns Übersetzern.