当前位置:   article > 正文

Java类库web3j的过滤器Filters

Java类库web3j的过滤器Filters

web3j的响应式函数可以使观察者通过事件去通知消息订阅者变得很简单,并能够记录在区块链中。接收所有新的区块并把它们添加到区块链中:

  1. Subscription subscription = web3j.blockObservable(false).subscribe(block -> {
  2. ...
  3. });

接收所有新的交易并把它们添加到区块链中:

  1. Subscription subscription = web3j.transactionObservable().subscribe(tx -> {
  2. ...
  3. });

接收所有已经提交到网络中等待处理的交易。(他们被统一的分配到一个区块之前。)

  1. Subscription subscription = web3j.pendingTransactionObservable().subscribe(tx -> {
  2. ...
  3. });

或者你重置所有的区块到最新的位置,那么当有新建区块的时候会通知你。

  1. Subscription subscription = catchUpToLatestAndSubscribeToNewBlocksObservable(
  2. <startBlockNumber>, <fullTxObjects>)
  3. .subscribe(block -> {
  4. ...
  5. });

主题过滤也被支持:

  1. EthFilter filter = new EthFilter(DefaultBlockParameterName.EARLIEST,
  2. DefaultBlockParameterName.LATEST, <contract-address>)
  3. .addSingleTopic(...)|.addOptionalTopics(..., ...)|...;
  4. web3j.ethLogObservable(filter).subscribe(log -> {
  5. ...
  6. });

当不再需要时,订阅也应该被取消:

subscription.unsubscribe();

注意:Infura中不支持filters。

需要了解更多有关过滤器和事件的信息可以查看Filters and EventsWeb3jRx的接口。

其他的细节

java8 bulid:

  • Web3j提供对所有响应类型的安全访问。可选的或null响应java 8都支持。
  • 异步请求包在一个java 8的CompletableFutures。Web3j提供了围绕所有异步请求的打包工具,以确保在执行期间可以捕获任何异常,而不只是丢弃。由于在完全检查中会有很多缺少支持的异常情况,这些异常通常被确定为未检测到的异常,导致检测过程出现问题。有关详细信息,请参见 Async.run()及其关联 test

在java 8的Android版本:

  • 包数量作为 BigIntegers返回。对于简单的结果,可以通过 Response.getResult()获取字符串类型的数量结果。
  • 还可以通过在 HttpService和IpcService类中存在的includeRawResponse参数将原生的JSON包放置在响应中。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号