继续昨天的demo往下写写:[SpringBoot区块链之以太坊开发(整合Web3j)](https://juejin.im/post/5d88e6c1518825094f69e887),将复杂的逻辑都去除了,留下最简单区块高度扫描部分代码,这样更好让开发者上手
首先自定义个区块高度处理线程类
```
package com.xiaobin.ethdemo.component;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.web3j.protocol.Web3j;
import org.web3j.protocol.core.methods.response.EthBlockNumber;

/**
* 创建时间: 2019/9/24 23:08
* 备注:
* 码农自学交流小群:260532022,欢迎大家的加入,分享学习是一件开心事
**/

@Component
public class EthWatcher implements Runnable {

@Autowired
private Web3j web3j;
// 是否停止扫描
private boolean stop = false;
// 当前区块高度
private Long currentBlockHeight = 8612532L;
// 等待扫描事件
private Long checkInterval = 5000L;
//区块确认数
private int confirmation = 1;
// 每次扫描区块的数量
private int step = 5;

public void check() {
try {
Long networkBlockNumber = getNetworkBlockHeight() - confirmation + 1;
System.out.println(networkBlockNumber);
currentBlockHeight = (networkBlockNumber - currentBlockHeight > step) ? currentBlockHeight + step : networkBlockNumber;
System.out.println("扫描当前区块高度:"+currentBlockHeight);
System.out.println("当前网络区块高度:"+networkBlockNumber);
} catch (Exception e) {
e.printStackTrace();
}
}

@Override
public void run() {
stop = false;
long nextCheck = 0;
while (!(Thread.interrupted() || stop)) {
if (nextCheck test() throws Exception{
List list = new ArrayList();
EthBlockNumber blockNumber = web3j.ethBlockNumber().send();
long blockHeight = blockNumber.getBlockNumber().longValue();
EthBlock block = web3j.ethGetBlockByNumber(new DefaultBlockParameterNumber(blockHeight), true).send();

block.getBlock().getTransactions().stream().forEach(transactionResult -> {
EthBlock.TransactionObject transactionObject = (EthBlock.TransactionObject) transactionResult;
Transaction transaction = transactionObject.get();
list.add(transaction);
});
return list;
}
```
效果图
![file](https://img2018.cnblogs.com/blog/1602984/201909/1602984-20190924234222330-1285726201.jpg)
码云地址:https://gitee.com/MyXiaoXiaoBin/learning-to-share/tree/master/eth-demo

###### 码农自学交流小群:260532022,欢迎大家的加入,分享学习是一件开心事

最新文章

  1. 使用PowerShell来修改文件访问,创建,修改时间属性
  2. 搭建spring mvc项目
  3. Iptables防火墙NAT地址转换与端口转发
  4. 【leetcode】Flatten Binary Tree to Linked List (middle)
  5. 如何修复损坏的MySQL数据表
  6. 多媒体编程基础之RGB和YUV
  7. [刷题codeforces]651B/651A
  8. Activity组件的UI实现
  9. Excel和XML文件导入
  10. Nodejs异步流程控制Async
  11. 转:PHP超时处理全面总结
  12. Winsock在Windows下的编程教程(C语言)(图文并茂,超长教程)
  13. ElasticSearch 学习记录之ES高亮搜索
  14. FastDFS 学习笔记
  15. 了解 yarn 、npm、nodejs
  16. Centos6.5部署Rsyslog+cron+rsync备份服务器
  17. 消除unchecked cast Warning
  18. Caffe 议事(二):从零开始搭建 ResNet 之 网络的搭建(上)
  19. 南京邮电大学网络攻防平台WEB题
  20. centos6.5下搭建oracle 11g

热门文章

  1. 对微软的敌视何时休? 从一篇语言评论文章对C#的评价说起
  2. c语言推箱子 扫雷项目
  3. Linux下复位USB设备
  4. Android进阶之绘制-自定义View完全掌握(五)
  5. JavaScript计算平方数的三种方法
  6. Elasticsearch核心技术(1)--- Docker容器中运行ES、Kibana、Cerebro
  7. thinkPHP中的简单文章推荐(按浏览量)功能实现
  8. mybatis 源码分析(八)ResultSetHandler 详解
  9. chrome取消安全模式
  10. 09 Scrapy框架在爬虫中的使用