¿Qué son los events en Solidity?
Escrito por Alchemy
Los eventos de Solidity son fundamentales para los desarrolladores de smart contracts porque permiten que los smart contracts indexen variables para reconstruir el estado del storage, ayudan a actualizar automáticamente la interfaz de usuario y permiten probar variables específicas. Este artículo profundizará tu comprensión de los eventos de Solidity y te ayudará a profundizar tu conocimiento del lenguaje de programación Solidity.
Primero presentaremos los eventos de Solidity, luego daremos algunas de sus clasificaciones y proporcionaremos ejemplos. Al finalizar este artículo, podrás crear un evento de Solidity para tu próximo proyecto.
¿Qué es un evento en Solidity?
En Solidity, los eventos son señales despachadas que los smart contracts pueden emitir. Cuando llamas a eventos, estos hacen que los argumentos se almacenen en el log de la transacción, que es una estructura de datos especial en la blockchain. Los eventos notifican a usuarios externos, como un sitio web frontend en escucha o una aplicación cliente, que algo ha ocurrido en la blockchain.
¿Cuál es la diferencia entre eventos y funciones en Solidity?
Si bien tanto las funciones como los eventos aceptan argumentos y pueden ser llamados, las funciones modifican directamente los smart contracts, mientras que los eventos tienen el rol de informar a servicios fuera de la blockchain para hacerles saber a los usuarios que algo ha ocurrido.
Las funciones en Solidity permiten a los desarrolladores leer, escribir, modificar y almacenar datos en el smart contract. Puedes pasar argumentos o parámetros a una función. También puedes llamar a una función cuando sea necesario dentro del código.
Los eventos también aceptan argumentos, pero estos se almacenan en el log de la transacción, al cual los smart contracts no tienen acceso. Los datos de los contratos viven en el State trie y los datos de los eventos se almacenan en el Transaction Receipts trie, lo que significa que los contratos no pueden leer datos de eventos.
Al igual que las funciones, los eventos pueden ser llamados. Sin embargo, se utiliza la palabra clave emit para llamar/despachar eventos. Esto permite a los desarrolladores saber cuándo se está llamando a un evento o a una función.
¿Cuál es la relación entre eventos y logs?
La estructura de datos Log de Ethereum almacena los datos emitidos por los eventos.
La Ethereum Virtual Machine (EVM) cuenta con una función de logging que se utiliza para escribir datos, incluidos los eventos de Solidity, en una estructura fuera de los smart contracts.
Los logs y los eventos suelen usarse como sinónimos. Los eventos te permiten "imprimir" información en la estructura de logging de una manera más eficiente en cuanto a gas, ya que la información no se almacena en una variable de storage, lo cual consume más gas. Los eventos, o logs, viven en el Transaction Receipts trie, al cual los smart contracts no tienen acceso.
¿Cómo se indexan los eventos en Solidity?
Los eventos de Solidity son interfaces con la funcionalidad de logging de la EVM. Puedes agregar el atributo indexed a hasta tres parámetros. Estos aparecen entonces en la estructura de topics, no en la parte de datos del log. Cuando los parámetros no tienen el atributo indexed, se codifican en ABI dentro de la parte de datos del log.
Tipos de eventos en Solidity
Existen dos tipos de eventos en Solidity: los indexados y los que no lo son.
Cuando los parámetros no tienen el atributo indexed, se codifican en ABI dentro de la parte de datos del log. Estos parámetros forman el arreglo de bytes del evento. Los datos se codifican según su tipo y pueden decodificarse según un esquema.
Los parámetros indexados, también conocidos como "topics", son los parámetros de eventos que se pueden buscar. Los parámetros indexados te permitirán buscar estos eventos usándolos como filtros. Puedes agregar el atributo indexed a hasta 4 o 3 parámetros, según si los eventos son anónimos o no, respectivamente.
¿Cómo funcionan los eventos en Solidity?
Los eventos de Solidity se declaran, se emiten y se registran.
- Primero, el tipo de evento debe declararse con la palabra clave event en Solidity.
- Luego, el evento debe emitirse con la palabra clave emit.
- Cada vez que algo cambia en la blockchain, tu programa registrará automáticamente ese cambio y disparará el evento.
Nota: Emitir un evento después de declararlo te permite luego "escucharlo" desde tu aplicación usando librerías como Web3.js o Ethers.js.
¿Cómo se declara un evento en Solidity?
La declaración de un evento contiene el nombre del evento y los parámetros que deseas guardar al dispararlo.
Primero, debes declarar un evento en Solidity. Luego, emites el evento con la palabra clave emit.
A continuación se muestra un ejemplo de cómo declarar un evento:
El evento, al dispararse, informará a la aplicación externa que algo ha cambiado en la blockchain.
¿Cómo se emiten los eventos en Solidity?
Una vez definido el evento, puedes dispararlo usando la palabra clave emit. Cuando se emite un evento, los argumentos pasados se almacenan en los logs de la transacción.
La siguiente sintaxis te muestra cómo usar emit en Solidity:
Cómo escuchar eventos en Solidity
Una vez que los eventos se emiten, puedes escucharlos suscribiéndote para capturarlos usando ethers.js. Luego, las apps, o cualquier elemento conectado a una API JSON-RPC de Ethereum, pueden escuchar estos eventos y actuar en consecuencia.
Ejemplo de evento en Solidity
El siguiente código de ejemplo define y emite un evento para transferencias. Este código es aplicable a una aplicación de transferencias de Ethereum, donde el evento se dispara al realizar una transferencia. Se puede agregar código adicional para que el evento, al dispararse, actualice la interfaz de usuario y muestre que se realizó una transferencia.

El siguiente ejemplo, tomado de Solidity by Example, crea un evento con dos parámetros: la dirección del remitente y el mensaje de tipo string. Al dispararse, el evento registra "Hello World" y "Hello EVM".

Sigue aprendiendo sobre Solidity
Este artículo te presenta los eventos de Solidity y te ofrece explicaciones y recursos para tu próximo proyecto. Con los eventos de Solidity, te resultará más fácil crear smart contracts eficientes.
Si eres nuevo en el lenguaje Solidity y quieres construir tu primer smart contract, asegura tu lugar en el curso gratuito de programación en Solidity de 7 semanas de Alchemy University.
Resúmenes relacionados
Solidity3 de diciembre de 2025
Los 6 mejores IDEs de Solidity para desarrolladores (2026)
Explora los mejores IDEs para el desarrollo en Solidity.
Solidity19 de noviembre de 2025
Optimización de gas en Solidity: 12 técnicas para hacer tus smart contracts más económicos y eficientes
¿Quieres escribir mejor código y reducir tus fees de gas?
Solidity13 de noviembre de 2025
12 mejores prácticas de seguridad para smart contracts en Solidity
Protege tus smart contracts con estos consejos y herramientas de seguridad de expertos.

Construye magia blockchain
Alchemy combina los productos y herramientas de desarrollo Web3 más potentes con recursos, comunidad y un soporte legendario.