Necesito obtener los eventos emitidos por mi contrato inteligente y consumirlos en el front-end a través de web3.
Hice un evento en mi contrato que devuelve el ganador del evento y el número de boleto:
event Winner(uint256 ticketNumber, address winner);Así que emito este evento y lo veo en los registros de transacciones.
De Etherscan:
¡OK! Lo que necesito son los datos: ticketNumber: 1, winner: 0x........ ¿Cómo obtuve esto de web3?
Estoy tratando de usar:
await web3.eth.getTransactionReceipt(txnHash, function (error, result) { console.log(result); });Pero cuando reviso el registro de la consola, no puedo ver esta información, sospecho que result.logs.data es la información correcta, pero no estoy seguro y no sé cómo traducir:
"0x00000000000000000000000000000000000000000000000000000000000000001000000000000000000000005964b608ea267bfe9ef77707fce8105a2d145e7a"
¿Alguien tiene una idea?
Si lees los documentos , existe el método getPastEvents .
myContract.getPastEvents('MyEvent', { filter: {myIndexedParam: [20,23], myOtherIndexedParam: '0x123456789...'}, // Using an array means OR: eg 20 or 23 fromBlock: 0, toBlock: 'latest' }, function(error, events){ console.log(events); }) .then(function(events){ console.log(events) // same results as the optional callback above });también puede crear detectores de eventos:
contract.events.Winner() .on('data', (event) => { console.log(event); }) .on('error', console.error);Documentos sobresuscripción a eventos