Registrar datos de contratos inteligentes con eventos
En Solidity, los eventos son señales que los contratos inteligentes pueden emitir. Las dapps, o cualquier elemento conectado a la API JSON-RPC de Ethereum, pueden escuchar estos eventos y actuar en consecuencia. Un evento también se puede indexar para que el historial de eventos se pueda buscar más adelante.
Eventos
El evento más común en la blockchain de Ethereum en el momento de escribir este artículo es el evento Transfer que emiten los tokens ERC20 cuando alguien transfiere tokens.
1event Transfer(address indexed from, address indexed to, uint256 value);La firma del evento se declara dentro del código del contrato y se puede emitir con la palabra clave emit. Por ejemplo, el evento de transferencia registra quién envió la transferencia (from), a quién (to) y cuántos tokens se transfirieron (value).
Si volvemos a nuestro contrato inteligente Counter y decidimos registrar cada vez que se cambia el valor. Como este contrato no está destinado a ser desplegado, sino a servir de base para construir otro contrato extendiéndolo, se le llama contrato abstracto. En el caso de nuestro ejemplo de contador, se vería así:
1pragma solidity 0.5.17;23contract Counter {45 event ValueChanged(uint oldValue, uint256 newValue);67 // Variable privada de tipo entero sin signo para mantener el número de cuentas8 uint256 private count = 0;910 // Función que incrementa nuestro contador11 function increment() public {12 count += 1;13 emit ValueChanged(count - 1, count);14 }1516 // Getter para obtener el valor del contador17 function getCount() public view returns (uint256) {18 return count;19 }2021}Mostrar todoTenga en cuenta que:
-
Línea 5: declaramos nuestro evento y lo que contiene: el valor antiguo y el valor nuevo.
-
Línea 13: cuando incrementamos nuestra variable de conteo, emitimos el evento.
Si ahora desplegamos el contrato y llamamos a la función de incremento, veremos que Remix lo mostrará automáticamente si hace clic en la nueva transacción dentro de un array llamado logs.
Los logs son muy útiles para depurar sus contratos inteligentes, pero también son importantes si crea aplicaciones para distintas personas, ya que facilitan el análisis para rastrear y comprender cómo se utiliza su contrato inteligente. Los logs generados por las transacciones se muestran en los exploradores de bloques populares y también puede, por ejemplo, utilizarlos para crear scripts fuera de la cadena para escuchar eventos específicos y emprender acciones cuando ocurran.
Última actualización de la página: 12 de febrero de 2025
