[英]Web3j: Getting last events from a smart contract
我正在使用org.web3j (4.8.4)
和Java 11
。 我在 Kovan 網絡上部署了一個智能合約。 我想訂閱調用subscribe(...)
后發出的所有新事件。 我對之前發出的事件不感興趣。 這是我當前的代碼:
public void subscribeToEvents() throws Exception {
String wssUrl = "wss://kovan.infura.io/ws/v3/TOKEN";
String contractAddress = "0x123...";
// initialize web socket service
WebSocketService wss = new WebSocketService(wssUrl, false);
try {
wss.connect();
} catch (Exception e) {
System.out.println("Error while connecting to WSS service: " + e);
throw e;
}
// build web3j client
Web3j web3j = Web3j.build(wss);
// create filter for contract events
EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST, DefaultBlockParameterName.LATEST, contractAddress);
// subscribe to events
web3j.ethLogFlowable(filter).subscribe(event -> {
System.out.println("Event received");
System.out.println(event);
}, error -> {
System.out.println("Error: " + error);
});
}
但是,當我運行此代碼時,它還會打印幾天前發生的舊事件。 如何更改代碼,使其僅在我調用subscribe(...)
后打印智能合約發出的新事件?
更換
EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST, DefaultBlockParameterName.LATEST, contractAddress);
和
EthFilter filter = new EthFilter(DefaultBlockParameterName.LATEST, DefaultBlockParameterName.LATEST, contractAddress);
為我完成了這項工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.