Web3js
myContract.getPastEvents(‘allEvents’) 返回空數組
我想從我部署在 Ropsten 網路上的合約中獲取所有過去的事件。
契約是:
pragma solidity ^0.5.1; contract SampleContract { uint storageData; event MamboNumberTwo(uint _value); event MamboNumberFive(uint _value); event MamboNumberString(string _value); function test(uint x, uint y, string memory s) public { emit MamboNumberTwo(x); emit MamboNumberFive(y); emit MamboNumberString(s); } }
它部署在0xdd73A24Ef263D9bed42b0db60607F915194A7fbF,你可以看到這個合約到目前為止已經發出了九個事件。
我想使用 web3’s 來獲取它們
myContract.getPastEvents("allEvents")
,但這會返回一個在空數組中解析的 Promise,就好像還沒有發出任何事件一樣。完整程式碼:
web3 = new Web3(...) // Connect to Ropsten node via Websocket var contract = new web3.eth.Contract([...], "0xdd73A24Ef263D9bed42b0db60607F915194A7fbF"); contract.getPastEvents("allEvents").then(console.log);
有任何想法嗎?謝謝!
使用 fromblock > 0 向呼叫添加過濾器:
contract.getPastEvents("allEvents", { fromBlock: 1}).then(console.log);