目录

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 EventsWeb3jRx的接口。