 Je vous profite pour vous souhaiter la bienvenue dans cette traduction avec notre dernier conférencié de ce soir qui est Sven Hauberck qui va nous parler des Z-Cache qui est une crypto-monnaie anonyme, le sous-titre de cette... Alors, le sous-titre de la conférence est particulièrement long. Si jamais vous arrivez à le retenir, vous avez des points spéciaux. Sven est mathématicien, un developer, un cryptographe. Il fait également de la programmation fonctionnelle en C qui en fait prendre la personne à qui vous avez envie d'écouter. Merci d'applaudir Sven. Merci. Merci pour l'introduction. Oui, merci à tous d'être venus. Alors la version courte du titre, c'est les Z-Cache-Snarks pour les amateurs qui veulent en savoir plus. Est-ce qu'il y a des gens ici qui ont déjà entendu parler des Z-Cache-Snarks ? Ou c'est plus que ce que je m'attendais. D'accord. Alors, la fin de cette présentation, j'espère que vous comprendrez mieux comment ces choses peuvent être utilisées pour créer une crypto-monnaie qui fonctionne un peu comme Bitcoin mais a une meilleure vie privée et des qualités de l'anima. Alors, je préfère vous prévenir. Je ne pourrai pas vous expliquer comment fonctionne les Z-Cache-Snarks. Alors, s'il vous plaît, ne soyez pas trop déçus de ce point. Ça sera peut-être une autre présentation l'année prochaine. Alors, commençons. Cette cache, comme on l'a dit, est une crypto-monnaie de l'argent magique d'Internet donc un petit peu comme Bitcoin. En fait, c'est basé sur le code du Bitcoin. C'est un peu un coin alternatif que vous connaissez peut-être. Mais à la différence de beaucoup d'autres monnaies, ça ajoute des réelles fonctions supplémentaires au protocole. C'est-à-dire, principalement, un nouveau type de transaction qui est capable de protéger l'émetteur et le récepteur et la quantité d'argent qui est transférée. Ce type de transaction existe en parallèle des transactions habituelles type Bitcoin. Donc, en fait, on a deux types d'adresses, une adresse transparente qui commence par un T et un nouveau type d'adresse qui commence par un Z ou un Z, en anglais, qui est utilisé par le nouveau type de transaction. Et comme j'ai pu le dire avant, c'est utilisé les Z-Cash snark qui sont quelque chose d'assez récent, de la magie mathématique assez récente, on pourrait dire. 2010 sont la première citation de la spec du Z-Cash, du Z-Cash. Pour vous donner une idée, le Z-Cash, c'est la suite de deux professions académiques. Donc, le Z-Cash qui était encore assez différent du Z-Cash et l'autre, c'était Z-Cash. Et ça a déjà presque, presque déjà, ça ressemble déjà presque à du Z-Cash. On peut considérer le Z-Cash comme une implémentation du Z-Cash avec quelques améliorations et affinage. Alors maintenant, un nombre d'inventeurs du Z-Cash et d'autres gens ont créé une entreprise qui a pour but de vraiment permettre à ce système de se développer et apparemment ils veulent également créer une fondation à but non lucratif pour gouverner les développements à venir du Z-Cash. Je préfère ou prévenir, je ne suis pas affilié à quelconque de ces entités. Je suis juste un observateur intéressé qui pense qu'il peut expliquer ça peut-être à d'autres. Alors, parce qu'on n'a pas de temps de temps que ça, cette présentation va se concentrer sur l'aspect technique. Il y a d'autres questions intéressantes. Mais moi je vais juste vous expliquer comment le système fonctionne de manière abstraite, à quoi sont les transactions qui est cachée exactement, qu'est-ce qui n'est pas cachée peut-être et comment on peut vérifier la validité d'une transaction si on ne sait presque rien à son sujet. Et en fin de compte, et on vous expliquera donc que ça se revient à plus clair ou entre les Z-Cash-narcs en jeu. Si vous connaissez Bitcoin, voici un petit récapitulatif, voici une transaction Bitcoin. Désolé. Alors, imaginez Bitcoin, je ne veux pas rentrer dans toute la blockchain, etc., parce qu'on n'a pas besoin là tout de suite. Imaginez juste Bitcoin comme une longue liste de transactions qui est vérifiable de manière publique. Ça suffit largement comme conception pour cette présentation. Parce que le système de Bitcoin est fonctionnel pour le monde transparent. On peut juste tenter de regarder les transactions de manière unique. Alors voici une transaction Bitcoin et on en a une longue liste dans le monde. Et chacune de ces transactions prend un certain nombre d'entrées, des entrées en termes de montants, des transactions précédentes et puis des clars. Des montants en sorties pour des adresses et qui doivent recevoir. Pour que cette transaction soit valide, il faut avoir quoi que ce soit, ces deux choses. Il faut montrer qu'on a le droit de dépenser les entrées et il faut s'assurer que les entrées et les sorties se combinent pour s'entrichir. Comme j'ai déjà laissé entendre avec le ZCache, la chose ressemble beaucoup, sauf qu'il y a un nouveau bloc en plus à la fin qui ajoute des choses appelées de Joint Split. Donc ce que sont ces choses et comment on peut montrer leur validité, c'est le sujet principal. Alors rentre un peu dans le Joint Split. A quoi ressemble un Joint Split ? Une délifrance principale avec le Bitcoin, c'est que la valeur de ces nouvelles transactions ZCache est en fait transférée sous la forme de pièces virtuelles. Alors qu'en fait c'est un peu ironique puisque le Bitcoin n'a pas malgré son nom le concept de pièces ou de soldats. Ici on a ce concept et on peut voir sur cette image que chaque Joint Split prend deux pièces en entrée et génère deux pièces en sorties. Donc les pièces entrées sont consommées et ne sont plus valides et à la fin de nouvelles pièces entrent en existence. Pourquoi deux ? Très rapidement c'est parce que c'est généralement suffisant pour tout ce qu'on va faire. Si on veut en faire une utilité qu'un seul, on va réduire l'autre à zéro. Si on veut en faire plus ou en créer plus, on combine de plusieurs Joint Split dans la même transaction. Alors la partie importante, chaque pièce virtuelle, qui s'appelle un texte enclair qui est en fait des groupes de valeur qui contient l'information sur cette pièce. Et tout ça c'est garder secret. Le passageur de la pièce le connaît mais personne d'autre. Les seules choses qui sont publiées en fait dans la blockchain, dans le Joint Split ce sont les nullifiaires et le Commitment. Donc les annuleurs et les engagements qui sont publiés, ne vous inquiétez pas trop ce que c'est pour l'instant. Ça veut dire pour l'instant, mais pour l'instant c'est juste des chiffres qui sont dérivés de manière unique de la pièce, du texte enclair de la pièce. Et les annuleurs sont toujours utilisés quand on dépense la pièce et les engagements sont faits et utilisés pour créer l'existence de la pièce. Et comme ces normes sont différents et qu'ils sont dérivés de telle sorte qu'ils ne puissent pas être reliés les uns aux autres, ils ne puissent pas être liés aux autres. Alors ça s'appelle un annulateur parce que ça annule, c'est une valeur qui annule en somme la pièce. C'est consommé et après ça ce n'est plus une pièce valide. La façon de ça fonctionne c'est vraiment très simple. Je peux vous l'expliquer avec cette image. C'est une pièce valide. La façon de ça fonctionne c'est vraiment très simple. Je peux vous l'expliquer avec cette image. Chaque nœud dans le réseau garde une liste de tous les annulateurs qu'il n'a jamais vu et il liste de tous les engagements qu'il n'a jamais vu. Et quand un nouveau joint split apparaît, il va simplement vérifier la liste des annuleurs en par rapport à la pièce. Et s'il ne l'a pas déjà vu, alors c'est un pièce qui est encore valide. Donc c'est encore vraiment très simple. C'est une protection contre la double dépense. C'est très important évidemment. Mais ça ne demande pas vraiment de magie pour l'heure. Ce qui va demander la magie en fait c'est vérifier que je n'avante pas ces nombres. En fait qu'il correspond à quelque chose à des pièces et que les choses finissent par rester en équilibre. Il faut que les choses restent en équilibre. Il faut que les pièces m'appartiennent et tout ce genre de choses là. Et expliquer comment ça, ça marche. C'est la suite de la conversation. Donc ça c'est à quoi ressemble la joint split. Donc c'est une forme un peu moins pictoraisque. Donc ça sort directement du papier de recherche. Vous pouvez voir qu'il y a un certain nombre de valeurs qui ne nous intéressent pas vraiment. Mais vous pouvez surtout voir qu'il y a les deux annuleurs ici pour l'entrée. Pour la pièce en entrée et les engagements pour l'entrée. Et la valeur t, c'est un nombre qui identifie de manière unique le set d'engagement qui existe à ce moment là. Donc ça établit le contexte pour les annuleurs. Donc si vous savez ce que c'est un arbre de Merkel, donc ça c'est en fait la racine d'un arbre de Merkel. Donc ça c'est en fait la racine d'un arbre de Merkel. Donc si vous savez ce que c'est un arbre de Merkel, donc ça c'est en fait la racine d'un arbre de Merkel. Donc si vous savez pas ce que c'est, ne vous inquiétez pas. Comme je l'ai dit, c'est simplement un nombre qui, enfin imaginez-vous comme un nombre qui identifie de manière unique un set d'engagement qui existe. La dernière chose et la plus importante c'est le petit pied à la fin qui est la preuve de validité. Un nombre qui d'une certaine manière, avec un certain procédé, doit nous convaincre que cette transaction est valide. Et conforme toutes les exigences qu'on lui a posées. Toutes les conditions qu'on remplit, toutes les conditions qu'on attend d'une transaction valide. Et pour expliquer comment ça fonctionne sans entrer trop dans le détail. Imaginez que je pourrais convaincre quelqu'un que je sais les textes en clair pour deux nœuds. Donc les deux nœuds d'entrée et les deux nœuds de sortie. Donc si je peux convaincre quelqu'un que j'ai ces textes en clair et que les deux valeurs d'anilla correspondent aux deux pièces en entrée. Que les deux engagements correspondent aux deux engagements de sortie. Et puis que tout est en balance. Donc c'est de manière intuitive. C'est convaincant, d'une certaine manière. Et ça c'est en fait le plan d'action pour nous. Donc pour rendre ça plus précis, ce sera notre travail pour la suite. Maintenant les musiceurs Snarks, on a déjà parlé. C'est un argument de preuve d'un interactif succinct et sur lequel il n'y a pas de connaissance. Alors qui ont les caractéristiques que ce qu'on vient d'évoquer. Qui prouvent qu'on connaît le texte en clair de ces nœuds. Et également que ça satisfait nos besoins. Voici la pays très simplifiée d'un système Z-Cast Snarks. Alors peut-être qu'il y a plusieurs constructions de Z-Cast Snarks. Si on est une, si on est une, on parle de celles qui étaient utilisées dans le Z-Cache. Alors il y a une procédure de démarrage de mise en place. C'est quelque chose qui a été intéressant mais on ne doit pas vraiment avoir le temps de rentrer dedans aujourd'hui. Ça a été fait une semaine avant le lancement de Z-Cache. C'est une histoire très intéressante. Si vous voulez en savoir plus, il faut lire. Il y a plusieurs personnes qui ont participé et qui ont fait leur contrôle de ce qu'on a passé. Ça c'est vraiment intéressant mais il faut qu'on saute ce passage là pour l'instant. Ensuite on a la procédure de preuve. Donc on donne des entrées. On a de notre côté le texte en clair qui donne ensuite la valeur PI. On va mettre dans la procédure de vérification. Avec le PI sans le nom que l'entrée qu'on peut le regarder. Et ça renvoie un résultat si il est vrai, on devrait être convaincu que le prouver connaît effectivement les prœvres qu'il a prouvé, ce qu'il avance à la base. Tout ça vous pouvez le retrouver dans Lib Snark qui est sur GitHub. Et votre système fonctionne avec un peu de chance. Alors pour que ce soit plus concret, alors donc les joints splits. Voici la collection de conditions pour qu'une transaction soit valide. C'est un petit peu ce que j'ai dit tout à l'heure. Le prouver connaît 4 nœuds qui connaissent ces choses. Chaque nœud consiste en 4 valeurs. Ça c'est la valeur des propriétaires, la valeur du nœud. Donc 2 nombres ro et r. Et ceci devrait remplir la condition que ce nœud passe quelque part dans notre navre de Merkel. Donc les engagements correspondent à la sortie, les entrées correspondent aux annuleurs. Et après encore l'unicité de ro qui est quelque chose de plus technique. Donc la non-malabilité pose la position que ce joint split correspond à ce joint split. Donc voilà, pardon. On revient juste sur la dernière cède. Comment on peut encoder ça de façon que le système de ZK Snark se peut faire du sens? Ce qu'il y a des programmeurs dans l'audience qui savent comment encoder certaines choses dans un code qui compte de langage. Ensuite il devrait vous rappeler des souvenirs. C'est quelques portes logiques. C'est un circuit bolien qui calcule une fonction logique. Ça prend quelques entrées à gauche. Ces valeurs bolènes passent à travers ces portes logiques et on reçoit une sortie à la fin. Donc maintenant vous savez que c'est assez pour faire toutes les choses aux ordinateurs. Ça pourrait être intuitif comme façon d'encoder des choses. Mais toutefois il se trouve que les boléins ne sont pas forcément très intéressants d'un point de vue mathématique. Ce que ZK Snark utilise, c'est une variante qui a un circuit rythmétique où les valeurs le long des câbles sont des vraies nombres et les portes appliquent des espérations rythmétiques. C'est un autre exemple. Un circuit pour additionner de nombres, des mètres au carré et les multipliés par un troisième nombre. Et il se trouve qu'on peut utiliser ces circuits rythmétiques pour obtenir des opérations bolènes. C'est une multiplication. Si vous considérez que les entrées sont restantes au set de 0 et 1, la sortie sera aussi partie du set 0 et 1. Si les deux sont à 1, la sortie sera 1. C'est le boléin de nut. C'est 1, 6 et 0. Il inverse. On peut faire beaucoup de choses avec ces circuits. On peut encoder plusieurs expressions ou fonctions. Mais ce n'est pas de nos joints splits. Ce sont en réalité des conditions. Des choses... Des set-men comme quoi... Par exemple, cette valeur doit être équivalente à cette taux de valeur. Donc, comment on peut prendre ça pour vérifier que quelque chose varie? Des valeurs remplies certaines conditions, pardon. On va prendre cette valeur d'entrée pour s'assurer que la valeur de sortie arrive à 0. Pourquoi 0? Parce que ça nous amène tout de suite à la satisfaction de l'équation suivante. Imaginez cette équation en haut. Si on veut savoir si on peut satisfaire ça avec une certaine solution de x, y et z, refaites votre math de lycée, plutôt que de chercher avec l'égalité entre les deux côtés, et regardez plutôt la différence entre l'un et l'autre. Ça revient à 0. Donc, passez de la première étape, arrivez plutôt à la deuxième, donc créez un circuit arithmétique pour représenter la deuxième et essayez de voir comment satisfaire cette partie-là. Pour que la partie de gauche devienne 0. Et donc vous saurez que ces valeurs satisfont cette équation. Et les ZK Snarks permettent non seulement de prouver qu'on peut satisfaire et qu'il n'y ait qu'une solution, donc n'importe quelle solution qui peut satisfaire l'équation, mais ça nous permet également de prouver qu'on connaît effectivement les bonnes valeurs. Donc du texte en clair, de notre note. Donc c'est un peu le point d'action. Vous avez peut-être maintenant une image un petit peu. Maintenant, notre but, c'est de encoder le joint split dans une équation formelle de telle sorte que tout ceci devient un circuit arithmétique. Branchez ça dans notre Lib Snark et l'utilisez pour prouver la connaissance des notes sans que le circuit soit satisfait. Alors, si on veut revenir un point derrière, qu'est-ce qu'on doit véritablement encoder dans le joint split ? Quels sont les ingrédients ? J'ai parlé un petit peu d'un arbre de hash avec des engagements, des fonctions pseudo-léatoires, de la rythmétiquette non naturelle. Les premiers sont insensés avec la fonction de hash que vous connaissez sûrement, SHA256. Alors donc, on doit principalement créer un circuit arithmétique pour le SHA255 et la suite est une variation de ça. SHA256, si vous avez déjà vu une description, on contient beaucoup d'opérations binaires, des opérations arithmétiques. Et donc, l'implémentation de z-cache ou zéro-cache choisit la route de représenter tous les nombres de manière native, comme des binaires. Si par exemple vous avez un sheet, un nombre de 32 bits, vous prenez 32 câbles et chacun doit conduire un 1 et un 0. Et seulement si vous avez besoin de la représentation directe, par exemple pour l'équilibre, à la fin de compte, vous convertissez ça avec un circuit arithmétique qui calcule la valeur binaire représentée, sur la formule ici présente. Vous pouvez également revenir en arrière avec une petite astuce, mais je ne vais pas entrer dedans maintenant pour ne pas trop vous perdre. On peut également faire des choses comme le déplacement de bits, le bit-shifting, simplement en permutant le câblage de la bonne façon. Donc ça, c'est un bit-shift de 2. Vous avez les valeurs qui entraient à l'en bas et on les reroute. Il faut les mettre, de placer deux fois à droite. Et donc tout ceci devrait vous donner une bonne idée de ce qu'on peut faire, de comment le faire. On a juste besoin de regarder l'échelle de 156, prendre tous les morceaux, tous les transformer en circuit arithmétique, tout combiner. Et puis comme le fait qu'on a fini, ça ressemble un peu à quelque chose comme ça. Donc ça, c'est dans le papier du zéro cache. Il y a une magnifique salade. On a juste besoin de tout réduire ta en montant la ébullition. On regarde ici, on a donc l'achat de 156. On voit qu'on a beaucoup plus, mais pas finalement tant que ça. Il y a de la concatenation, il y a des constantes, il y a des nombreurs régulières arithmétiques en bas. On a l'équilibrage, des valeurs avec de valeurs qui sont égales à de de valeurs. On vérifie le dépassement, l'overflow. On a également la validation des engagements, les annulateurs qui sont bien créés. La seule chose qui manque ici, c'est l'art de Markle, le vérification de Markle, puisque ça ne rentrait pas là, mais pas la place de le mettre. C'est ça. Voilà, on y est donc. Je crois qu'on a le temps, 7 minutes pour faire des questions. Alors on va faire une concession de questions de réponse à un projet de micro. Alors, en partant du principe qu'il y a un bug et que quelqu'un crée de l'argent avec Nilo, de manière anonyme, il y a-t-il une façon que la communauté pourrait à un moment s'en rendre compte et qu'il y a trop de z-coches, z-coches plus qu'une de rien à la main. Oui, donc... pas immédiatement. Et ça, c'est un des grands dangers en réalité. C'est une très bonne question. Une chose que vous pouvez voir, si vous souvenez de la slide avec les join-plits, vous pouvez voir quand les pièces de monnaies sont créées et aux côtés sont dépensées. A tout moment, le système a eu une image de combien de pièces de monnaies ont été créées jusqu'ici et combien de pièces de monnaies ont déjà été dépensées. Mais ça, bien sûr, ça ne vous donne pas exactement ce que vous voulez. Et il y a eu des discussions sur la question d'étendre le système pour inclure une sorte de... de contrégulier où chaque nœud doit transférer tout son argent sur le monde transparent. Et le monde transparent pour retourner en fait tout l'argent. Donc ça n'aurait pas votre anonymeur. Et le récupérer en temps voulu dans le monde non transparent. Est-ce qu'on pourrait forquer finalement la chaîne de Zikash ? Alors, un fork, ça fonctionne exactement pareil que dans Bitcoin. Oui. Toutes les conditions sont forcées de la même façon que par les mécanismes de Bitcoin. Ok, microphone 8. Alors, je me demandais si vous regardiez l'aspect financement, l'aspect algorithmiques et l'aspect éthique. Parce que je vous demandais ce que vous pensiez de ça, parce que quand je regardais sur comment c'est financé et comment l'algorithme collection de l'argent pour les investisseurs et les développeurs vu que dans les 4 premières années 20% de tout l'argent ira au développeur et aux investisseurs. Et après, ça s'arrête. Et la somme totale de monnaie qui va être créée jusqu'à la fin, 10% reviendra au développeur et aux investisseurs. C'est une bonne vue éthique de ce choix. Parce qu'ils sont en train de programmer de manière algorithmique une certaine égalité. Oui, alors, ok, oui. Moi, je ne peux que parler de ma propre interprétation de ceci, mais je dois admettre que je n'ai pas regardé trop près de ça, parce que je m'intéressais plus à l'espect technique. La façon dont je m'interprétais, c'est que je crois qu'ils ont fait ça et ils l'ont fait de cette façon dans le but d'avoir une alternative qui est meilleure que d'avoir miné en avance avant le lancement. Ils voulaient éviter du minage en avance, comme d'autres crypto-monnaies où les développeurs ont fait leur propre on minait avant de se lancer et ils ont voulu également commencer ce qui veut dire que la première époque les premiers quelques blocs, je ne sais pas combien exactement la récompense du minage est assez basique et augmente avec le temps. Ils ont fait ça pour éviter une situation où les développeurs ont trop de puissance concentrée au début. Je crois que la récompense pour les fondateurs que vous avez mentionné elle est mise dans l'agorhythme pour les quatre premières années parce qu'ils ont un pourcentage de tous les coins qui sont minés pendant le début et c'est pour mettre ça en balance en équilibre avec l'autolusion. C'est ça l'intention. Au-delà de ça, vous avez parlé aussi le fait d'avoir fait ce choix au niveau étiquet. Comment est-ce que moi j'interprète ça ? C'est eux qui ont mis ça dans l'algorithme, mais c'est toujours le consensus du réseau qui le confirme. Il n'y a rien qui empêche le réseau de décider démocratiquement qu'on veut réduire de moitié ou complètement à zéro à la part des fondateurs. Il y a peut-être des alternatives cash qui enlèvent la récompense pour les fondateurs et d'autres qui la remplissent avec autre chose. Il y a beaucoup qu'il faut avoir un sujet, je pense, mais voilà en gros, il y a bien des choses. Encore une question ? Vous avez déjà parlé un peu. Je vais vous demander qu'il y ait de l'alternative de ce cash. De la solution alternative, il y aurait par exemple des monaro qui est basé sur un algorithme de l'âge différent. Je ne connais pas vraiment les différences. Je dois admettre que je connais mal monaro. Je sais juste que monero utilise quelque chose qui s'appelle restitution. Il y a aussi des maths intéressantes là, mais je n'ai pas regardé la différence. Je devine que les garanties du privé qui le font sont moins fortes que celles qu'il y a dans le ZCash, mais je ne connais pas les détails. Voilà, c'est tout pour ce sort. Et s'il vous plaît, appelez-vous à dire notre conférence. Merci beaucoup. Et de notre côté, traduction.