¿Qué son los Eventos en Solidity?

Los eventos de Solidity son los mismos que los eventos en cualquier otro lenguaje de programación. Un evento es un miembro heredable del contrato, que almacena los argumentos pasados ​​en los registros de transacciones cuando se emite. Generalmente, los eventos se utilizan para informar a la aplicación que llama sobre el estado actual del contrato, con la ayuda de la función de registro de EVM. Los eventos notifican a las aplicaciones sobre el cambio realizado en los contratos y aplicaciones que se pueden usar para ejecutar la lógica dependiente.

Creando un evento

Los eventos se definen dentro de los contratos como globales y se llaman dentro de sus funciones. Los eventos se declaran utilizando la palabra clave event , seguida de un identificador y la lista de parámetros, y termina con un punto y coma. Los valores de los parámetros se utilizan para registrar la información o para ejecutar la lógica condicional. Su información y valores se guardan como parte de las transacciones dentro del bloque. No hay necesidad de proporcionar variables, solo los tipos de datos son suficientes. Se puede llamar a un evento desde cualquier método usando su nombre y pasando los parámetros requeridos.

event <eventName>(parameters) ;    

javascript

// Solidity program to demonstrate
// creating an event
pragma solidity ^0.4.21;
 
// Creating a contract
contract eventExample {
 
    // Declaring state variables
    uint256 public value = 0;
 
    // Declaring an event
    event Increment(address owner);  
 
    // Defining a function for logging event
    function getValue(uint _a, uint _b) public {
        emit Increment(msg.sender);
        value = _a + _b;
    }
}

Producción: 

Creating an Event

Resultado en la consola: 

Javascript

logs    [
    {
        "from": "0xd9145CCE52D386f254917e481eB44e9943F39138",
        "topic": "0xfc3a67c9f0b5967ae4041ed898b05ec1fa49d2a3c22336247201d71be6f97120",
        "event": "Increment",
        "args": {
            "0": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
            "owner": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4"
        }
    }
]

Índice en eventos: También podemos añadir un índice a nuestro evento. Al agregar los diferentes campos a nuestro evento, podemos agregarles un índice que ayude a acceder a ellos más tarde, pero, por supuesto, ¡va a costar un poco más de gasolina!

IMP: Podemos agregar como máximo 3 índices en un evento. 

Código: 

Solidity

// SPDX-License-Identifier: GPL-3.0
 
pragma solidity >=0.7.0 <0.9.0;
 
 
contract IndexEvents {
 
    event NewTrade(
        uint256 indexed date,
        address from,
        address indexed to,
        uint256 indexed amount
    );
 
    function trade(address to, uint256 amount) external  {
        emit NewTrade(block.timestamp, msg.sender, to,amount);
    }
}

Salida en la consola: agregando la salida en la consola

Javascript

logs    [
    {
        "from": "0xcD6a42782d230D7c13A74ddec5dD140e55499Df9",
        "topic": "0xa6b5ddd331f9dc412a8c258207b1c66f53c1740c72628d9913aafcb6b28d8f73",
        "event": "NewTrade",
        "args": {
            "0": "1655406115",
            "1": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
            "2": "0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2",
            "3": "1234",
            "date": "1655406115",
            "from": "0x5B38Da6a701c568545dCfcB03FcB875f56beddC4",
            "to": "0xAb8483F64d9C6d1EcF9b849Ae677dD3315835cb2",
            "amount": "1234"
        }
    }
]

Publicación traducida automáticamente

Artículo escrito por jeeteshgavande30 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *