Web3 - 如何获取交易收据事件日志?
Web3 - How to get Transaction Receipt Event Logs?
我需要获取我的智能合约发出的事件并通过 web3 在前端使用它们。
我在我的合同上做了一些活动,returns 活动获胜者和门票号码:
event Winner(uint256 ticketNumber, address winner);
好的,所以我发出了这个事件,我在事务日志中看到了它。
来自 Etherscan:
好的!我需要的是数据:ticketNumber: 1, winner: 0x.......
我是如何从 web3 得到这个的?
我正在尝试使用:
await web3.eth.getTransactionReceipt(txnHash, function (error, result) {
console.log(result);
});
但是当我查看控制台日志时,我看不到这些信息,我怀疑 result.logs.data 是正确的信息,但我不确定,我不知道如何翻译:
“0x00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000005964b608ea267bfe9ef77707fce8105a2d=143e7a”
有人有想法吗?谢谢!
如果你阅读docs,有getPastEvents
方法。
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
});
您还可以创建事件侦听器:
contract.events.Winner()
.on('data', (event) => {
console.log(event);
})
.on('error', console.error);
的文档
我需要获取我的智能合约发出的事件并通过 web3 在前端使用它们。
我在我的合同上做了一些活动,returns 活动获胜者和门票号码:
event Winner(uint256 ticketNumber, address winner);
好的,所以我发出了这个事件,我在事务日志中看到了它。
来自 Etherscan:
好的!我需要的是数据:ticketNumber: 1, winner: 0x....... 我是如何从 web3 得到这个的?
我正在尝试使用:
await web3.eth.getTransactionReceipt(txnHash, function (error, result) {
console.log(result);
});
但是当我查看控制台日志时,我看不到这些信息,我怀疑 result.logs.data 是正确的信息,但我不确定,我不知道如何翻译: “0x00000000000000000000000000000000000000000000000000000000000000000010000000000000000000000005964b608ea267bfe9ef77707fce8105a2d=143e7a”
有人有想法吗?谢谢!
如果你阅读docs,有getPastEvents
方法。
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
});
您还可以创建事件侦听器:
contract.events.Winner()
.on('data', (event) => {
console.log(event);
})
.on('error', console.error);
的文档