Web3js
使用 Web3 在沒有 ABI 的情況下獲取契約的過去事件?
我正在建構一個簡單的資源管理器,我想列出合約發出的事件。由於我不知道每個契約的 ABI,是否可以使用 Web3 從契約中獲取過去的事件?
如果我知道 ABI,我會做這樣的事情:
var myContract = new web3.eth.Contract(ABI, address); myContract.getPastEvents('allEvents', { filter: {...}, fromBlock: 0, toBlock: 'latest' }, (error, events) => { console.log(events); }) .then((events) => { console.log(events) // same results as the optional callback above });
但是當然我不能在沒有它的介面的情況下實例化一個合約。我想知道像 Etherscan 這樣的探索者是如何做到這一點的。
你可以使用’web3.eth.getPastLogs({fromBlock: , address: }, (err, result))'
結果將包含事件位於“主題”中的對象,但如果沒有 ABI,您將無法解碼事件。
編輯:主題是一個數組,第一個元素是事件名稱,以下元素是參數