Solidity
如何通過 web3j 中的索引欄位過濾 EVM 日誌事件?
我查看了文件,但似乎沒有列出這種情況。我想要做的是通過帶有 Web3j 的索引欄位過濾特定合約的乙太坊事件日誌。
範例可靠性程式碼:
event someEvent(bytes32 indexed id, bytes value);
雖然我們可以使用 獲取特定時間段內的所有事件
EthFilter filter = new EthFilter(startBlock, endBlock, contractAddress);
,並使用類過濾特定事件類型Event
,但如何獲取與索引欄位匹配的特定類型的所有事件(例如 whereid == {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);