No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
6 Hrs
33 Min
18 Seg
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?

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 “nombreCualquiera” 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);
        }

    }
}