SpringBoot区块链之以太坊区块高度扫描(简洁版)

继续昨天的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,欢迎大家的加入,分享学习是一件开心事

原文地址:https://www.cnblogs.com/hy-xiaobin/p/11581946.html

时间: 2024-10-07 22:10:58

SpringBoot区块链之以太坊区块高度扫描(简洁版)的相关文章

【免费下载】全套最新 03区块链以太坊理论 视频教程+教学资料+学习课件+源代码+软件开发工具

03区块链以太坊理论视频教程 网盘地址: 链接:https://pan.baidu.com/s/1Lf9QB2dl2Zk4FeWOvaup\_A 提取码:ug7u 加公众号 获取更多新教程 教程目录大纲 ./03区块链以太坊理论 ├── 视频 │?? ├── 001_以太坊课程简介.mp4 │?? ├── 002_以太坊简介(一).avi │?? ├── 003_以太坊简介(二).avi │?? ├── 004_以太坊简介(三).avi │?? ├── 005_以太坊简介(四).avi │??

比特币,以太坊......区块链技术真的被认同了吗?

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 作者:Zach展--发表在云+社区区块链专栏 近来比特币价格持续走高,掀起了一股"比特潮".比特币更参与到了实际交易中.虽然土耳其政府曾经因为电子货币使用的风险发出过警告,但是据英国<每日邮报>1月30日的报道,土耳其业余足球俱乐部Harunustaspor以2500土耳其里拉(约合7526元人民币)外加0.0524比特币(3445元人民币)的价格签下一位22岁的球员.另外,外媒报道美国支付服务商1月31日宣布Sq

区块链以太坊环境搭建(详细篇)

以太坊合约的配置(以在私有链上配置投票合约为例) 以太坊合约配置步骤大体如下: 一.安装Mist浏览器(已经集成以太坊钱包) 二.安装配置基于Go语言的geth命令 三.在本地搭建私有链 四.在私有链上完成挖矿工作 五.使用Mist在私有链上配置投票合约 具体步骤如下: 一.安装Mist浏览器(已经集成以太坊钱包) 1登陆https://github.com/ethereum/mist/releases/根据需求下载最新版本的客户端: 下载完成解压压缩文件后找到可运行文件运行安装即可 安装过程中

[区块链]以太坊手动添加静态节点

如果每次都向某个节点同步区块,可以手动的添加为静态节点,这样可以大大的提高同步效率 这里套用一下https://blog.csdn.net/weixin_40903789/article/details/79619646的私链,感谢,我就不用再创建虚拟机了做静态节点了 作用默认大家已经安装好了mist,下载地址,它是一个集web3和钱包的工具,默认也会有geth的安装,当然也可以使用上述地址geth的安装方法 创世的文件来一个,必须套用别人的,地址 下载完成后,为了方便我把它放在了geth的同级

EOS和以太坊那个区块链平台更好?

显然,你已经听说过两个最受欢迎的智能合约区块链,但想知道EOS与以太坊之中哪个更好?或许你想比较一下两种技术?好吧,你来对了地方,因为我要告诉你你需要知道的一切! 在这个EOS vs Ethereum指南中,我将首先解释每个项目的基础知识,然后概述每个区块链的执行情况.这将包括交易时间,交易费用和可扩展性等内容. 之后,我将简要介绍如何在没有第三方的情况下验证交易.这将包括以太坊使用的工作量证明(Proof of Work)与EOS使用的股份授权证明(Delegated Proof of Sta

区块链快速入门(八)——以太坊

区块链快速入门(八)--以太坊 一.以太坊简介 以太坊(Ethereum)项目的最初目标是打造一个运行智能合约的平台(Platform for Smart Contract),支持图灵完备的应用,按照智能合约的约定逻辑自动执行,理想情况下将不存在故障停机.审查.欺诈以及第三方干预等问题.以太坊平台目前支持Golang.C++.Python等多种语言实现的客户端.由于核心实现上基于比特币网络的核心思想进行了拓展,因此在很多设计特性上都与比特币网络十分类似.基于以太坊项目,以太坊团队目前运营了一条公

以太坊开发完整去中心化应用 —— 区块链投票系统

第一节 课程概述 本课程面向初学者,内容涵盖以太坊开发相关的基本概念,并将手把手地教大家如何构建一个 基于以太坊的完整去中心化应用 -- 区块链投票系统. ethereum logo 通过本课程的学习,你将掌握: 以太坊区块链的基本知识 开发和部署以太坊合约所需的软件环境 使用高级语言(solidity)编写以太坊合约 使用NodeJS编译.部署合约并与之交互 使用Truffle框架开发分布式应用 使用控制台或网页与合约进行交互 前序知识要求 为了顺利完成本课程,最好对以下技术已经有一些基本了解

爆炒区块链3.0概念,EOS想超ETH(以太坊),没那么简单!

2017年6月25日,EOS开始上线众筹,时间为一年!也就是说,EOS众筹结束时间要到2018年6月.自EOS众筹以来,炒得最多的就是区块链3.0概念,比如要超越以太坊,要做真正的区块链操作系统-- 那么,这个目前还在概念中的EOS,真的可以取代以太坊吗?我们一起来看看. 一.从以太坊说起 Ethereum(以太坊)是由俄罗斯人Vitalik Buterin于2014年创建的开源区块链平台,用户可以使用它来创建和发布去中心化的应用程序.Ethereum可以用来编程,分散,担保和交易任何事物:投票

以太坊开发DApp实战教程——用区块链、星际文件系统(IPFS)、Node.js和MongoDB来构建电商平台(一)

第一节 简介 欢迎和我们一起来用以太坊开发构建一个去中心化电商DApp!我们将用区块链.星际文件系统(IPFS).Node.js和MongoDB来构建电商平台类似淘宝的在线电商应用,卖家可以自由地出售商品,买家可以自由地购物: 去中心化: 和淘宝或eBay不同,我们把所有的商业逻辑和核心数据都放在以太坊区块链上,这使 得它成为一个完全去中心化的应用.和淘宝这样中心化的电商平台相比,一个去中心化的P2P电商应用显然有其独特的价值--至少你不用担心被平台封账户了. IPFS: 在以太坊上存储用于商品