ETH Kipu
  • Ethereum Developer Pack
  • Módulo 1
    • Intro a Smart Contracts
      • Fundamentos de Blockchain
        • Antecedentes
        • Bitcoin
        • Qué es Blockchain
        • Conceptos Clave en Blockchain
        • Cómo funciona la Blockchain
        • Tipos de Blockchain
        • Modelos de Consenso
      • El nuevo Internet
        • Web 3
        • Elementos Fundamentales
        • Impacto de Ethereum en Diversos Sectores
      • Wallets
        • Componentes de una wallet
        • Tipos de Wallet
        • Códigos mnemónicos
      • Ethereum 101
        • Smart Contracts
        • Cuentas
          • Tipos de cuentas
          • Contenido de cuentas
        • Transacciones
          • Componentes
          • Ciclo de vida
        • Gas
        • Solidity
        • EVM
          • La máquina de estados
          • Opcodes
          • Cómo funciona la EVM
          • Clientes de ejecución
          • DApps
      • Blockchain Explorer
        • Funciones de un blockchain explorer
        • Beneficios de utilizar un blockchain explorer
      • Remix
        • Características de Remix
        • Workspaces o espacios de trabajo
        • Cargar y compilar un contrato
        • Desplegar en la máquina virtual de Remix (Remix VM)
        • Interactuando con funciones
        • Desplegar en una red pública
      • Crea tu primer Smart Contract
  • Módulo 2
    • Fundamentos de Solidity
      • Hello World
      • Tipos de Datos
      • Funciones
      • Variables
        • Ejercicio 1
      • Operadores
        • Ejercicio 2
      • Constructor
        • Ejercicio 3
      • Convenciones de nomenclatura
      • Tipos de almacenamiento para variables
      • Estructuras de Control
        • Ejercicio 4
      • Modificadores
      • Eventos
        • Ejercicio 5
      • Tipos de Referencia
        • Arrays
          • Ejercicio 6
        • Mappings
          • Ejercicio 7
        • Structs
          • Ejercicio 8
      • Address Payable
      • Cómo reciben Ether los contratos y funciones
      • Transferencias de Ether
      • Conceptos Avanzados
        • Codificación ABI
        • Hashing
        • This
        • Herencia
        • Abstract
        • Interface
        • Llamadas entre contratos
        • EVM
        • ABI
        • Bytecode
        • Opcodes
  • Módulo 3
    • Estándares, Librerías y Patrones
      • Buenas Prácticas de Diseño
      • Patrones de Diseño
      • EIP y ERC
      • ERC-20
      • ERC-721
      • Open Zeppelin
      • Crea un Token ERC-20
      • Almacenamiento Descentralizado: IPFS
      • Crea un Token ERC-721
      • DeFi
  • Módulo 4
    • Toolkit para desarrollo en Ethereum
      • Requisitos para el módulo 4
        • Terminal
        • Git y Github
        • Node.js y npm
        • Visual Studio Code para Solidity
      • Toolkit
        • JSON-RPC
        • Ethers.js
          • Ejercicio
        • Hardhat
          • Despliegue de un contrato en Hardhat
          • Despliegue de un contrato en una red pública
        • Scaffold-ETH
          • Características
          • Cómo instalar Scaffold-ETH
  • Módulo 5
    • Seguridad, Pruebas y Auditoría
      • Pruebas
        • Importancia de realizar pruebas
        • Métodos para probar contratos inteligentes
          • Pruebas automatizadas
          • Pruebas manuales
        • Conceptos importantes en testing
        • Herramientas para testing
        • Testing con Hardhat
        • Recursos adicionales
      • Seguridad
        • Una mentalidad distinta de diseño
        • Principales vulnerabilidades en smart contracts
          • Reentrancy attack (ataque de reentrada)
          • Replay attack (ataque de repetición)
          • Price Oracle Manipulation (Manipulación de Oráculos de Precios)
          • Missing Access Control (Pérdida de Control de Acceso)
          • Reward Manipulation (Manipulación de Recompensas)
          • Failure to Initialize (Falla al Inicializar)
          • Front-running
          • Invariant Breaks (Ruptura de invariantes)
          • Mishandling of ETH (Mal manejo de ETH)
          • Denial of Service (DoS - Denegación de Servicio)
          • Integer overflow and underflow (desbordamiento y subdesbordamiento de enteros)
          • Phishing y Typosquatting
        • Recursos adicionales
      • Auditoría de smart contracts
        • Proceso de Auditoría
        • Herramientas
        • Cómo prepararse para una auditoría
        • El test Rekt
        • Retos
        • Recursos adicionales
  • Contribuye
    • Kipu Explorer
Powered by GitBook
On this page

Was this helpful?

  1. Módulo 2
  2. Fundamentos de Solidity

Eventos

Los eventos en Solidity son una de las características clave que permiten la comunicación entre los contratos inteligentes y las interfaces de usuario o los servidores backend en la blockchain de Ethereum. Proporcionan una manera eficiente de emitir registros sobre la ejecución de los contratos que pueden ser escuchados y capturados por aplicaciones externas, facilitando así una reacción en tiempo real a las acciones que ocurren dentro de la blockchain.

Propósito de los Eventos

Los eventos sirven principalmente para dos propósitos en el desarrollo de aplicaciones descentralizadas (DApps):

  1. Registrar y Auditar: Permiten registrar acciones específicas que ocurren en un contrato inteligente, como transferencias de tokens, cambios de estado, o cualquier otro evento significativo. Estos registros son almacenados en el log de transacciones de la blockchain, proporcionando una forma transparente y permanente de seguimiento.

  2. Interfaz de Comunicación: Facilitan la comunicación entre los contratos inteligentes y las interfaces de usuario. Por ejemplo, una aplicación puede escuchar eventos específicos emitidos por un contrato y actualizar la interfaz de usuario en consecuencia, sin necesidad de realizar costosas llamadas de lectura constantemente.

Cómo Funcionan los Eventos

Para utilizar eventos en Solidity, primero se deben definir dentro del contrato inteligente, especificando los tipos de datos que se van a emitir. Luego, dentro de las funciones del contrato, se pueden emitir estos eventos con los datos específicos que se desean registrar o comunicar.

Ejemplo Básico de Uso de Eventos

A continuación, se presenta un ejemplo simple de cómo definir y emitir un evento en Solidity:

pragma solidity ^0.8.0;

contract MyContract {
    // Definición del evento
    event MyEvent(address indexed sender, uint256 value);

    function triggerEvent() public {
        // Lógica de la función aquí...

        // Emitir el evento con los valores específicos
        emit MyEvent(msg.sender, 100);
    }
}

Características Importantes de los Eventos

  • Indexed Parameters: Los parámetros de un evento pueden ser marcados como indexed, lo que permite que estos sean buscables dentro del log de transacciones. Hasta tres parámetros por evento pueden ser indexados, lo que facilita la filtración de eventos por estos campos específicos.

  • Eficiencia de Gas: Emitir un evento es considerablemente más eficiente en términos de gas que almacenar valores directamente en el estado del contrato. Esto los hace ideales para registrar información sin afectar significativamente los costos de transacción.

  • Lectura Externa: Aunque los eventos se registran en la blockchain, no pueden ser accedidos desde dentro de los contratos. Su propósito es ser leídos por aplicaciones externas.

PreviousModificadoresNextEjercicio 5

Last updated 8 months ago

Was this helpful?