Registrar datos de contratos inteligentes con eventos
En Solidity, los contratos inteligentes pueden envíar eventos. Las DApps o cualquier aplicación conectada a la API JSON-RPC de Ethereum, puede escuchar estos eventos y obrar según corresponda. El evento también puede indexarse, para que el historial de eventos se pueda buscar más adelante.
Events
El evento más común en la cadena de bloques de Ethereum en el cierre de redacción de este artículo es el evento de transferencia que emiten los tókenes ERC20 cuando alguien transfiere tókenes.
1event Transfer(address indexed from, address indexed to, uint256 value);Copiar
La firma del evento se declara dentro del código del contrato y se puede emitir con la palabra clave emitida. Por ejemplo, el evento de transferencia registra quién envió la transferencia (de), a quién (para) y cuántos tókenes se transfirieron (valor).
Si regresamos a nuestro programa contador del contrato inteligente y decidimos registrar el valor cada vez que cambie. Dado que este contrato no pretende ejecutarse, sino que sirve de base para construir otro contrato ampliándolo, se le llama contrato abstracto. En el caso de nuestro ejemplo de contador, sería de la manera siguiente:
1pragma solidity 0.5.17;23contract Counter {45 event ValueChanged(uint oldValue, uint256 newValue);67 // Private variable of type unsigned int to keep the number of counts8 uint256 private count = 0;910 // Function that increments our counter11 function increment() public {12 count += 1;13 emit ValueChanged(count - 1, count);14 }1516 // Getter to get the count value17 function getCount() public view returns (uint256) {18 return count;19 }2021}Mostrar todoCopiar
Tenga en cuenta que:
Línea 5: declaramos nuestro evento y su contenido, el valor antiguo y el nuevo.
Línea 13: cuando incrementamos nuestra variable de conteo, emitimos el evento.
Si ahora desplegamos el contrato y seleccionamos la función de incremento, veremos que Remix lo mostrará automáticamente, si hace clic en la nueva transacción dentro de los registros con nombre.
Los registros son realmente útiles a la hora de depurar sus contratos inteligentes, pero también son importantes si construye aplicaciones utilizadas por diferentes personas. También facilitan los análisis para averiguar y entender cómo se utiliza su contrato inteligente. Los registros generados por transacciones se muestran en exploradores de bloques populares y también puede utilizarlos, por ejemplo, para crear scripts fuera de la cadena para escuchar eventos específicos y emprender acciones cuando ocurran.
Última edición: @nhsz(opens in a new tab), 15 de agosto de 2023