14. Eventos

Las blockchains son sistemas aislados del resto de la Internet, en la cual sistemas convencionales y eventos se utilizan para "comunicar al mundo" lo que está sucediendo.

# Declarando el Evento

Tienen una estructura básica y un estándar para que con otros sistemas puedan "hablar todos el mismo idioma" y se reducen a: cuándo, dónde, quién y qué sucedió. Para esto usamos la palabra clave event antes de nombreDelEvento y entre paréntesis sus argumentos obligatorios.

El parámetro indexed permite que otros sistemas apliquen filtros. En el siguiente ejemplo, un sistema que está escuchando estos eventos puede filtrar por fecha, dirección de envío y recepción.

event NuevoTrade(
  //Parámetro indexed ayuda a filtrar eventos en el Front-End.

  uint indexed date,
  address indexed de_donde,
  address indexed para_donde,
  uint cantidad
);

# Emitiendo el Evento

Después de declarar un evento podemos emitirlo dentro de cualquier función a través del parámetro emit nombreDelEvento() y luego pasamos los argumentos que sean necesarios.

function tradeOcurrió(address de_donde, uint _cantidad) external {
  emit NuevoTrade(now, msg.sender, de_donde, _cantidad);
}

# Ejemplo real: Transacción

En el siguiente ejemplo, un evento será emitido conteniendo quién envió, para quién envió y cuánto envió.

event Transfer(address indexed from, address indexed to, uint256 value);
Last Updated: 9/10/2022, 4:27:54