Nicolás Venturo - Liquidity Mining, staking y lágrimas

ETH Latam Talks · 18 Aug 2022 · 22:01

Nicolás Venturo examines liquidity mining and staking, two ways DeFi protocols reward users for supplying capital or securing a network, along with the pitfalls that come with them. The Spanish-language talk was given at ETHLatam in Buenos Aires in August 2022 and runs a little over twenty minutes.

Speakers

Topics

From ETH Latam Talks, hosted by ETH Latam.

Transcript

[Música] qué tal buenas escucharán en total vengo a contarles de uno de los sistemas de incentivos más utilizados en todo design ni cómo fue nuestra experiencia en balance adaptando este sistema para decías que teníamos como decisiones menores de diseño resultan en problemas de seguridad que podrían ser catastróficos en cosas este estilo y cuál fue nuestro camino para al final del día tenerlos después ser utilizados con seguridad mi nombre es de colapso lidera el equipo

de contratos inteligentes en balanzas labs van a hacer es un protocolo para elementos text si conocen jeans of finance es similar a eso sino no importa no hace mucho a la charla y hace unos meses nos planteamos queremos tener un sistema automático de incentivos que hacemos entonces es que hablamos con tenemos estos charlas con tenemos de él y kuyt y mining esto es simplemente incentivos es un subsidio a una actividad que nosotros queremos que suceda el nombre del mining es una asociación al concepto de minería en una block sin común cuando hablamos de pagarle a los

mineros para que realicen su actividad es en este caso de dar seguridad de la red y la verdad que como esto es simplemente dar incentivos no hay un montón de espacio para alimentar cosas es todo más o menos parecidos entonces inventar un sistema propio distinto a lo que ya existe no es algo que tenga un rendimiento muy alto vimos que es lo que existía y elegimos tomar el sistema es que de hecho había hecho querer y adaptarlo a nuestras necesidades ya que ha funcionado muy bien funcionaba hace un tiempo entonces es una idea racional de tomarlo como punto de partida ahora el sistema de ellos es hecho en un lenguaje de programación que no es tan utilizado que no es soliti sino que es fiver entonces un mínimo nivel de adaptaciones será requerido a un mínimo nivel de entender

cómo funcionaba y poder modificarlo un poco entonces vamos a tratábamos anciana porque es el mismo camino que fuimos nosotros esto es no va a ser contenido técnico no voy a entrar no voy a mostrar el código fuente ni nada por estilo solamente diagramas de cómo se componen cientos sistemas y cómo se conectan con la nota de color de que los nombres que voy a usar no son los originales las originales van a ver entre paréntesis en parte porque los nombres originales están en inglés y estoy hablando en español y en parte porque los nombres originales algunos pueden llevar a confusión y yo prefiero las mías que es cuando hicimos incentivos e incentivos de que todas las estas plataformas y ni xavier balanza tienen

un concepto común sobre sumar fondos comunes que similar como se ofrece un fondo común de inversión en un banco es algo donde distintos participantes depositan dinero en este caso tokens con el objetivo de tener una renta cómoda a cambio de esta actividad por ejemplo puede haber un fondo que no tiene éter y que tiene die que permite que cualquiera ponga éter hasta quedar es decir como si fuese una casa de cambio éste realiza días de compra ventajas en esta compraventa se cobra una pequeña tarifa que va indirectamente a la gente que depositó eléctrica y que está de fondo y de esta manera esto se puede volver una actividad rentable porque queremos incentivar esto porque si yo creo en fondo conectividad y no

tiene placas o tiene 50 pesos es muy difícil que alguien lo vas a utilizar porque no hay mucho volumen con el cual interactuar si logro que la gente participe entonces ahora tiene un tamaño más interesante puede haber volumen este volumen va a llevar a que se generen tarifas y esto va a ser a que sea rentable y que el sistema sea autosustentable pero cuando arranca esto no está entonces es como una manera de hacer que un sistema puede arrancar que pueda respirar pasó igual que cualquier producto te dices se suscribe te invita a un amigo y tenés un mes gratis para lo prometido es para generar un público inicial y cómo vamos a hacer esto sentidos cómo vamos a pagarles bueno vamos a emitir el toque en propia la plataforma en el caso de karma ellos emiten el toque de revés en el caso de balance no vamos a emitir

el tren bala y de esta manera vamos a premiar a la gente que deposita sus fondos en estos fondos comunes ahora si queremos premiar a la gente que participa de un fondo tenemos que saber quién es esa gente no tenemos que saber qué porcentaje del fondo tienen porque queremos distribuirlo proporcionalmente si alguien tiene el 30 por ciento queremos darle el 30% los incentivos y esto más cambio con el tiempo sea capaz depósito hoy pero me lo llevo mañana entonces mi porcentaje de el fondo cambia con el tiempo esto se empieza a ver un problema más o menos complicado y por eso tenemos medidores de participación que miden la participación en el tiempo de cada usuario en particular en periodo de una semana que

es la unidad de tiempo que toma el sistema entonces responde la pregunta de en esta semana cuál fue la participación promedio de nikon y algo interesante de los mayores es que no hay unos solos sino aquí con el tiempo como estamos todo el tiempo generando unos medidores porque cada fondo en este dato propio medidor y hay fondos nuevos todo el tiempo a veces hay actualizaciones y tenemos pequeñas mejoras que hace que los mayores capaces más fácil de utilizar o sea más económico o lo que fuera ahora que sabemos cuál es la participación de cada usuario en un fondo de velas falta ser bueno pero a este fondo cuánto le toca no si tenemos un presupuesto global de incentivos cuánto le toca este fondo y eso se

determina simplemente con votaciones la gente vota y dice a mí me parece que este fondo tiene que recibir sentimos a mí parece que este otro hay diversos motivos y vamos participando en fondo previamente quieras votar en ese caso un proyecto quiere lanzar un producto que requiere la existencia de fondos para prever liquidez y que puedan comprar siendo ese su token entonces ellos votan para su para este fondo iverson motiva es el punto es que su mente se vota se determinan al final de semana esta es la educación estos son los porcentajes y eso se ejecuta cómo se vota esto sea un poco de tema no hacia los líquidos en la charla pero hay otro subsistema que es el que

da poder de voto alcanza con decir que implica en cierto sentido comprar el token para poder votar en el sistema de que hay que comprarse el revés para poder votar en balances aquí comprar mal pero pueden quedarse con que hay gente que vota y a los propósitos de esto es suficiente entonces ahora tenemos gente que vota con la votación sabemos a cada fondo a cada producto qué porcentaje de la distribución global le corresponde y para cada producto para cada fondo los medidores de participaciones indican único tiene tanto juan tienes tanto y así entonces con todo eso sabemos cómo distribuir y lo que distribuimos son los tokens que se emiten por el emisor de incentivos que cada semana dice ok ahora hay tantos incentivos para distribuir y

esto está predefinido a la cantidad total del presupuesto si lo quieren pensar así destinado incentivo está predefinida decimos bueno esta semana va a hacer 100 mil las buenas siguientes 11 mil capas las siguientes 90.000 de hecho siguiendo cuando haya contado antes d la analogía con la minería siguen un esquema parecido al de mining al jardín perdón de bitcoin donde cada cuatro años se reduce a la mitad una cosa similar entonces tenemos un sistema predefinido de cuánto está la semana un sistema que determina de ese monto cuánto le corresponde a cada fondo y el sistema que dice en cada fondo cuánto le corresponde a cada usuario y ya está no hay más explicaciones esta vez cómo funciona el sistema y eso es todo lo que hace falta saber para entender cómo

funciona y entender con quién nos encontramos nosotros cuando empezamos a ver esto entonces generados este ceramista bonito que hice podemos ver los distintos componentes el poder de voto arriba que vota sobre la emisión del sistema de votación el sistema votación que de vuelta determina los porcentajes los medidores que miden la década como los de cada fondo y el emisor que emite para cada el medidor y ésta entonces afrontamos es este un buen diseño es esto una buena manera de encarar el problema y una pregunta bien es confrontar es excepto un diseño robusto y lo voy a ir por robusto es si el sistema funciona bien no por definición funciona bien pero si

funciona mal qué es lo que pasa y en particular algo que vamos poder lograr que suceda es que cada uno de estos componentes del sistema de voto de los mediadores etcétera puedan comportarse de forma correcta incluso si las otras fallan que cada uno pueda asegurar que su propia tarea se ha realizado en forma correcta para bajar esto un poco a tierra y ver más concreto que estamos hablando pensamos en las emisiones cada semana tenemos una cantidad de emisiones de mil cosas y sabemos que eso no se haya superado entonces podríamos llevar la cuenta semana a semana de ok éstas van a ser en 100 mil la siguiente 100 mil la siguiente 90 y así sabemos cuántas semanas pasaron y sabemos cuánto emitimos diferente a un período de emisión de nuevos incentivos decimos nunca se puede

superar el máximo total de lo que está disponible hasta ahora si estamos la tercera semana nunca puede haber más de 290 por el motivo que fuera entonces con esta validación simple si bien no sabemos a dónde están siendo los incentivos o no sabemos éste incluso se están haciendo al fondo a los otros correctos pero sí sabemos que no estamos superando el esquema inicial que era nuestro objetivo entonces esto tenemos ahora una mejora sustancial y esto lo podemos extender a otras partes podemos hacer por ejemplo que el sistema de votos también sea robusto entonces si en la semana 3 se emitió 90.000 y correspondía 17% total entonces no puede tener más de tanto y así se empieza a ver un poco más complicado pero podemos tratar de cosas

y de hecho el sistema de misiones necesitan una que funciona exactamente así verifica que nunca se supere la misión máxima pero como se emite y ahora podemos hacer foco en esta parte del diagrama donde la interacción entre el emisor y los distintos medidores de participación es lo que uno hace cuando va a el sitio de carlo cualquier otro sistema de liquid mining y dice quiero mis incentivos y toca el voto animando la transacción es está comunicándose con el visor de incentivos diciéndole ahora lo cínico quiero que lo que responde por mi fondo y el sistema dice bueno haber medido cuánto electo pánico y el mejor dice haber nico tiene el 30 por ciento del fondo a este fondo le corresponde el 17 de las

misiones y esta semana emitimos 95 mil así que 415 mil en 400 pánicos pero este es el medidor que hizo toda la cuenta que pasa sin mayor falla que paso es el mejor se confunde por el motivo que sea y no reporta el valor correcto el emisor emitirá entonces no tenemos esto que estamos hablando de robustez haga eso igual tiene mitigaciones que funciona así y listo por ejemplo en los millones se pueden hacer desactivación mejor por el motivo que sea decimos está funcionando mal o un problema que nos fue que se desactiva y a partir de ahí no emite más y ya está y además no cualquier emisor puede funcionar sino que tiene que haber sido registrado

previamente en el sistema entonces de vuelta tenemos ciertas garantías de cómo funcionen emisoras pero el hecho de que los medidores se pueden desactivar es una encendida propia del medidor en medios dice eso me desactiva a mí mismo no es que alguien las activa desde afuera entonces un medidor puede simplemente no ser factible no hay ninguna el requisito de que tenga que desactivar que tenga que poder ceros activa les capas no tiene la funciona y una vez que está registrado no se puede registrar el sistema no permite el registro hay motivos válidos para esto imagínense que si tienes un sistema de votación y votante sobre un medio después no existe más hay un programa que hago con esos votos etcétera entonces por simplicidad no se pueden

registrar pero si tenemos confianza en los medidores y no podemos de registrarlos y potencialmente no podemos activarlos en principio es posible registrar un mejor incorrecto o malicioso lo que no puede ser activado ignores dos votos ignores la medición de participación ignora todo al día cuántas se puede emitir global en el sistema quiero todo para mis amigos y las el orgánico que logró que esto suceda no no lo podemos activar no ya podemos de registrar el emisor no tú a ignorarlos nadie más cualquier tocas no se puede revocar el permiso de emisión tenemos todas las emisiones para siempre de todo que va a lanzar lo que sea para

siempre no se puede pagar estos malos es una propiedad estable del sistema y tenemos una situación de falla de seguridad crítica de la cual no hay un mecanismo de recuperación entonces bueno ok nada más esto no nos registremos un medidor falso es tan simple como eso pero el problema es que los fondos se crean muy frecuentemente todo el tiempo hay productos nuevos todo el tiempo tenemos formas nuevos con sus mejores nuevos porque queremos incentivarlos para que crezca el fondo de hecho en que esto pasa más o menos 23 meses por semana cada tres días tenemos un solo nuevo consumidor entonces no podemos pedir a cada tres días hacer una acción que potencialmente rompe el

sistema para siempre es demasiado no podemos tener cuidado todo el tiempo entonces qué hacemos con este sistema cuando funciona empezamos de vuelta o qué bueno no este es un buen ejemplo de cómo en general si vos tenés algo que tiene problemas que tiene un núcleo inseguro que tiene cierta parte que hay que tener cuidado en general es posible por fuera del sistema agregar validaciones que impidan que cometas errores no manteniendo el mismo sistema original lo cual es bueno porque nosotras no queríamos cambiar lo que ya existía por miedo a cometer errores y en particular también es posible generar programas o sistemas automáticos que las acciones

peligrosas las realizan de manera tal que nunca cometen el error porque no son humanos no comparten siempre las cosas de esa manera si siempre tienen cuidado no siempre hacen lo que fueron programados para zonas entonces cuando yo digo que agregaron medidores peligrosos en relieve es correcto que agregaron nuevos mejores peligrosos pero no nuevo y ahora de hecho lo hacen todo el tiempo a lo hacen múltiples veces por semanas hace años y nunca un problema es una acción que hace trivial el impacto que tiene un nuevo fondo y no median el sistema no lógica ningún problema lo peligroso es agregar un medidor que es distinto a los anteriores un medidor que tiene un comportamiento potencialmente diferente por ejemplo una actualización o por ejemplo o hach acá donde tenemos el problema entonces es importante si

logramos separar estas dos fracciones podemos decir donde queremos tener cuidado y donde no esté no importa porque sabemos que esto funciona bien sabemos que la mayoría funciona en bienes y resulta que este problema particular es algo que es resoluble con un patrón de diseño bastante viejo incluso en ingeniería de software que es el concepto de fábricas de contratos una fábrica para la fábrica de programas una fábrica para bajo de contratos en este caso es un contrato que fabrica crea otros contratos y así como una fábrica de autos hace autos que son todos iguales pero qué pasó no es verde no se azul una fábrica de medidores hace medidores que son todos iguales pero algunos para un fondo otras pared de

fondo y así importante es que podemos saber si un señor proviene de la fábrica si este mineros fabrican esta fábrica y podemos saber entonces si la fábrica hace millones buenos si una fábrica es buena y un medidor de una fábrica ese medidor es bueno entonces y magíster prom está resuelta baja solamente registramos y dolores que provengan de fábrica son buenas pero de vuelta esto lo hacemos cada tres días nos podemos confundir y no solo nos podemos confundir alguien puede intentar que nos confundamos alguien puede decir que fíjate este que está en la fábrica fíjate que la fábrica está allá está todo bien y capaz nos muestra información falsa y nosotros cometemos un error entonces como hacemos esto a un

robusto no hacemos nosotros tenemos un componente un contrato que registra en los medidores que es el único que tiene el permiso en todo el sistema para registrar nuevos medidores este registro de medidores va a verificar que provenga de una fábrica válida entonces al hacer esto es imposible por definición que el medio sea malo porque viene una fábrica buena cuál es una fábrica buena bueno esto es justamente el problema que queremos resolver agregar unas fábricas medidores que potencialmente fabrican medidores que son malos que tienen un halo que tiene un error esa es la acción peligrosa entonces con este componente ya estamos en problemas podemos agregar mejores todo el tiempo nunca van a tener

lugar nunca se van a rodar todas las invenciones porque son de la fábrica buena al momento de crear una fábrica nueva es que queremos tener cuidado y ver que esto produzca existe este medidor es buenos y como los vemos aún más justo vamos tener retardos porque que impide que a mí alguien me engañe y me haga por error agregar una fábrica incorrecta nada que impide que no muestre una versión falsa del sitio donde eso creo que estoy haciendo lo correcto perdón pero en realidad incorrecto si tenemos retardos esto es para hacer una acción tiene que pasar un cierto tiempo soto denunciar públicamente voy a hacer esta acción voy a agregar esta

fábrica en medidores y hasta dentro de dos semanas no puede suceder pero en esta base manás cual se puede cancelar la acción no no hace falta que se ejecuta entonces cuando sodio verá una nueva fábrica hay dos semanas para que cualquier persona en todo el mundo verifique si está haciendo y se está haciendo bien hecho si la fábrica es correcta si no estamos siendo víctimas de un hack detectarlo decir si esto es un problema fíjense esto que encontré hay que cancelar esto ahora mismo porque esto nos vaya una situación peligrosa y es imposible no tener tramos imposibles no generar una ventana de auditabilidad obviamente acá para nadie la horita pero eso es un problema humano pero podemos garantizar técnicamente que va a existir la posibilidad de verificar el sistema qué pasa si uno solo comete un error en

áfrica incorrecta lo digamos que pasa si se hacen pasar por mejías en mi defensa agrega esto que está todo bien no pasa nada porque no es inmediato siempre hay dos semanas y siempre se puede verificar aún más robusto se dice que el registrador de medidores es el único que puede registrar medidores es el único con ese permiso bueno hagamos que nadie más pueda tener ese previsor hagamos que darle ese permiso a alguien también tengo un retardo que si queremos crear un nuevo registrar los medidores que tenga este permiso tan peligroso tenga que pasar un mes porque porque estas actividades no son urgentes sacar una actualización de un medidor cambiar el registrador todo eso está todo en tiempo estándar los capas lo hacemos cada seis meses cada un

año que podemos esperar un poco más entonces esta ventana de tiempo nos da la capacidad de auditar ver qué es lo que está sucediendo asegurarnos que no estaba cometiendo un error y esto llevamos con un sistema donde solamente el registro puede registrar cambiarlos lleva tiempo agrega tiempo entonces los tiempos podemos verificar que está todo siendo bien y no hay ningún camino inmediata ningún camino que tarden menos de un mes o dos semanas que nos lleve a la situación catastrófica y siempre si encontramos un error tenemos tiempo para pararlo para arreglarlo y continuar qué es un poco a lo que vamos para rendir un poco todo esto parte de más de un sistema que se veía muy coherente que tiene un diseño que parece bastante

claro y directo pero hay detalles pequeños diseños como no podemos registrar medidores como la desactivación del medio está dentro del propio medidor entonces qué pasa está malicioso que llevan a que potencialmente tengamos a la seguridad muy grandes aún así es posible por fuera mejorarlo entonces capaces cometimos el error pero muchas veces no pasó nada podemos agregar seguridad después la seguridad no es una cosa binaria sino que podemos con el paso del tiempo ir introduciendo nuevas medidas que lo hacen más y más robustos especialmente si logramos separar las partes peligrosas del funcionamiento de las partes triviales que se hacen todos los de ellos y por último este concepto de retardos como

una herramienta de mitigación a todo lo que es acciones peligrosas que pueden ser víctimas de phishing de víctimas de queja que en el dns como de hecho le pasó a que el base de dos días que foto de un lío de entradas de la página que era un sitio falso entonces todo eso de las puede dar información falsa que hace que tomamos decisiones incorrectas está todo mitigado por que todo internet va a poder ver lo que está pasando y tener unos minutos sino días o semanas para actuar decir eso está mal para vos y con todo esto juntos ahora sí podemos descansar y dormir tranquilo sabiendo que nada ahora están jaqueando muchas gracias tienen si quieren un cuadro con el link

a la presentación por si lo quieren subir después yo soy nicolás de vuelta a españa no estaba nervioso iba a estar también está el link al repositorio si quieren ver el código dicho es ver como estrato está implementado en el mundo real y eso es todo no sé si hay preguntas las preguntas no los veo muy bien pero creo que no así que me voy sí [Música]