ZK para devs de Solidity: todos los DSLs en Scroll - Circom, Zokrates y Noir
ZK para devs de Solidity: todos los DSLs en Scroll - Circom, Zokrates y Noir · 1:11:06
Ahmed guides Solidity developers through Circom, ZoKrates and Noir in a workshop about zero-knowledge applications on Scroll. The session covers building a zkDapp and the architecture of a private protocol running on the EVM.
Speakers
Topics
From ZK para devs de Solidity: todos los DSLs en Scroll - Circom, Zokrates y Noir.
Transcript
[Música] [Música] [Música] ah [Música] ah ah
[Música] [Aplausos] [Música] [Música] [Música] y
[Música] [Música] [Música] [Música] Bueno buenas muy buenas a todos e buenas am un nuevo workshop de s latam y
filosofía código de nuevo también de de la mano de scroll ahora con amed en tierras argentinas o no vamos grande amed andamos andamos Qué lindo lindo qué lindo tenerte por de estar aquí Argentina comendo mucho al faor Qué grande vamos Nada no voy ar mucho tiempo como siempre es un gusto tener a Med acá es un gusto dar este contenido orientado a desarrolladores y todas las redes sociales tanto de S latam como de amed o filosofía código depende de como lo
conozcan van a estar acá abajo Así que que el genio haga haga su magia y para los que estén más tarde estén atentos que hay po cuando aparezca es porque porque vamos a entar Así que amed te dejo la presentación y para que hagas tu magia super gracias Y la verdad super buena onda cada vez cada vez que ando por por por es una una organización que me gusta mucho lo que hacen y pues el tema de que tenemos Bueno antes de chilear un poco sobre el evento que ten
Zero knowledge para desarrolladores y este quizás verd sean desarrolladores o no igual siento que poder sacar un poco la idea de qué Cómo es la experiencia que se ocupa para desarrollar en knowledge y cuáles son las nuevas propiedades que traen que trae Zero Zero knowledge Entonces sí creo que va a est muy interesante estar hablando de diferentes maneras de cómo hacer las cosas también de la arquitectura general de que Zero knowledge también un poco sobre lo que no puede hacer Zero knowledge todavía lo que hace falta las dificultades que tiene un poco el Food de zk Así que creo que va estar bastante
interesante buen como ya mencionó eno me llamo amed y filosofía código me pueden encontrar en YouTube en y hago contenido para desarrolladores hemos hecho ya es contenido junto con Enzo junto conata en español hemos hecho bastantes cosas juntos y también Ahorita vengo representando a scroll específicamente invitándolos a este hacat así que bueno Esto usualmente lo dejo al final pero aquí se los dejo desde el inicio si quieren ir eh conectando con eh eh con el con el jacon si se quieren ir inscribiendo les dejo este QR adentro
de este QR van a encontrar los links de inscripción arriba también una un en un enlace para un Telegram donde ustedes van a poder sacar un foset de de testnet it para scroll y también donde vamos a estar nosotros y todos los partners donde pueden hacer preguntas y sí básicamente bueno Esta es la la cheat cheat e Bueno ya me dijeron en varios países como le dicen cada dicen de manera diferente me dijeron en Colombia en Bolivia en México todos los lugares le dicen diferente que es el el papelito que ustedes llevan al examen eh Para hacer trampa si lo dejan en el comentario cómo lo dicen en sus países creo que en cada uno la dicen diferente en Honduras le decimos la chepi
eh Y aquí verdad en este en esta chia que les traigo están Todo lo que ustedes ocupan saber para entrar en lacaton desde links hasta información y s verdad hay buenos premios Hay buenas oportunidades de conectar con varios proyectos Así que los animo verdad y eh dentro de todo esto el tema de Zero knowledge aplica bastante en el hackatón pueden hacer aplicaciones de muchas cosas pero eh si lo noch pues es es algo Bastante nuevo y creo que puede eh darle bastantes ideas todavía no no están seguros eh Sobre qué es lo que quieren hackear Así que espero que después de esto tengan un par de de ideas bueno Ya entrando en materia eh lo que es Zero knowledge nos permite
hacer algo como lo que mira aquí eh Bueno si han visto las funciones de por ejemplo un token 20 o si han visto cualquier encabezado de función de cualquier de cualquier eh contrato de solidity eh usualmente tienen este este este estilo Pero imagínense como la función de transferencia ustedes pueden decir okay le quiero transferir t address tal cantidad de tokens Pero qué tal si también podríamos tener como e una manera de enviar estos parámetros de manera privada imagínense como aquí que estamos enviándole una cierta cantidad de dinero una cierta cantidad de tokens a un cierto address pero no
estamos revelando cuál address le estamos mandando este esta cantidad de tokens esta es la la facultad que nos en groso modo la facultad que noss sigue Y esto es lo que vamos eh aprender Cómo hacer ahora los primeros pasos e y si ustedes ya saben soliti ya saben hacer frontend por ejemplo algú un tipo de cualquier tipo ya sea angular o react o lo que sea Ustedes ya tienen la mayor cantidad de trabajo lo nuevo que ocupan aprender a hacer esir circuitos que es es lo que vamos a estar haciendo bueno también les aclaro que no es así no más de fácil como solo poner private y ya es hay que hacer un par de cosas y tamb explicando Por qué ocupamos
e hacer un par de pasos adicionales para hacer esto posible bueno qué es lo que vamos a estar viendo primero vamos a comenzar que es lo nuevo que tiene que tienen que aprender para aprender sobre Zero knowledge eh sobre eh Vamos a aprender sobre los circuitos e vamos a ver tres dsls circum noar y Sócrates vamos a lanzarlos en scroll eh Porque también chileando un poco scroll scroll es la una la única zm que donde puedes verificar eh pruebas hechas por circuitos onchain básicamente scroll es la única compatible con circum no y Sócrates de todas lasac BM porque scroll ha priorizado ciertos e promiles que se
necesitan Entonces scroll está lista digamos ya para que lanen sus aplicaciones ahora eh también vamos a hablar sobre cómo es una arquitectura de una aplicación zk Entonces cuando ustedes están también ustedes como usuarios también cuando ustedes interactúan con un protocolo ck como que Cuáles son las diferentes partes con las que estamos interactuando Dónde está cada una esto nos va a poder ayudar también a ver eh qué qué eh Con qué estamos interactuando dónde pueden ir las cosas a un furo eh también eh Sí ver dónde están eh dónde están asegurado todo lo que estamos haciendo eh Y sí Y también eh Bueno y vamos a terminar también con un
demo un poquito más avanzado para que tengan una idea de Cuál es la arquitectura general y también en el demo van a ver algunas cosas de que Eh bueno hoy Zero knowledge no tiene un par de eh de obstáculos a superar y vamos a estar hablando de de esos también Cuáles cuáles son Igual nosotros ya hicimos junto con Manu en ler 2 en español hicimos un par de workshops entonces Esta es una buena continuación para esto visualización de todo lo que ha ocurrido eh de yaá para acá eh Okay entonces Comencemos con un circuito Entonces nosotros los programadores estamos acostumbrados a ver las cosas de esta manera como están en la izquierda
eh imagínense que ustedes tienen de parámetro x parámetros lo que sea x y lo que sea digos en este caso tenemos de parámetro x y y eh que son los parámetros de una función que ejecuta cierta rutina y devuelve un valor de retorno en este caso Z Entonces nosotros estamos así como acostumbrados a a la programación de entrada proceso sal input proceso output eso estamos acostumbrados parámetros instrucciones y después un valor de retorno esa a la programación estamos acostumbrados y los circuitos Se parece pero es un modelo nuevo un modelo diferente que es el que tenemos aquí a
la derecha eh lo pueden pensar como ustedes recibe el circuito recibe de parámetro los inputs los parámetros y también el output También recibe de parámetro el retorno por eso que es un poco raro el circuito recibe de parámetro tanto la entrada como la salida de de del proceso y circuito lo que te devuelve es una prueba y esa prueba es una garantía de que algo fue ejecutado de la manera correcta e y esa prueba la puedes verificar puedes verificar esa prueba en varios lados puede ser en tu voz de manera local en algún servidor o lo que nos interesa hoy es verificar esa prueba
en un contrato en solidity eso es lo que vamos a estar viendo y bueno entonces qué Cuáles son esos primeros pasos para y eh Para eh verificar estas pruebas y eh Estos son que bueno en un momento vamos con la la parte práctica eh Y eh pero si en general usted que ocupan para iniciar los primeros pasos la parte fundamental es e un circuito eh que es lo vamos a escribir en diferentes lenguajes vamos a estar viendo los diferentes lenguajes que tenemos hoy todos son bastante similares un contrato verificador en solidity y otro contrato de lógica en solidity con con con lógica
que ustedes puedan incluir O sea que si ustedes ya tienen conocimiento de solidity pues ya tienen más del 50% del conocimiento necesario para empezar a desarrollar con zk hoy eh Porque eh s eso trae eh Ya se combina perfectamente con todo lo que ya conocemos e Y sí Entonces ustedes usualmente eh Esta es la manera en la que interactúan desde un frontend con inputs privados y generan pruebas en su browser y esas pruebas las van verificar un Chain en un contrato en este caso vamos a estar lanzando contratos en
scroll un de lógica personalizada que me gusta llamarlo ustedes pueden escribir su propia lógica así como justo como están acostumbrados y un contrato verificador que es el estar verificando que la prueba fue hecha de manera correcta Bueno pero ahora me gustaría que bueno voy a compartir mi pantalla completa a ver si r das a compartir full pantalla ya bueno soy yo el que la tengo que poner y lo que vamos a estar haciendo es e vamos a estar eh sigiendo Un paso a paso una una un un artículo que les traigo
preparado acá donde vamos a estar desarrollando vamos a estar trabajando en noar circom y vamos a estar repitiendo el mismo proceso en TR lenguajes diferentes para que se mire se entienda cuál es esa esa ese paso a paso que repitiendo es un circuito un circuito que lo vamos a escribir en estos que llamamos dsls luego un contrato verificador que est generado automáticamente van a ver interesante Cómo sucede eso y luego un Trato con lógica personalizada en la
que ustedes van a poder escribir lo que ustedes quieran y van aar su conocimientos que ya tengan sobre eh solidity Okay entonces recordemos que todo esto es para poder tener parámetros privados en el blockchain Okay entonces vamos a comenzar con el primero que es Sócrates Sócrates es un lenguaje muy un dsl muy interesante Bueno antes verdad un dsl no mencioné que es un dsl un dsl es un lenguaje de un dominio esp le decimos O sea que un lenguaje que solo sirve para una cosa en este caso Sócrates es un lenguaje que solo sirve para escribir circuitos con Sócrates no vas a levantar un backend con Sócrates
no no vas a a desarrollar un contrato inteligente no Sócrates solo es para escribir circuitos igual que noir que Circo entonces miremos cómo funciona Aquí les dejo estos comandos para instalarlo Bueno ya lo tengo instalado Solo tengo que agregarlo a mi variable de entorno por acá Así que colocar por acá eh con mi nombre de usuario y e con eso ya va a quedar habilitado eh eh Sócrates instalado en mi computadora Okay entonces lo que voy a hacer es que eh voy a crear e voy a crear
un nuevo voy a crear mi archivo punc que va a ser el mi archivo de donde voy a escribir mi circuito y es circuito es muy sencillo que básicamente lo que es que tenemos a y b este es como el Hola mundo de Sócrates verdad Entonces ustedes como parámetro tienen a Y ustedes van a verificar para generar una prueba de que a cuadrado es igual a b entonces a por a es igual a b hacemos hacemos un chequeo hacemos una
prueba de que a por a es ig a b Pero lo importante es que a es una variable privada entonces a no va a ser no va a estar visible para el mundo exterior específicamente ente no va a estar visible para un Smart contra Bueno si algo está un Smart contra que es público porque recordemos que virtual Machine no tiene la facultad de de ejecutar inputs privados entonces por eso ocupamos los circuitos y la computación of Okay que eso es lo que vamos a estar haciendo ahora entonces aquí lo que vamos a hacer es que vamos a generar e una prueba pasando como parámetro a que va a ser eh Y nu que va y b que va a ser igual a nu y esta prueba debería de funcionar
porque 3 * 3 es ig a 9 si no fuera el caso no fuéramos capaces de generar una prueba Okay entonces la prueba ya Se generó Esta es mi prueba aquí la pueden ver un montón de números estos son los que lo lo que le vamos a estar pasando a eh el nuestro contrato ahora el siguiente paso es verificar esta prueba donde la queremos verificar es en eh en scroll entonces gener este Comando y esto me generó este archivo automáticamente no lo escribí yo esto lo generó él y se fijan esto se les puede hacer bastante familiar que este es el un contrato de solidity que lo generó
automáticamente él con un montón de números raros que esto es lo que va a permitir que onchain nosotros probemos ya sea eum scrr este contrato tiene la la función e verify transaction esta función yo le mando de parámetro una prueba y los inputs públicos y me devuelve verdadero o falso verdadero únicamente si es válida la prueba Entonces probemos lanzar esto en scroll que esto es lo que otra vez chileando un poco scroll Esto es lo que únicamente en en las redes optimistas en
mainet y en las ler un alternativas pueden lanzar pero en la z kbm eh únicamente en en scroll Okay entonces poner aquí el verificador este es hecho con Sócrates entonces voy a lanzar este contrato aquí lo compilo Ah por cierto eh si están usando esto cualquier layer 2 ahora todos los desarrolladores que están viendo ahorita eh Les recomiendo usar la versión 0824 en del compilador porque esto tium acaba de sacar un un eh un
nuevo code que es el mem copy entonces Todavía no está disponible en las layer 2 Igual dentro de muy poco ya estar pero por ahora recomiendo usar únicamente la versión 0824 para abajo eh Okay entonces yo aquí Me conecto ya aquí estoy ya conectado en scroll e para los desarrolladores si quieren conectar scroll la manera más sencilla de hacerlo es de conectarse scroll y conseguir fondos para el fet yo les recomendaría usar chainlist y aquí activan include testnets y eh
buscan scroll Entonces lo vamos a estar lanzando aquí en scroll se por test aquí lo agan metas lo agan listo y empieza por acá Okay entonces vamos aquí el contrato verificador eh Y después vamos a lanzar un segundo contrato que es el contrato con la lógica personalizada Ok entonces una vez lanzado Este voy a lanzar este otro que aquí está Ya lanzado ahora voy a lanzar otro que es eliz OK
entonces lo compilo también y de parámetro me va a pedir el address de El verificador ya vamos a ver por qué Okay entonces eh el contrato del del verificador ese lo autog generera Sócrates lo da listo para lanzar y ese no lo toco ese Solo lo lanzo y el contrato verificador eh lo que voy a hacer es que eh Y esto usualmente en cualquier en cualquier contrato de Zero knowledge que ustedes estén desarrollando siempre van a estar haciendo dos cosas Una es el eh verificando la prueba Entonces eso está
en la función que les mostré que está en el otro contrato entonces estoy usando la interfaz del verificador de Sócrates para eh pasarle de parámetro la prueba y los inputs privados y él va a verificar me me va a volver Bueno vertir si eh la prueba está incorrecta y luego de de eso yo puedo Elevar cualquier tipo de lógica y en este caso lo único que voy a hacer es guardar el input privado si se recuerdan el el eh las eh la la dos parámetros que envié son [Música] el fueron tres y nueve tres era a nu era b y únicamente B era público Entonces
vamos a ver cómo quedaría todo si yo voy a prueba eh aquí está Okay si yo voy la prueba Entonces e recibe el punto A B y C Solo este formato cómo está hecho entonces aquí pues bueno la voy a poner en el formato que me la pide entonces que es a b y en un arreglo esto obviamente en su aplicación si ustedes están están haciendo una aplicación eh Ya que están que que a lanzar esto pues lo hacen de manera automática ya con su aplicación full ahí verdad en hay librerías de javascript
que ya nos permiten esto y el eh el el los los parámetros públicos en este caso pues únicamente es el nu que dejamos como parámetro público entonces hacemos la transacción Y en este caso la lógica custom que yo le puse la lógica personalizada es nueve Entonces ese es el que voy a estar guardando aquí como eh nuestro público y aquí ya lo deja guardado c aquí verdad est es como un inicio de Sócrates como funciona eh Ahora si ustedes otro otro el siguiente que vamos
a estar viendo ahora es no y no también es full compatible con scroll eh Y y noas también de hecho en el futuro va a sacar su propia layer 2 que ahorita está el noir sandbox Así que es muy interesante lo que se viene no solamente eh de lo que vamos a estar haciendo ahorita sino que también a futuro eh va a ser una layer 2 que ya va a traer eh privacidad por defecto y es super interesante que bueno que también va a estar montado encima eum O sea que va a tener las garantías de seguridad Así que está super interesante si les interesa eso también sepan que eh en el futuro ustedes van a poder
e usar los nacimientos que tengan de no para eh buen aquí voy a cerrar todo ya lo de y vamos a movernos a e todo todos los conocimientos que hayan tenido sobre noap los van a poder aplicar para crear Smart Contract directamente en esta esta layer 2s Así que eh matan dos pájaros de un solo tiro si les interesa mucho esto de la privacidad en el caso de nua vamos a estar lanzando este y me gustaría que compará esto con lo que recién hicimos ahorita recordemos que recientemente hicimos un circuito que probaba que a
cuadrado es igual a b donde a era público a era público al revés a era privado y b era público ahora est esto Solo es una prueba lo podemos borrar ahora Estamos trabajando con no y me gustaría que lo compará con Sócrates son muy similares este no está muy inspirado en en en lo que es rost así que si le gusta rost quizs le gusta también la la la eh la sintaxis de no y lo que estamos probando es que x y y son diferentes eh pero no estamos revelando x solo revelamos y y por ahí
se pueden ir ustedes Okay Eh si como el ejemplo de los tokens si yo quiero enviar una transacción esto igual en Sócrates esto igual en si tengo atributos públicos tengo atributos privados los atributos privados puedo generar ejecución aquí en mi circuito y puedo generar una prueba y la la prueba la llevo a solidity cuando esa prueba llega a solidity eh solidity únicamente va a ser capaz de ver a y y está a x y y va a estar ocado y va a estar of entonces pueden ir pensando Ah si es una aplicación de defi quizás la transferencia a quien recibe los fondos Es privada Ah quizás están haciendo votos privados Quizás El votante es anónimo y
el voto es es público entonces las diferentes casos de uso que se pueden ir dando con esto de atributos públicos privados que lentamente eh Ya pues eh van a poder eh ustedes programar estas eh todas estas cosas vamos a poner aquí eh en el en archivo que es un archivo pun tomol donde vamos a poner dos números por ejemplo 3 y cu lo guardamos y ejecutamos narg proof eh que al final siempre hay el alg unn Comando para ejecutarlo y también hay manera de hacerlo desde el browser que también vamos vamos a ver un ejemplo de eso y esto les va a generar igual una semejante prueba aquí está la gran
prueba y el siguiente Comando que vamos a agregar es generar el archivo de solidity que es lo mismo que hicimos con Sócrates y aquí nos generó este archivo entonces lo que vamos a hacer es lanzar de vuelta este contrato y aquí lo vamos a ir lanzando entonces vamos aquí Este lo estamos haciendo con no verificador Okay lo lanzamos lo compilamos que por cierto cuando compil tienen que activar las optimizaciones porque si no este
contrato de nu es muy grande Si no optimizaciones no no les va a funcionar cuidado entonces e vamos ahora a lanzar el Ultra verifier que por cierto siempre tienen nombres muy divertidos todos los de todo lo que es eh que estamos usando en el fondo no sé si quizás han escuchado de plonk que es un sistema que Bueno de hecho astec astec lo lanzó el primer paper y ahora muchos plonk inclusive scroll en el fondo USA plonk que es una primitiva es el backend decimos de la
manera de cómo generar y verificar pruebas y y aquí ya montado mi verificador vamos a estar lanzando ahora un contrato con la lógica customizada Entonces vamos a hacer el mismo proceso vamos a hacer un proceso aquí en remix donde vamos a den noar eh lógica customizable y vamos a pasar también por parámetro elador de no y aquí Perdón acá
es Y también vamos a estar pasándole una prueba y los inputs públicos igual es una función de solid si ocupan pasarle más se los pueden ir pasando e s ahorita lo importante que se vaya entendiendo es las diferentes partes queo después vamos a ver cómo ya hacer una aplicación full con un frontend con la que interactuamos desde metamask donde se genera las pruebas quizás tengan varias preguntas Okay entonces acá eh genero esta prueba y el input público también el este muy amablemente Noa nos generó este archivo donde está
en el formato que la está esperando él que es de By 32 de 32 bytes que es el parámetro público entonces Recuerden que enviamos tres y cuatro de parámetro tres es privado cuatro es público y como este es el único que vamos a poder leer de este el Smart Contract y Bueno entonces aquí que confirmemos vamos a leer esta variable que debería ser el número cuatro que es el parámetro público ahora que son Aquí está listo ya lo que son parámetros públicos y privados Por ejemplo si ustedes están emitiendo un voto desde una suplicación votos anónimos por
ejemplo entonces tienen al votante y el voto que ejecutó entonces el votante va la que ustedes son uno de los votantes va aquí en lo que es la prueba y el input público es su voto por ejemplo si votaron A favor o en contra Entonces únicamente el voto es público pero el votante no nunca va a tocar el Smart Contract sino que eso todo va ir en lo que es eh la prueba si si se fijan Sócrates y no ambos muy similares ambos tienen su propio lenguaje prop que se parece mucho lo que es programación pero en vez de
ejecución es assertion hacer pruebas verificar validaciones eso los lenguajes de circuitos y lo otro que tiene es que eh Son muy eh tienen su propio Comando para generar estos contratos verificadores de solidity Entonces eso es lo que tiene en común y eso también lo tiene circom que es el último que vamos a estar viendo que eh esta Introducción a circom pues este es el lenguaje más usado con este fue creado Tornado Cash Eh entonces con esto ya pueden tener como aplicaciones que ya está demostrado que funciona Aquí tambén les dejo los
comandos para instalar yo lo tengo instalado eh Y pues vamos a eh vamos vamos estar creando igual una nueva carpeta por acá Okay amed aprovecho en lo que vas haciendo eso para para avisarle a la gente que ya está abierta la ventana de Po para clar el Sí dale vayan el el claim se hace desde la misma app palabra secreta y la palabra secreta secreta para hacer el claim es todo en mayúscula
d s l todo junto en mayúscula dsl eh recuerden se hace desde desde la app de Po a quienes nos estén viendo en Twitter los invitamos a venir a nuestro canal de YouTube s latan porque acá tienen el chat y es mucho más interactivo sobre todo si tienen dudas en cuanto todo lo que amed está enseñando y demás Así que como siempre e están invitados ahí dejamos en los comentarios del video redes sociales de amed de scroll y demás me gusta el video suscripción sigan a los dos perfiles in latan filosofía código Así que nada eso
eh en un ratito subo a repetirla antes de que cierre la la ventana recuerden desde la app de Po dsl es la palabra secreta para reclamar todo en mayúscula y todo junto Ahora sí seguí super gracias Sí entonces ya viendo el tercer y último dsl que vamos a estar viendo ahora de circom este si se fijan bueno tiene Circo un poco fama de tener la sintaxis menos amigable e es el que parece menos de programación eh parece más como hasta como estador no sé pero igual eh es es Es es el que está más comprobado que funciona es el que tiene
la mayor cantidad de librería porte en el ecosistema Y si si ustedes quieren así como asegurarse que si quieren irse como la por la vieja confiable al hacer su aplicación de de Zero knowledge pues les recomendaría circum aquí cree dos archivos el archivo multiplier 2. circum que es el circuito que es el que vamos a generar de que a por B es igual a c Así que a por B es ig a c y entonces yo voy a generar también en input que va a ser a y b Entonces en este caso c sería igual a 33 Pero eso él me lo va volver como un parámetro P E sí aunque sea un como les mencioné
verdad aunque sea un un el resultado de una operación igual es un parámetro es un parámetro de un circuito un input que esa es la idea que es un poco quizás rara de de de procesar al inicio sobre todo si venimos de del área de programación pu aquí muchos comandos que voy a poner por aquí que esto es lo que quizás han escuchado hablar de lo que es una trusted Setup Entonces cuando Ups tengo que tienen que tener eh eh node Ahora sí entonces Eh Esto me va a pedir un poco de
entropía poner un número Random algo sencillo pero Eh Esto lo que va a hacer es como el recordemos de que bueno quizás cu hoy todo lo que es circuitos Eh no tenemos nada como una capa tan arriba as no Sócrates y circum también como capas encima de todo lo que es e eh lo que ocupamos los desarrolladores para escribir circuitos pero todavía ocupamos saber un poco de lo que está ocurriendo muy abajo y creo que siempre buen ejercicio entender qué es lo que pasa eh por abajo hasta cierto punto Entonces como les mencioné anteriormente Noa usa eh plonk
Y este este el Sócrates mundo usa eh Bueno estoy seguro creo que ustedes pueden elegir y específicamente circom en el fondo usa lo que es gring grot 16 entonces grot 16 es una es un un tipo de PR esto le decimos el backend Entonces el backend se encarga tanto como de generar pruebas como de verificarlas y es importante que cada un de sus propias diferencias por ejemplo hay algunos que tienen pruebas más grandes si se fijaron la prueba de de
de la prueba de no era una un número muy grande Comparado al de al que vimos con Sócrates Pero quizás unos son más baratos de de verificar que otros son y por más baratos es como que ocupan un programa El verificador de solidity gasta a la hora de verificar entonces cada uno tiene sus propias cada uno tiene sus propias como eh diferencias y y también eso importante saber porque dependiendo de la aplicación que ustedes están desarrollando pueda que cierto bent sea mejor para aplicación específico quizás en alguno le va a convenir más usar
plonk en otra tal vez en alguna aplicación de votos por ejemplo les va a convertir les va a más usar plonk quizás en su aplicación de un no sé de un airdrop de nft con Zero knowledge le va va a a permitir va a convener usar no dependiendo bu aquí me p un poco más de entropía y haciendo la entropía y todo esto es lo que estoy generando una nueva Trust C le decimos que en el caso de gr bueno como les mencion un tiene unos PR y cons en el caso de gr que que estamos ahorita a través de circom este un con se podía dec que tiene es que tenemos que hacer
una ceremonia de inicialización donde podemos ya sea usar una ceremonia existente Como por ejemplo no sé si alguien quizás por aquí participó en agregando entropía en la de en la que hizo de ti un foundation que con el mouse tenías que mover el Mouse y con eso gener entropía y después todos juntos generamos Random y solo se requiere que una persona no haga para que todo el Network esté asegurado entonces pero sí verdad como la que estamos como gr lo ocupa A diferencia de plonk entonces ahí cada uno tiene sus cosas sus pros y sus cons Okay entonces ya Se
generó todo verdad all agregué la entropía ya Se generó y pero a pesar de que se como que un poco diferente al final se parece mucho a lo que ya venimos haciendo y aquí al final todo termina en lo mismo que es un validador de solidity que igual lo vamos a estar lanzando en scroll aquí eh validador eh vamos a ver verificador sería circum verif voy a poner Entonces igual va a tener su función de algo parecido ido como verify proof entonces voy a lanzar este miren
este es el de gr 16 Igual también está como la posibilidad de que de un dsl Creo que todavía ninguno lo ha implementado Ninguno de los dsl grandes quizás circum con alguna con algunas de la comunidad lo hab implementado es de que con el mismo lenguaje dsl de arriba como Sócrates ustedes pueden generar verificadores y pruebas en diferentes backends plk digamos otro backend es stark pero ese no es con la ebm entonces Esas son como las diferentes posibilidades que tenemos Okay ya se este contrato y de nuevo todos los
demás tenemos el contrato de la lógica custom donde se aplica el el el la lógica customizable digamos entonces en este igual en el constructor le voy a estar pasando Estos son contratos todos estos de lógica verificable son algunos que yo hice estos no están en la documentación oficial ni se generar automáticamente Estos son yo lo hice como un ejemplo porque es el proceso que usualmente vamos a seguir a la hora de hacer cualquier cualquier proyecto cualquier d que ocupe
privacidad también recuerden de que Zero knowledge no solo se limita sm Contract también pueden verificar un backend o sea off Chain Pero bueno Claro que verificar las onchain es es una propiedad como super interesante porque se si eum lo verifica todos confiamos que esa prueba es válida Es que que combina super bien con Bueno aquí este Comando que les dejé automáticamente ya me deja el el listo para que con la prueba que sea compatible con con con remix en el en el formato que que remix espera y pues
eh Pues aquí vamos a estar imprimiendo el único el el el el input público que es el resultado de 3 por 11 verdad que aquí está 33 y eh Recuerden que igual raro porque 33 es el resultado pero en realidad es un input del circuito Esa es la idea que al inicio para nosotros los programadores puede sonar un poco raro todo esto ahí nos vamos acostumbrando eh eh poco a poco e ahora me gustaría mostrarles un poco sobre eh lo que es eh lo que son los una
aplicación una la ar típica de una aplicación zk que es lo que pueden ver por acá que bueno lo que Estuvimos viendo ahora es como la base la base que lo que proyecto Zero knowledge ocupa para funcionar que es un frontend y contratos entonces en el frontend como vimos varias veces en todos los dsls siempre tienen inputs privados inputs públicos los inputs privados no salen del usuario el usuario él solo con su propia prueba usualmente en el browser para que no interactúe con nada en internet y es la prueba la que Envía un Chain a los contratos cces el usuario
envía la prueba junto con los parámetros públicos pero los parámetros privados nunca salen de su computadora Entonces eso es lo que permite que nosotros podamos ejecutar algo on Chain con parámetros privados Pero al final los parámetros nunca llegaron a la cadena sino que los parámetros privados en el cliente ahora el contrato recibe esta prueba y puede agregar su propia lógica personalizada y en el también lo va a chequear que la prueba sea válida entonces este es el Este es el flujo normal de una apicación knowledge Pero puede crecer más más y bueno eh Ya voy a explicar un
poco más de cómo puede puede crecer pero eh les lo vo a hacer con este ejemplo que les voy a mostrar por acá eh entonces este es como una aplicación e ya Ups esto es una aplicación eh una full aplicación zk que tiene eh varias cosas interesantes que me mostrarles que son ya voy a estar explicando que es cada una de ellas pero son firmas con ecds o sea firmas con metamas y también un relayer y browser proving o sea generar las pruebas en su
browser Ahorita estamos generando las pruebas en un comando vamos a estar generando desde el browser Entonces qué es esta aplicación esta aplicación es un chat anónimo Entonces en este chates solo pueden escribir si ustedes Son miembros de un grupo Cuál es ese grupo bueno en este caso es si ustedes son de una lista con un whitelist por ejemplo en este caso un mar el W podría ser si ustedes son no sé owners de un nft si ustedes son holders si ustedes tienen una cierta cantidad de tokens para arriba pueden chatear No sé pueden hacer diferentes cosas con esto Bueno pero este es un chat pero es anónimo O sea que hay una lista de personas que pueden
chatear y ustedes pueden escribir solo si son de la lista y este este pero ustedes no van a mostrar pblicamente Cuál de la lista son entonces escribamos un mensaje bueno y también al final para cerrar me gustaría también comentar sobre Cuáles son las dificultades que tenemos hoy para desarrollar knowledge el Food como decía Cuál es el Food deo knowledge que sí hay un par de obstáculos que que tenemos hoy entonces eh el mensaje que voy a escribir es por ejemplo no sé Hola hola Sid entonces va enviar el mensaje y eh se fijan de que aquí lo que voy a hacer
Es que voy a firmar una transacción no voy a enviar la transacción directamente con Chain aquí estoy firmando holas la firmo y ahí queda la transacción y este es el primer problema que les quería mencionar que esto va mucho pero va a tardar bastante o sea bastante bastante entonces eh Y por qué tarda tanto esto por qué tarda estas pruebas y es porque cuando etherium lanzó etherium no los desarrolladores de etherium no sabían que iba a servir tanto para eum para escalar eum o sea de verdad es como mío al dedo la tecnología que
eh eum ocupa para dos cosas para privacidad y para escalabilidad y por escalabilidad me refiero a atraciones rápidas y baratas Entonces el problema es que como los desarrolladores de tium no sabían sobre cque ellos desarrollaron tranquilamente y cuando se dan cuenta de que todo lo que haban desarrollado no todo pero muchas cosas de las que hanan desarrollado no son bueno compatibles Sí porque esto está funcionando pero no son amigables con knowledge O sea que se ocupa demasiado poder computacional para generar pruebas que con cosas estén relacionados con ethereum en este
caso lo que está relacionado con ethereum que estoy mencionando es una firma de metamask lo que estoy haciendo específicamente lo que se llama Easy recover con el Easy recover ustedes pueden obtener el address de eh el address de una firma entonces usted firma una transacción la on Chain y ustedes con el el el precompile de Easy recover pueden convertir pueden traer de la firma eh un el adre de quien lo firma entonces lo que estoy haciendo acá es que estoy firmando una transacción hago un recover en no Esto está hecho en no en el circuito hago un recover recupero el address y después chequeo si el ades
está en una lista y si está en una lista que en este caso es un mar entonces eh genera una prueba y esa prueba se la mando al al contrato y el contrato el único parámetro público es el mensaje y solo es el mensaje y queda anonimizado Quién es el qui Quién es el Quién es quien envió el mensaje y el que envió el mensaje únicamente va a poder pues generar esa prueba si es parte de la lista entonces Bueno antes est muy era muy e er pensábamos de hecho un tiempo que se pensaba que será posible algún día
generar eh pruebas con deo knowledge con eh con con eas recover o kch kech el método de hashing que en el fondo usa e recover Será posible generar pruebas y pues Bueno ya Se generó pero vieron que tardó bastante y un tiempo que se teorizaba que bueno será que se va a poder será que no hoy la buena noticia es que se puede porque un tiempo que era demasiado verad otra buena noticia es que siempre están saliendo nuevos métodos para hacer rápido y s Como por ejemplo un ejemplo el primer conocen Z Cash que Z Cash fue
el primer proyecto as grande usar knowledge y zk cuando cas primer demo que lanzaron Z es algo muy sencillo solo es bueno sencillo Comparado a lo que se puede hacer ahora es enviar bitcoin Enviar dinero de a a b de wallet a a wallet b y eso solo es posible o sea eso antes era posible únicamente generando pruebas que duraban más de un día entero generando una prueba solo para mover dinero Bueno ahora ya tenemos blockchain full ebm hacer un montón de cosas más ahora eh Bueno y viene astec también verdad Entonces puedes hacer muchas cosas eh pero sí verd computacionalmente es es Es
muy intenso bueno refrescos aquí a ver si todo salió bien y mi mensaje ya está aquí ya Eh Esto está escrito en elato esto queda guardado en el contrato porque es un parámetro público pero yo como usuario como firmante quedé en el browser generé la prueba en mi browser Y esto quedó eh quedó en mi computadora nunca fue un servidor y listo verdad Ahora una otra cosa que es es Es importante que pasó aquí y no la mostré es que eh okay imag imagínense que yo genero una prueba y esa prueba eventualmente tiene que ir un Chain Entonces qué pasa si yo mismo que generé
la prueba la pongo un Chain es como que mexa pues no no importa que si si era un mensaje mensaje anónimo si yo la puse un che ya todo el mundo va a saber quién soy entonces eh Si queremos tener un un un eh protocolo anónimo ocupamos una nueva entidad que a esa le decimos el relayer Entonces el relayer está aquí abajo yo aquí tenía corriendo por detrás que tengo una aplicacion cita un relayer que es muy sencilla solo está esperando transacciones y las está enviando un Chain está esperando esperando transacciones este lo tengo corriendo local y las está enviando ch Entonces si se fijen aquí en ningún momento eh Como que confirmé una transacción un
Che ni pagué gas sino que lo que tengo aquí es un backend eh corriendo eh eh este en este demo bueno que ahí pueden ir a revisar el código también verdad eh que qué es lo que trae pero también esto abre la puerta a otro a otro a otras posibilidades que son Okay tengo un backend enviando transacciones un Chain como lo financio él tiene que pagar el gas entonces hay que alguna manera eh Y eso también esto no solamente aplica Zero knowledge sino que también por ejemplo tenemos cosap de que tiene relayer para hacer aplicaciones de defi Entonces Okay tenemos una red de relayer es centralizada o descentralizada có cómo hacemos etcétera
entonces en este caso ocupamos un relayer proteger nuestro anonimato en aplicaciones privadas y esto nos lleva de vuelta para acá que eh cuando ustedes aquí agregamos la figura de relayer para que ustedes no sean directamente Quiénes Ejecutan las transacciones y también otro posible otro posible elemento por ahí es la computación en la nube vieron de que computacionalmente es bastante intenso general prob knowledge en varios casos Entonces ustedes pueden apalancarse de computación en la nube para generar
pruebas no en aplicaciones de privacidad porque se estarían doxeando con con con este ente que es un ente centralizado solo están haciendo aplicaciones que no que no necesiten de privacidad Y bueno ya para ir cerrando y antes de entrar a al tema del jac que también me gustaría comentarles es Cuáles son las limit el Food Cuáles son los problemas que tenemos hoy y cuáles son qué nos bloquea para seguir haciendo más aplicaciones si se fijan de Tornado Cash No han habido tantas aplicaciones nuevas de Zero knowledge y
bueno Esto es Estos son como los tres bl más grandes que veo uno es como el caso de Tornado Cash insertidumbre sobre La regulación bueno eso sobre todo en países como como Unidos digamos eh est es un problema mayor o en Europa pero sí creo que en general como no hay unas reglas claras Y hay miedo de que con Zero knowledge puedas lavar dinero y hacer cosas así entonces lo que ocupamos hacer es si si queremos en el futuro ser como demostrar que no estamos lavando dinero por ejemplo entonces tanto como nosotros aquí digamos en esta chat en
esta aplicación de chat nosotros estamos haciendo una prueba de inclusión estoy demostrando que yo soy parte de un grupo pero también podemos demostrar que yo no soy parte de un grupo buen Por ejemplo yo puedo demostrar que yo soy el dueño de estos fondos en este protocolo de ifa y que dejé Guardado de manera anónima y también demostrar que no soy Corea del Norte Por ejemplo entonces eh asía eh quizás esto sea como un alivio para pero igual siempre y cuando las reglas estén bien claras sobre cómo hacer col lo anónimo e el sig la siguiente limitante que veo yo te interrumpo el último segundito quedan los últimos segundos para
reclamar el po recuerden desde la app de Po bien rápido dsl todo en mayúscula todo junto y nada eso ahora sí ya podes seguir Perdón Dale dale s okay Entonces otro problema es como ustedes se fijaron hay mucho puede tomar mucho tiempo generar una prueba y esto a los usuarios le da una muy mala experiencia de usuario ese es otro problema bueno est Esperemos que se vaya mejorando y la tercera Es la falta de mecanismo de firmas nuica en billeteras bueno Esto lo cubrimos en el workshop estuvimos haciendo e con
con mano con mano en una serie de workshops que hicimos eh Y est Eh Esto lo que significa de que si ustedes quieren prevenir que tengamos doble voto por ejemplo con votaciones anónimas o que o que es el problema del Double spend que pued gastar dinero dos veces tenemos que este mecanismo que llamamos nulifica y la nulifica no es compatible con las billeteras actuales ocupamos que metamask Rav y todos los demás hagan una actualización entonces todas todas las wallets ya tienen p requests hechos con eh con protocolos funcionales pero todos lo están revisando porque igual es es una
cuestión de seguridad también entonces eh habrá que habrá que ser pacientes para que todo esto sea sea posible Eh bueno si ya Ah para ir cerrando lo vuelvo a invitar al al al jaton Recuerden que Zero knowledge ustedes no ocupan s siro knowledge para programar en scroll pero knowledge es una es un caso de uso ideal para desarrollar en scroll Y si quieren conectar con scroll y también con los diferentes partners que que tiene scroll en este hacat pues sí a todos los invito a este jaat que la verdad está muy bueno hoy inició todavía se pueden inscribir pasar todo el fin de
semana si está en Gina yo voy a estar aquí en mu aquí me pueden venir a visitar y hacer preguntas conectar Eh sí Igual verdad eh Por eh estamos Juan y yo aquí en América Latina si quieren conectar con nosotros si quieren conectar sus proyectos con scroll sus comunidades o si tienen técnicas estamos aquí verdad me gustaría compartirles un poco sobre el jacon en sí que está aquí Este es el link que este es el primer link que les dejo en el en en el en la copia y este
eh se fijan que hay eh eh Hay buenos premios verd Hay buenos premios hay bastantes premios y estos premios están en tres categorías que es la categoría de defi Gaming privacidad y un eh Track general eh conectado con lo que estamos verdad Def si les interesa desarrollar en Zero knowledge pueden hacer DF privado aplicaciones de finanzas descentralizadas y privadas creo que es algo muy importante y la parte de Gaming también es muy importante Recuerden que ahora
con knowledge podemos por ejemplo hacer póker en blog porque el póker Si todos Si todos siempre nos estamos viendo las cartas es muy aburrido podemos hacer este tipo de aplicaciones con privacidad en el blockchain específico solo para Universidad donde ahí aplica eh todo lo que todo lo que acabamos de mencionar y también un TR general para todo lo que eh a todo lo que ustedes piensen que es creativo que que a la gente le gustaría usar que a ustedes les parezca que que tiene sentido eh que tiene duro pues lo invitamos a desarrollar recuerden también que dentro de este premio
tenemos reservados eh 11000 para el price po O sea que solo por lanzar en scroll su proyecto solo por lanzar aunque no ganen siempre cuando sea un proyecto que tenga sentido no solo lanzar un contrato Porque todos los proyectos se van a llevar un porcentaje de estos 11000 de maneras iguales así que solo por participar no pueden perder aquí en el sipre Si sipre salen ganando también Recuerden que tenemos varios partners que está está anchor está que es es Es una
es son servidores rpcs para para con una apis que les permiten darle mayor funcionalidad ya sea para proyectos de nft está aste que es el que mencionamos ahorita el creador de no hay boun específicas por usar no que es lo que mencionamos ahora está ch link que bueno seguro conocerán que también está tiene datf est covalent que es que les sirve para un indexador d pueden hacer específicas de esos proyectos es muy fácil de usar bueno proyecto nació orgullosamente en
América Latina y que tiene la herramienta defender que les ayuda a proteger suos contratos inclusive después de haberse lanzado Está también cindr que también es muy es un caso de uso justo como lo que les mencionaba siempre les permite hacer pruebas generar pruebas de c knowledge en en circum no sé si Sócrates pero si en la nube si que se ocupan gener pruebas tercerizadas y de graf para que explic muchos proyectos de que de los que en cualquier categoría Entonces sí cada uno tiene sus bounties específicas además de
la bouny de scroll Así que eh Si todos invitados y Y si cualquier pregunta pues eh estamos estamos aquí aprovechamos entonces hubieron algunas preguntas no sé si estás para responderlas Sí claro Bueno dale subimos acá Julio puso estas pruebas solo están disponibles para cadenas c no no estas son perfectamente compatibles el día de hoy todos los que vios ahorita cir Sócrates
están son compatibles con eum con todas las layer optimistas pueden Us en arbitrum optimis y todos los que usan el stack también eh Y en todas las redes layer 1 también y resulta que todavía no son compatibles en algunas layer 2 zk porque es muy difícil darle soporte a estas ciertas eh características que usan estos Smart contracts que son específicamente una serie de promiles
Y orgullosamente scroll si le da soporte Así que scroll hoy es la única ebm que donde pueden hacer eso pero no es la única red eso igual para desarrollar en scroll como en cualquier otra Z kbm ustedes no ocupan Zero knowledge eso ya está abajo en el stack ustedes ni se dan cuenta que está ocurriendo no ech solo camb su rpc y pueden empezar acá Viene otra y si traquean la prueba no dan con la adres creo que eso está sobre lo que hablaste al final sí correcto de hecho esa es esa es exactamente la pregunta y es por eso es importante desarrollar y crear un
relayer verdad Porque si yo soy mismo el que introduzco la el la transacción ya me pueden trar después también Julio Julio ha estado full activo ahí en el chat haciendo preguntas la prueba sería el puente que recibiría especie Tornado Cash y existe un delay en la transacción o toma la misma velocidad de la L2 a ver cómo si velocidad vamos a ver la prueba diamos la prueba en tornado tornado escrito con ccon eh
Tornado Cash tiene un contrato on Chain tiene un relayer para que proteja tu identidad y vos como usuario puedes interactuar con él vos desde tu browser generas una prueba eh Y esa prueba Eh vos eh le das tu la llave que es tu llave privada pero no la llave privada metam sino que la llave Privada de tus fondos que están en en Tornado Cash generas la prueba después esa prueba eh se la pasas al relayer el relayer la ejecuta un ch y él se queda con una comisión por realizar eso Entonces la velocidad O sea si por velocidad te referí En cuánto tiempo tarda todo ese ciclo Eh Pues el primero generar la prueba en tu browser bueno se fijaron
que fue bastante lento en este que yo hice pero es porque estoy usando y si es ahí porque estoy usando Mask Tornado Cash no usaba eso Tornado Cash usaba notas lo malo de usar notas que tenés que estar guardando unos archivos e pero es mucho más rápido la velocidad que tardar transacción no estoy seguro en los incentivan pero no creo que debería ser mucho más extra que que confir la transac es muy tardado punto dependiendo apli Debería ser muard cuestión de minutos también por aquí por pero recuero
también activo por otros otros lados Qué grande grande Bueno no sé si queda algo si queres decir algo y si no cerramos acá no s est Este es tu espacio acá manejas vos el conductor de este vehículo no solo agradecer el espacio si estar de lado de scroll y a los desarrolladores pues animarlos a a como sumergirse en este mundo de siro knowledge que es es va creciendo bastante y se ocupan bastantes manos para desarrollar proyectos desarrollar
protocolos y solo animarlos a que sigan investigando bien bueno eso Entonces eso es todo eso es todo por esta ck para para deps de solidity Muchas gracias a todos por participar una afluencia de público bastante grande 200 personas pasaron entre Twitter y YouTube Así que nada muy contentos recuerden me gusta retweets seguirnos en nuestras redes sociales s latam por un lado filosofía código por el otro Así que nada las comunidades de Telegram también siempre abiertas eh Y también siempre está ahí
respondiendo a los que preguntan y le hacen un un pin siempre está dándolo todo así que nada de mi lado eso es todo si queres saludar y terminamos Gracias a todos nos estamos viendo pronto de nuevo aquí por Así que gracias gracias por la asistencia a todos genial nos vemos cha chao Oh [Música]