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:
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