Solidity

如何通過 web3j 中的索引欄位過濾 EVM 日誌事件?

  • January 16, 2022

我查看了文件,但似乎沒有列出這種情況。我想要做的是通過帶有 Web3j 的索引欄位過濾特定合約的乙太坊事件日誌。

範例可靠性程式碼:event someEvent(bytes32 indexed id, bytes value);

雖然我們可以使用 獲取特定時間段內的所有事件EthFilter filter = new EthFilter(startBlock, endBlock, contractAddress);,並使用類過濾特定事件類型Event,但如何獲取與索引欄位匹配的特定類型的所有事件(例如 where id == {0, 0, 0 ... 0})?

從文件https://docs.web3j.io/filters.html

在此處輸入圖像描述

其中主題是合約事件的索引參數。希望這可以幫助。

你只需要聽一個主題命名為你感興趣的值

例如,我正在監聽一個整數 uint16 tokenId 事件 Emitted(uint16 indexed tokenId, address owner, uint32 timestamp);

使用程式碼 String topic = String.format(“0x%064X”, tokenId); EthFilter filter = new EthFilter(DefaultBlockParameterName.LATEST, DefaultBlockParameterName.LATEST, ADDRESS).addSingleTopic(topic);

引用自:https://ethereum.stackexchange.com/questions/50438