Smart Contracts Lens Protocol - DeFi LATAM Meetup #22
DeFi LATAM Meetup #22 (LensDay) · 57:41
Alan explains Lens Hub architecture and builds two Solidity modules: a paid-follow module that opens a Mean Finance dollar-cost-averaging position, and an anti-spam comment module using deposits and reputation. The workshop covers initialization, access checks, token transfers, withdrawal logic and checks-effects-interactions.
Speakers
Topics
From DeFi LATAM Meetup #22 (LensDay).
Transcript
[Música] bueno soy Alan desarrollador de lens protocol del lado de los Smart contracts Así que primero disculpas para los que pidieron ver integración con la Apple hoy vamos a ver contratos Porque es lo que hago yo quién de acá programa ya programado programa en general ok La idea es mostrarles un poco la arquitectura que tiene lens entender un poco por qué tienes
arquitectura y rápidamente pasar a desarrollar dos contratos que son módulos uno es un reference móvil y el otro es un folio este bueno estos son los contratos principales que están involucrados en la arquitectura de lens en toda la parte de acá de arriba que está englobada es todo parte del Hub que es el contrato principal que tienen la colección de nfts de los perfiles toda la información asociada al
perfil como que fuera un móvil está usando y tiene guardadas las publicaciones toda esta información como supercorp está en el lens es un Proxy lo que significa es que se puede actualizar ahora en un par de meses vamos a lanzar lens con un montón de filtros nuevas y a eso Gracias a que es actualizable y en algún momento seguramente este tipo de actualización sea a través de gobernanza y acá vemos que puse tres librerías principales Que bueno lo que tiene es tenemos la de profile token Yuri que es básicamente
genera la imagen del profe nft entonces decidió hacer todo unchain o sea está agendado on Chain como lo hace también por ejemplo para evitar que pueda que o sea para evitar que el si nosotros permitíamos que se genere of chains lo estamos como centralizando y en teoría Alguien podría de algún modo poner que tiene el hilo más dos lenguas cuando en realidad no lo no lo tiene y venderlo por muchas muchos tokens y esta fargente entonces por eso es que se decidió que toda la imagen con la
animación y todo este generando un Jane después tenemos la librería de interacción logic que tiene toda la lógica de para hacer el follow interesante porque el lenscap funciona con una Factory o sea lo que hace es cuando vos coleccionas por primera vez una publicación lo que hace es hace un diploy de la colección de los nfts de esa publicación y alucinarse con el follow Cuando vos das follow por primera vez a un perfiles el primer follower el lenscap lo que
está haciendo haciendo un diploy de la colección de nes de los follow voy a meter tan a fondo sobre Qué es un bitcoin Proxy y el patrón de clone pero si quieren al final si tienen consultas lo podemos ver que tiene la lógica para grado de perfil para hacer un post un convento un error bueno y después como contratos un poco más periféricos que están vinculados al por el hecho de que por ejemplo el follow module cada perfil tiene seteado un solo móvil Entonces de esa forma están Como vinculados cada publicación
tiene un colet móvil y un referéndum con lo cual son contratos que están ahí como flotando como satélites del lenscap que bueno es que se baistean y se empiezan a usar como que empiezan a estar vinculados una pregunta para el público Por qué piensan que usamos librerías para el LED generalmente la gente usaría librerías para evitar reutilizar cosas repetir código no puede poder como reutilizar y algo por el estilo no es el caso los contratos en blockching en polígono
en la mayoría no recuerdo En qué Ford se hizo pero tiene un límite de 24.000 kilobytes y gigante con lo cual si toda esta lógica tendría que estar en el mismo contrato lo supera por un montón y el uso de librerías nos permitió centralizar toda esta lógica en un mismo contrato sin que esté todo el código ahí si alguien quiere Investigar un poco más sobre esto sí no estoy seguro usas librerías o no porque vos podés hacer esto con contratos O sea que el escap sea un contrato y
el International logic sea un contrato en Sí pero el problema que tiene eso es que tendrías que todo el tiempo pasarle toda la información del storage al contrato nuevo el hecho de que vos uses librerías permite hacer una llamada que se llama tele Cold que es una forma especial de llamarlo se puede hacer También con contratos en la que todo el contexto de storage Y de quién es el que hizo la llamada todo como todo el contexto de la transacción se mantiene como el contexto original Entonces es como que es literalmente con
el mismo contrato funciona como si fuera una extensión del mismo contrato Aunque físicamente esté distribuido en distintos archivos y tienen distintas acá les dejo un QR si quieren ir a ver las actualmente tenemos tres James o sea un diploma que es el oficial El que está en polígono después tenemos el de testnet que está en mumbai y hay otro de tesla El que le llamamos sandbox y la razón es porque hoy por más que nada por cuestiones legales y de reputación de los primeros momentos del
protocolo no cualquiera puede venir y meter un módulo nuevo para usarlo porque podrían como tener exploits y podría como terminar perjudicando al protocolo y como hoy no tiene gobernanza descentralizada porque estamos en beta o Alfa hay que hacer todo un proceso Para estar seguros de que lo que sea no tiene ningún problema o sea hay que auditarlo y demás pero o sea eso pasa tanto en en deploide de polígono como en el de mumbai El que le llamamos testnet como el oficial pero
después en el sandbox lo que tenemos es que el digamos gobernantes que es la address que permite O sea que tiene el poder Paraguay listear módulos en realidad es un contrato que puede llamar cualquiera o sea uno llama ese contrato y ese contrato después llama el led entonces cualquiera puede ir igualistiar su módulo en en la sandbox Así que sea bueno estar Armando algún módulo o después de esta charla se puede armar algún módulo arranque por ahí y después podemos hablar y auditarlo y verde de meterlo en test y después en en bueno Y pues Estos son pequeños ejemplo
de flujo como a grandes rasgos para que tengan una idea de cómo de cómo funciona es en este caso es el reference pero es muy similar con colette Mobile y con follow motion cuando uno va a hacer un post o un comentario una tiene que elegir de antemano que college y qué referencias va a usar esta llamada se hace al lens Hub lo que tiene el lensa es que tiene la razón por la cual metimos toda la lógica en el lens Hub
es porque ayudan mucho o sea es mejor en a nivel de reducir llamadas o sea reduce mucho el costo y es mucho más fácil tener un cliente que indexe porque todos los eventos tanto de follow de College de creación de perfil de lo que sea todos los eventos importantes se emiten en este mismo contrato Entonces eso permite que a nuestro por ejemplo a nuestro equipo que que hizo la Api O sea la Api indexa todo lens en un par de minutos y los bloques nuevos milisegundos y esas gracias a que tiene
un solo lugar que revisar digamos no tiene que andar como recopilando por todos lados y nos dejó como que la arquitectura estuvo muy pensada sabiendo que era muy importante tener indexadores rápidos para estar como también a la altura de lo que tiene hoy un server webs bueno volviendo a esto La idea es uno porque hace un post elige el referéndum va a ser validaciones por ejemplo que el perfil que está haciendo el post o el comentario porque vos vas a pasar el ID del perfil se va a
fijar se va a fijar que ese ese perfil exista que el que está haciendo la llamada tenga permisos para actuar a través de ese perfil y que los módulos que está eligiendo están ese tipo de validaciones y después va a llamar va a agarrar el móvil que está escribiendo usar y también lo hace también con el móvil y va a inicializarlo esto es porque hay muchos módulos no todos pero muchos requieren a la hora de setearlos como una configuración por ejemplo no sé si si es un módulo en el que tenés que pagar para comentar vas a querer elegir
que toquen Y qué precio el monto y después La idea es que bueno uno crea el post o el comentario y alguien puede por ejemplo venir y hacer un comentario o hacer un mirror de ese post o ese comentario y la lógica es muy similar va primero a pasar por el lens va a ser validaciones como por ejemplo que el perfil que está haciendo el comentario exista que el que está haciendo la llamada tenga los permisos que la publicación que se está diciendo que se está comentando que se está
haciendo mirror también existe y después va a levantar de la del storage la dirección del reference Mode que se eligió para este post y va a ser una llamada de procesos la operación que se esté haciendo y ahí es donde el refresh module tiene como el poder de aceptar o denegar la operación esta obviamente uno puede usar uno que esté implementado vacío y todos los comentarios todos los mirror pasan pero bueno si uno quiere puede empezar a meter restricciones ahí y se puede poner un poco más interesante
entonces Bueno qué vamos a hacer hoy en Socorro estas dos ideas la primera es un reference el orden lo podemos hacer como como quieran capaz que arranco con el con el follow Mode y después voy al reference Pero la idea es un refrán es muy útil que tengas que estaquear tokens para poder comentar después de un tiempo los podés retirar y el autor de el post que vos estás comentando tiene el poder decir este comentario es spam y quedarse con los tokens Esta es una es una idea que estaba basada en un post que hizo
vitalic acerca de cómo se podría evitar spam en emails y el otro es un follow module que es básicamente tienes que pagar para hacer follow pero les quiero mostrar varios vivieron en el formulario ya quiero ver cómo se puede integrar lens con defy o Quiero ver algo de defy esto va a ser súper simple Pero bueno La idea es poder mostrarles como algo de lens puede terminar usando guerra herramientas de defy y esta en este caso hecha en Argentina Así que la idea es eso que uno pague y en ese
instante se inicia una posición de dsa en mini finance alguien no sabe que es desde es una estrategia en la que vos tenés un toque en hay un token de querés pasar de a a b y en vez de comprar todo de una lo que haces es haces varias compras con mismo monto y misma frecuencia entonces como que ellas en vez de comprar 12 mil dólares de una voy a hacer mil dólares cada mes durante todo el año y estás bastante probado que es la mejor estrategia para no comer De
ninguna como a fin de cuentas terminas comprando siempre precio promedio y te puedes perder alguna bajada linda pero como que no no te comes siempre comprar arriba Entonces bueno así que bueno ahora sí te voy a tener que molestar bien Yo acá hice un poco de trampa y me traje algunas cosas hechas Para no perder tiempo es un Sí sí sí perdón ahí más o menos
ahí se ve bien salen alguien no ve él levante la mano [Música] Ok entonces primero voy a mostrarles un segundo Este es el cabo pueden ver los que les contaba acá Tiene métodos como o sea esta es la interfaz [Música] o alistar el móvil o el instante perfil sellar el foro móvil cambiar la imagen
postear postear con meta transacciones comentar mirror follow todo esto está todo en el en el y después por ejemplo este caso es lo que vamos a hacer es un follow mode y acá podemos ver por ejemplo Cuál es la interfaz que tiene que seguir el fuego móvil para ser válido ya tienen la función de iniciar inicialización que te pide básicamente para qué perfil lo estás inicializando esto es un truco muy interesante que hacemos en todos lados como ven acá también está en el proceso que es como Y es que sea súper
flexible y genérico no sabemos Qué otros parámetros la gente puede llegar a querer usar Entonces todos esos parámetros custom los encapsulamos en este change de bytes y la idea es que lo pasen en codeado en bytes Y vos adentro lo desencodeas y tenés todos los demás parámetros que necesitas Bueno después tenemos process follow que es la función que les contaba que es la que va a terminar llamando el para determinar si la operación se hace o no O para
cobrarle un monto lo que sea que tengas que hacer para procesar ese después tiene un transfer Hook esto en realidad es de dos va a volar cambia no puedo mandar mucho pero esta estaba hecho para que Cuando vos transferís el nft el folloween Steve puedas como hacer un cambio de estado que necesites en tu módulo y después a la función de following para determinar si está siguiendonos así porque podría haber algún módulo que dinámicamente cambia si estás haciendo
entonces Bueno lo que hice acá esto es toda la es la interfaz de solamente me traje la función deposit porque lo único que vamos a hacer es depositar para crear una posición nueva de sa y acá tenemos el móvil y acá tenemos las funciones a implementar el transfer Hook el process y la inicialización acá yo lo que hice fue heredar de este módulo base o sea es como que es un pequeño contrato que tiene ya la lógica
de is following porque Generalmente es lo mismo siempre queremos ver que esté deployado que significa que por lo menos tuvo un follow y después preguntamos el balance del follower si tiene aunque sea un follow Entonces está siguiendo si por algún motivo quisiéramos cambiar esta lógica lo podemos ver realidad y ponemos lo que queramos pero en este caso lo vamos a dejar como Esta bueno en este caso no vamos a hacer nada y bueno vamos a arrancar con la inicialización bien
lo que vamos a hacer acá lo primero que nos tienen que pasar es los dos ya sabemos que para qué perfiles este follow que es el que está acá pero lo que necesitamos es que configuración quiere este perfil para su desea cada vez que lo hacían no O sea es la llamada que tenemos que hacer a mini finance con lo cual la canos van a tener que pasar de que toquen a que toquen hay que pasar que que monto le tenemos que cobrar al follower y el la cantidad de de swaps En cuánto tiempo no o sea esto sería poner los 12 swaps una vez por mes
y ahí tendríamos como el ejemplo que hay y también lo que nos pide lo que nos pide miles o uner que nos viene joya porque esto nos permite crear desde el follow Mode una una una posición que no es para el follo sino para el dueño del perfil que se está siguiendo entonces bueno acá lo que tenemos que hacer primero que todo es agarrar la Data esta y decodificarla en en básicamente en estas llamadas en la
configuración Entonces vamos a arrancar creando una estructura que va a ser y básicamente tenemos que meter todo esto acá necesitamos de que toquen a que toquen el monto y listo Porque después el Owner lo vamos a sacar del perfil y vamos a hacer un mapa que va a ir del perfil entonces esto
vamos a ir de profe Lady vamos a ir a un DC y esto sería el profe y bueno lo que vamos a hacer acá Entonces es vamos a vamos a hacer vamos a meter esta memoria y lo vamos a decodificar les voy a
mostrar como decodificar esto de la Data podemos Avi si cuando no quieren codear usa bien code y en Corea la Data que quiere y para decodificar es lo contrario Entonces esto primero la Data y esperamos todos estos datos acá [Música] después lo que vamos a hacer es vamos a almacenarlo [Música] entonces para este profe Lady guardamos esta configuración y vamos a validar que el monto no sea cero sino no tendría sentido esto como para que sea una idea de los
pasos que más o menos Ahí cuando haces el módulo si el monto es cero vamos a revertir con un error Mali do y después retornamos la misma Data bueno con esto ya estaríamos guardando que para este perfil cada vez que lo sigan tiene que el que sigue tiene que Iniciar una posición de Sa con esta configuración
para el dueño de este perfil ahora vamos a hacer la otra parte que es la parte de procesar el folio que es cuando literalmente vamos a crear la posición entonces lo que hacemos es hasta el follower el perfil y Data Data no hay no tenemos nada Entonces la llamada que vamos a tener que hacer es esto Ah nos faltó algo muy importante que es vamos a pasarla acá en el constructor
esto no sé si sabes esto pero las constantes uno puede hacer y acá poner literalmente una constante o puede hacerlo y la diferencia es a fin de cuentas se va a ver lo mismo pero que sea inmutable nos permite inicializarlo en el constructor con lo cual podemos pasarlo por parámetro Y es más interesante bien
y bueno ahora sí Ahora venimos acá esto nos va a devolver un pocillo [Música] estas son son permisos que hay que mandar en caso de que quieras que otra cuenta o sea otra address pueda agregar o sacar cosas de tu posición Pero bueno vamos a usar Así que esto lo vamos a mandar vacío
y ahora tendríamos que levantarnos todo esto del storage entonces para este perfil nos agarramos la configuración [Música] el lawer dijimos que le íbamos a agarrar de de vamos a le vamos a hacer vamos a
llamar al vamos a vamos a tratar el como si fuera una o sea lo es pero vamos a usar la interfaz de y así de 721 que es el estándar de nft que usamos para los perfiles y vamos a pedir el dueño de este perfil y este es básicamente es el a quién le estamos creando la posición a quien se la estamos como regalando y lo que nos falta acá es básicamente es traernos sí tenemos que básicamente
transferir los tokens del follower al contrato este para que este contrato pueda crear la posición Entonces esto sería [Música] y acá vamos a agarrar estamos al resto Ok esto porque él por qué lo meto acá en vez de hacer como estoy haciendo acá que lo leo directamente del storage esto es
porque estos accesos son accesos a storage que cuesta un montón de gas pero cuando yo acá lo estoy copiando a mi memoria entonces después lo esta misma variable la puedo usar varias veces y es mucho más barato como que hago una sola leída de esto entonces por eso creo estoy como cacheando en memoria primero eso es un transfer from desde el follower al contrato del módulo y el among que está configurado y acaba el y acá sería de buena persona
poner un evento [Música] posiblemente igual esto lo tiene ya lo tiene lo tiene mini finance pero está bueno que lo tire también el módulo para poder traquear lo más fácil de que vino de este módulo y tener la posición entonces pongamos por ejemplo position ID y esto hacemos indexados este hace más más fácil después consultar eventos basados en estos
parámetros básicamente Entonces ahora venimos acá y emitimos esto y bueno Ahí estamos esto ya está listo está listo para ir a sandbox Bueno vamos a detallar ahora Para no perder tiempo nos queda poco tiempo quiero hacer el otro módulo Pero bueno ya vieron inglés [Música] Me faltó hacer esto es súper rápido en 20 minutos
se puede hacer algo como súper poderoso y dice ya tenemos integrado defy con lentes este una pregunta de esto antes que saltemos al se entendió o no tenía un bueno y lo otro que tenía es Cómo Dale me lo subo todo Este era el post que hizo vitalic la idea no es leerlo ahora pero si quieren sacarle foto y después ir a
leerlo bien pero explica más o menos lo que dije yo de Solo que ha aplicado a spam en emails entonces la idea de este módulo es todos los usuarios arrancan con reputación cero Mientras más alta tu reputación es peor Y tu reposito Tu reputación está limpia y es cero tenés que estaquear 0.10 tokens para poder comentar el autor de la publicación que está haciendo comentada tiene Pues acá 24 horas como un ejemplo capaz lo dejamos como que lo pueda elegir
el que hace el diploide del módulo pero tiene un tiempo para marcar el comentario como spam quedándose con el stake y perjudicando la reputación del que está comentando una pregunta que puede surgir es Che pero en eso no incentiva como que yo vaya y marque como espanto de los comentarios y me quedé con la plata sí no O sea la realidad es que puedes hacerlo por un tiempo pero después la gente va a saber que vos marcas todo como spam y lo que vas a terminar haciendo es como matando el engagement con tu cuenta entonces el punto de vista
teoría de juegos no no rinde mucho lo que sí puede pasar es que se genera un poco como burbujas por ejemplo no sé en la política vamos a Estados Unidos para no hablar de política de nuestro país un demócrata de repente comentando en un republicano o al revés capaz se marcan como spam Y eso termina capaz generando que No nadie comente como en ideas contrarias como unas burbujas bastante feas pero pero bueno Vamos adelante igual con el experimento El Bueno El State al comentar aumenta exponencialmente
inversamente a tu reputación o sea el que viene va a ser capaz en vez de 0.10 va a ser un token después van a ser 10 después van a ser 100 mil y entonces si es un Bot muy rápidamente va a llegar a que para hacer un comentario tiene que poner en riesgo un montón de capital y va a estar de incentivado bueno y el comentario no es marcado como es spam por el autor de la publicación comentado vos podés ir retirando y está todo bien Se puede hacer después más complejo como que puedas reutilizar el capital capaz que si alguien te marcó injustamente después de un tiempo haciendo algo la reputación mejore Pero
bueno queda un poco fuera del scope Pero bueno vamos con esto tenemos poco tiempo tenemos 15 minutos creo así que le voy a hacer un poco más rápido [Música] lo acabemos de vuelta lo mismo tenemos inicialización para procesar el comentario y para empezar el mirror en este caso los mirror vamos a permitir todos porque simplemente nos está como trayendo más audiencia no Alguien podría spamear con muchas cuentas haciendo
muchos mirror pero en teoría te sirve no no debería molestarte y bueno vamos a arrancar entonces vamos a definir un token para este para este módulo o sea va a ser el mismo módulo para todo o sea el mismo token para todos no lo dejamos elegir porque sería Injusto como y sería complicado también de manejar el monto Así que va a ser igual para todos Posiblemente sea algo por el estilo y vamos acá a definir también el
el básico que debería estar en función de los de estar en función de los decimales del token eso pero yo es difícil tiene seis decimales después hay otros que tienen 18 otros tienen 16 así que vamos a hacerlo genéricos vamos a sacar los decimales y vamos a hacer sí que lo es este [Música] 10 creo que esto da 0.1
esto Debería ser 0.1 en los decimales del token que sea si los decimales son 6 Esto va a ser 5 y nos va a terminar 10 elevado a la quinta y va a ser cero punto uno y creo que con eso estamos por acá inicialización no hay que hacer nada para que si se nos Ocurre algo lo metemos después pero creo que no hace falta hacer nada así que retornamos bytes vacíos y bueno ahora sí se pone más interesante
vamos a tener que guardar el Steak y la reputación de cada ser lo primero que vamos a necesitar un mapa que va a ir de perfil a reputación acuérdense que [Música] más cerca de cero es mejor la más limpio más buena gente vamos a hacer una función que nos dice
Cuál es el monto que tiene que saquear en el próximo comentario Entonces le pasamos un profe y vamos a devolver el por 10 elevado a la reputación Disculpen saludo de estas cuentas está
mal puede que esté llevándome yo creo que está bien Esto Debería ser que esto al principio es cero con lo cual 10 a la cero es uno y te queda el después cuando esto es uno te queda esto por 10 después te queda por 100 por 1000 tiene el efecto exponencial que queremos y ahora vamos a tener que tener vamos a tener que tener como la estructura del stake que va a tener vamos a hacer que tenga el balance
y elston de cuando se hizo el stake porque con eso después tenemos que permitir al que hizo Al que está haciendo el comentario retirar el monto cuando pasó ese tiempo vamos a definir el tiempo acá como la constante Está bueno que tiene solid y tiene esto puedes poner days y te lo convierte esto es por 60 por 60 Ok y bueno
Entonces cuando se hace el comentario lo que vamos a hacer es vamos a agarrar el vamos a agarrar vamos a llamar Allen para traernos el dueño de este perfil vamos a [Música] hacer que se transfiera desde este desde esta persona
a este a este contrato y el monto lo tenemos que agarrar de la función esta voy a obviamente siempre que se hace esto si no tiene suficiente balance o lo que sea esto falla y todo el comentario fallo o sea solo se va a poder hacer si realmente tiene los tokens y los depósitos buen detalle buena consulta acá como ven
está este modificador only Hub que está en este básicamente lo que hace es el que está llamando esto el está llamando a la función tiene que ser el Hub entonces vos vas a llamar a la función de comentar en el Hub el Hub va a estar validando todo que los perfiles existen que la publicación existe verdad y después va a llamar al módulo y con esto restringimos que solamente esto puede ser llamado desde el Hub entonces como que ya sabemos que está todo validado pegado previamente Entonces cuando llega la ejecución acá sabemos que está todo todo bien
vamos a tener que necesitar Igualmente un pequeño contador de publicaciones Esto va a ir de publicación o Esto va a ser Va a estar medio feo ahora explico esto es de publicación a perfil a [Música] stake o nos falta una más esto es Rafael lady publication esto esto identifica una publicación
pues ahí vamos por el que está comentando y vamos a necesitar una cosa más que es esto es la cantidad de comentarios que ya que viene haciendo en este en este en una cierta publicación y acá vamos a tener que también agregar eso Y acá es como para ese comentario nos da cuando está aquí hoy y cuándo
nos falta uno Y esto es [Música] publication Y esto es ok entonces Fíjate todo cada vez que acá cada vez que hace un comentario vamos a tener que
incrementar la cantidad incrementamos antes para así asignarlo acá esto es como Bueno si ya había hecho tres comentarios Esto va a ser como cuarto en la misma publicación lo que vamos a hacer después es vamos a hay un patrón si lo conocen pero se llaman interactions por seguridad para evitar como lo que pasó con el ataque del Hack
de dao que se llama rien trans y Attack siempre hay que hacer primero las validaciones después todos los cambios de estado y después las llamadas a otros contratos interacciones en este caso no habría problema igual pero ya que estamos lo mencionó Porque si de lo contrario te puede pasar que si vos haces si cambias estos dos en la interacción puede ser que te vuelvan a llamar la misma función y como no existen los cambios de estado Te termina pasando que no se te pueden sacar dinero que no
tienen que sacar o termina simulando que está aquí más plata de la que realmente estalló algo por el estilo bueno [Música] me perdí bien los descargamos es vamos a primero marcar esto incluso Aunque todavía no hayamos hecho el stake Pero porque queremos por lo que mencionan desde el patrón esto vamos a hacer esto [Música]
y para este comentario en particular y acá vamos a hacer de [Música] acá [Música] atrás Este es el que también y acá Entonces tenemos el State y el Time Stand del bloque actual que es el momento en el cual y después nos agarramos el Owner y nos
traemos el depósito y acá Estaría bueno emitir para que quede limpiada la publicación con el número de comentario un evento de este quiero esto y el [Música]
ahora tengo mal que no me está Auto formateando Pero bueno no importa y acá Venimos Bueno creo que con esto estaría la parte del procesador el comentario y ahora
tenemos que hacer dos funciones más una es un [Música] hidro [Música] y después tenemos que hacer la compilar porque no sé por qué está ahí
[Música] [Música] bien Perfecto Bueno venimos acá Widow entonces acá primero todo tenemos que chequear que el que está llamando esto
el que está llamando esto sea el dueño del perfil entonces [Música] si el que está llamando Esto no es el dueño no es el dueño revertimos voy a crear un perfil me voy a crear un error ahora para ahorrar tiempo después nos tenemos que fijar que el [Música] vamos a tenernos esto
el tiempo tiene que haber pasado el tiempo no entonces más este State time tiene que ser si esto es menor igual al tiempo actual diría que todavía no pasó el tiempo que necesitamos que pase entonces vamos a revertir también y después tengo que fijarnos que el stage que no fue slaseado que no lo no lo retiró antes Entonces vamos a fijarnos
que el balance sos así el balance es cero el rey o fue el hallado y después procedemos a
justos vamos a borrar esto vamos a poner el stake en balance en cero y [Música] procedemos a a devolver el dinero [Música] Esto no es cero porque lo guardé en memoria acá Así que esto tiene todo el balance original Y por último nos queda una sola función y ya terminamos que
pasamos un poco del tiempo tenemos el Slash esto solamente lo debería poder hacer el que está solo lo puede llamar el el autor de la publicación original y básicamente lo que tenemos que hacer es si el dinero todavía está disponible lo ponemos en cero pero en este caso lo mandamos a
a este honor y ahí está bueno y con esto y nos faltará una pequeña pequeña cosita que esto también le debería incrementar la reputación [Música] al perfil así la próxima vez y con esto estamos con esto ahí le sube la reputación Entonces le manda el dinero al dueño de la publicación y
queda marcado con peor reputación Así que la próxima vez acá va a tener que depositar más bueno Nos pasamos con el tiempo Espero que les haya copado que hayan aprendido algo [Aplausos]