No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Curso de Introducci贸n a Solidity

Curso de Introducci贸n a Solidity

Sebasti谩n Leonardo Perez

Sebasti谩n Leonardo Perez

Manejo de Eventos con Solidity

8/21
Recursos

Aportes 13

Preguntas 3

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Eventos

Los eventos son un tipo de dato que sirve para emitir avisos de que ocurri贸 alguna acci贸n en particular.

Puede ser utilizado por clientes para escuchar cambios importantes, y tambi茅n pueden utilizarse para indexar informaci贸n.

Protocolos como TheGraph utilizan indexaci贸n de eventos para agregaci贸n de informaci贸n

OJO!
Los eventos consumen GAS

contract Eventos {
    
    uint[] public numeros;
    string public resultado;
    
    event NotificacionDeCondicion(bool condicion);
    
    constructor(bool condicion) {
        if (condicion) {
            resultado = "Condicion True";
        }
        else {
            resultado = "Condicion False";
        }
        
        emit NotificacionDeCondicion(condicion);
        
        for (uint iterador = 0; iterador < 10; iterador++) {
            numeros.push(iterador);
        }
    }
    ```

Eventos

Permite conectar lo que pasa dentro de la Blockchain con el exterior porque a tr谩ves de un protocolo otras aplicaciones se pueden suscribir a ellos y escuchar todo lo que est谩 pasando en el Smart Contract.

Se usan para:

  • Registrar cambios que se hicieron
  • Feedback (Retroalimentaci贸n)

Adicion茅 estas dos l铆neas de c贸digo para ver en los logs el array completo despu茅s del FOR.

event NotificacionDeNumeros(uint[] numeros);  

emit NotificacionDeNumeros(numeros);

Es importante comentar que en la declaraci贸n del evento, el par谩metro se puede llamar como queramos, es decir, no es necesario que ese nombre coincida con lo que vamos a emitir salvo en el tipo.

Esto es, lo pudimos declarar como:

event NotificacionDeCondicion( bool nombreCualquiera );

Y ese 鈥渘ombreCualquiera鈥 es el que vamos a ver en el log como argumento.

Cre铆 importante comentarlo para evitar confusiones con los nombres.

RESUMEN CLASE 8:
EVENTOS

  • Un evento es una acci贸n que ocurre en el contrato la cual queremos que sea notificada fuera del mismo.

  • Los eventos no tienen una funci贸n en especial dentro de los contratos.
    Su objetivo es que sean integrados a componentes externos para poder ejecutar acciones externas como enviar una alerta a un usuario.

  • Debemos considerar que las llamadas a los eventos van a consumir gas y por lo tanto tienen un costo asociado. Se recomienda utilizarlos solo cuando sean necesarios.

REMIX:

Eventos.sol

// SPDX-License-Identifier: GLP-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Eventos {

    uint[] public numeros;
    string public resultado;

    event NotificacionDeCondicion(bool condicion);

    constructor(bool condicion) {
        if (condicion) {
            resultado = "Condicion True";
        }
        else {
            resultado = "Condicion False";
        }

        emit NotificacionDeCondicion(condicion);

        for (uint iterador = 0; iterador < 10; iterador++) {
            numeros.push(iterador);
        }
    } 

}

Vamos bien, siempre es importante conocer las bases del lenguaje.

Excelente comienzo para conocer lo m谩s b谩sico de Solidity! El profesor sabe impartir las clases con gran facilidad

Porque no me siento un experto hahaha siempre dicen eso cuando terminas un modulo y yo lo que quiero es volver a ver las clases otra vez porque un experto no me siento

Analizando esto, es muy parecido al concepto de corrutina, peeeero, sin la espera de respuesta que conlleva esta. :thin

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract Eventos {

uint[] public numeros;
string public resultado;

event NotificacionDeCondicion(bool condicion);
// vamos a notificar que condicion entro por el constructor -> recibimos un parametro del tipo boleano y debemos emitir el evento con emit!

constructor(bool condicion) {
    if (condicion) {
        resultado = "Condicion True";
    }
    else {
        resultado = "Condicion False";
    }
    
    emit NotificacionDeCondicion(condicion);
    // para llamar al evento con "emit" en este punto del codigo!
    // y le damos el Valor que queremos que quede registrado en este punto -> en este caso la condicion
    
    for (uint iterador = 0; iterador < 10; iterador++) {
        numeros.push(iterador);
    }
}

}

// SPDX-License-Identifier: GLP-3.0

pragma solidity >= 0.7.0 < 0.9.0;

contract EstructuraDeControl {
    uint[] public numeros;
    string public resultado;
    event NotificacionDeCondicion(bool condicion);

    constructor(bool condicion) {
        if(condicion){
            resultado = "Condicion True";
        }
        else {
            resultado = "Condicion False";
        }

        emit NotificacionDeCondicion(condicion);
        
        for (uint iterador =0; iterador < 100; iterador++){
            numeros.push(iterador);
        }

    }
}