Monday, June 3, 2024
 Popular · Latest · Hot · Upcoming
135
rated 0 times [  142] [ 7]  / answers: 1 / hits: 7348  / 2 Years ago, sun, march 6, 2022, 12:00:00

I need to get the events emitted by my smart contract and consume them in the front end via web3.


I made some event on my contract that returns event winner and ticket number:


event Winner(uint256 ticketNumber, address winner);

So I emit this event, and I see it on transaction logs.


From Etherscan:


enter


OK! What I need is the data: ticketNumber: 1, winner: 0x........
How did I get this from web3?


Im trying to use:


 await web3.eth.getTransactionReceipt(txnHash, function (error, result) {
console.log(result);
});

But when I check console log, I cannot see this information, I suspect that result.logs.data is the right info, but I don't know for sure, and I don't know how to translate:


"0x00000000000000000000000000000000000000000000000000000000000000010000000000000000000000005964b608ea267bfe9ef77707fce8105a2d145e7a"


Anybody have an idea?


More From » blockchain

 Answers
2

If you read the docs, there is getPastEvents method.


myContract.getPastEvents('MyEvent', {
filter: {myIndexedParam: [20,23], myOtherIndexedParam: '0x123456789...'}, // Using an array means OR: e.g. 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
});

you can also create event listeners:


contract.events.Winner()
.on('data', (event) => {
console.log(event);
})
.on('error', console.error);

Docs about subscription to events


[#299] Tuesday, February 22, 2022, 2 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
alora

Total Points: 284
Total Questions: 99
Total Answers: 92

Location: Singapore
Member since Sat, Jul 25, 2020
4 Years ago
;