Cómo obtener la marca de tiempo de un registro de eventos en un evento emitido desde un contrato inteligente

Quiero obtener la marca de tiempo de un evento.

¿Cómo puedo activar la hora del evento si los datos del evento no contienen ningún valor de tiempo?

Respuestas (2)

Puede hacer esto verificando la marca de tiempo del bloque en el que se incluyó el evento. Para algo como web3.js, puede usar getBlock:

web3.eth.getBlock(blockHashOrBlockNumber [, returnTransactionObjects] [, callback])

Además, puede incluir la marca de tiempo en el evento mismo. Se vería así:

pragma solidity ^0.5.5;

contract MyEvetTest {

   event MyEvent(uint256 timestamp);

   function myFunction() public {
       emit MyEvent(block.timestamp);
   }
}
Gracias, respuesta perfecta, exactamente al grano.
Excelente. Siéntase libre de "aceptar" la respuesta, para que los futuros espectadores sepan que esta respuesta resolvió su problema.
Revisé toda la página y no encontré ningún botón como "aceptar", no sé a dónde se fue, aquí solo hay dos opciones "compartir" y "editar", de lo contrario no habría respondido gracias en el comentario porque aceptar = gracias
Hay una marca de verificación debajo de las flechas de voto hacia arriba y hacia abajo. Intenta hacer clic en eso para aceptar.

Si no almacenó la marca de tiempo en el evento, puede analizar de esta manera

const getTimeByBlock = async(txHash) => {
  const blockN = await web3.eth.getTransaction(txHash)
  const blockData = await web3.eth.getBlock(blockN.blockNumber)

  return blockData.timestamp
}