Filters
优质
小牛编辑
134浏览
2023-12-01
Filters
web3j的响应式函数可以使观察者通过事件去通知消息订阅者变得很简单,并能够记录在区块链中。接收所有新的区块并把它们添加到区块链中:
Subscription subscription = web3j.blockObservable(false).subscribe(block -> {
...
});
接收所有新的交易并把它们添加到区块链中:
Subscription subscription = web3j.transactionObservable().subscribe(tx -> {
...
});
接收所有已经提交到网络中等待处理的交易。(他们被统一的分配到一个区块之前。)
Subscription subscription = web3j.pendingTransactionObservable().subscribe(tx -> {
...
});
或者你重置所有的区块到最新的位置,那么当有新建区块的时候会通知你。
Subscription subscription = catchUpToLatestAndSubscribeToNewBlocksObservable(
<startBlockNumber>, <fullTxObjects>)
.subscribe(block -> {
...
});
主题过滤也被支持:
EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST,
DefaultBlockParameterName.LATEST, <contract-address>)
.addSingleTopic(...)|.addOptionalTopics(..., ...)|...;
web3j.ethLogObservable(filter).subscribe(log -> {
...
});
当不再需要时,订阅也应该被取消:
subscription.unsubscribe();
注意:Infura中不支持filters。
需要了解更多有关过滤器和事件的信息可以查看Filters and Events和Web3jRx的接口。