Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

336
Vistas
¿Alguien puede explicarme ENUM, EMIT, EVENT en solidez?
 enum Status{ Vacant, Occupied } Status currentStatus; event Occupy(address _occupant, uint _value);
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Como en algunos otros lenguajes de programación, enum ( docs ) le permite agregar múltiples valores a un tipo de datos, donde solo uno de los valores está activo.

En su caso, el currentStatus puede estar Vacant (valor entero 0), o puede estar Occupied (valor entero 1). Pero nunca puede ser "ninguno de estos", ni "ambos", ni "cualquier otra cosa".

 pragma solidity ^0.8; contract MyContract { enum Status { Vacant, Occupied } Status currentStatus; // you can effectively pass `0` or `1` integer value here function setCurrentStatus(Status _currentStatus) external { currentStatus = _currentStatus; } function getCurrentStatusVerbose() external view returns (string memory) { if (currentStatus == Status.Vacant) { return "The current status is Vacant"; } else if (currentStatus == Status.Occupied) { return "The current status is Occupied"; } } }

Los eventos ( documentos ) son legibles por aplicaciones fuera de la cadena, no por otros contratos. Por lo general, la aplicación fuera de la cadena escucha estos eventos que se emiten para realizar una acción en su extremo.

 pragma solidity ^0.8; contract MyContract { event Occupy(address _occupant, uint _value); enum Status { Vacant, Occupied } Status currentStatus; function setCurrentStatus(Status _currentStatus) external { currentStatus = _currentStatus; // emitting the `Occupy` event emit Occupy(msg.sender, uint(_currentStatus)); } }

Aplicación fuera de la cadena:

 myContract.on('Occupy', async (event) => { updateOccupancyInExternalDB(event); });

Un ejemplo de la vida real es el evento Transfer() que definió el estándar de token ERC-20 . Cuando un contrato de token emite este evento, significa que ocurrió una transferencia de token. Los exploradores de blockchain (como Etherscan) escuchan estos eventos y actualizan la información del saldo del token en sus propias bases de datos (restar del saldo del remitente y aumentar el saldo del receptor en su propia base de datos).

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda