Java程序员也能迅速读懂区块链工作原理,以开源的区块链项目为例

createh52个月前 (02-01)技术教程12

开篇

我关注区块链相关的知识比较多,本身也是出身java的,但市面上的java区块链项目很少,除了新经币是java的,但开源不彻底。所以学java的同学很多人不知道区块链原理。那么今天来调试个简单的区块链开源项目,当然,此区块链项目不能实际区块链项目中哦,很多性能和其他方面有待商榷,但看这个开源项目,区块链原理,你应该是能懂了。需要开源区块链地址源码的,请移步至文章尾部。但运行代码之前,请先把概念看一下。觉得有用就关注转发收藏吧。

概念(开源调试在下面,先介绍概念)

1、区块是区块链的基础单元

2、区块链中区块的基本属性

区块6个属性的说明-Index 区块的索引值,区块链中的唯一键
区块6个属性的说明-Timestamp 区块的时间戳,用于区分区块的产生时间
区块6个属性的说明-Hash 区块的hash值是整个区块各个内容整体计算出的hash值
区块6个属性的说明-Previous Hash 前一个区块的hash值
区块6个属性的说明-Data 区块链的数据存储部分,例如比特币是用来存储交易数据
区块6个属性的说明-Nonce(挖矿原理,比特币难度举例) nonce值是形成有效hash的计算出来的

3、一个java简易区块如下

package cn.wenwuyi.blockchain.pojo;

/**
 * 
 * 类名:Block.java
 * 描述:区块实体类
 * 时间:2018年3月12日 下午7:03:50 
 * @author cn.wenwuyi
 * @version 1.0
 */
public class Block {
 /**
 * 索引
 */
 private int index;
 /**
 * 前一个区块的hash值
 */
 private String previousHash;
 /**
 * 时间戳
 */
 private long timestamp;
 /**
 * 数据,交易数据等
 */
 private String data;
 /**
 * hash值
 */
 private String hash;
 /**
 * nonce值(难度系数)
 */
 private long nonce;

 public Block() {
 }

 public Block(int index, String previousHash, long timestamp, String data, String hash,long nonce) {
 this.index = index;
 this.previousHash = previousHash;
 this.timestamp = timestamp;
 this.data = data;
 this.hash = hash;
 this.nonce = nonce;
 }

 public int getIndex() {
 return index;
 }

 public void setIndex(int index) {
 this.index = index;
 }

 public String getPreviousHash() {
 return previousHash;
 }

 public void setPreviousHash(String previousHash) {
 this.previousHash = previousHash;
 }

 public long getTimestamp() {
 return timestamp;
 }

 public void setTimestamp(long timestamp) {
 this.timestamp = timestamp;
 }

 public String getData() {
 return data;
 }

 public void setData(String data) {
 this.data = data;
 }

 public String getHash() {
 return hash;
 }

 public void setHash(String hash) {
 this.hash = hash;
 }

 public long getNonce() {
 return nonce;
 }

 public void setNonce(long nonce) {
 this.nonce = nonce;
 }

}

4、区块链6层模型如下,币层属于区块奖励层

5、去中心化节点概念

节点其实就是记录各个区块的服务器而已,没那么复杂,唯一不同的是,节点属性基本一致,可做到数据防止抵赖。简单的讲:两个人借钱,有一张借条,借条掉了,其实欠钱那一方完全可以抵赖,但是你把这个借条复制了多份,给你的亲戚朋友,那么欠钱的那个人想抵赖也就抵赖不了了。去中心化服务器也是这个原理。你不能保证某个节点会挂,但是如果节点多了,谁挂都无所谓。

开源区块链项目核心调试

此开源项目是基于spring boot的,从开源地址导入可以直接运行,下面我来演示如何导入和运行的

1、idea导入开源区块链项目

下载完成是这个样子的

2、配置节点信息,注意刚刚down下来的开源项目是默认有三个节点配置的,如下图

此时配置,idea节点相关,然后启动,如下图

节点1配置,把另外两个也配置了,node1,node2和node3,然后启动吧

3、启动 把3个节点全部启动,然后

4、访问localhost:8081查看相应的接口,然后就开始按着接口研究区块链是怎么运行的吧。有挖矿,有转账等。

结语

区块链已经从国家政策层面已经开始全面支持了,如果不了解区块链有可能会被一个时代抛弃,有需要区块链源码的同学,关注,关注,转发收藏吧,然后回复"20191117",我把我调试的开源区块链项目开源开源地址发你。

当然我还调试了其他很多开源项目,感兴趣的可以看看

Java 搭建的开源的spring boot商城系统实战

基于Java spring boot 的区块链开源系统调试实战

Blockchain 区块链技术开发开源教程合集

Java 开源的Springboot 即时通讯 IM 聊天系统调试实战

基于 Java Spring cloud的开源在线教育系统调试实战

前端牛人写的开源的CMS系统调试实战,流体布局兼容手机端浏览器

当然不止这些.....

喜欢开源软件的同学,关注我,准没错

相关文章

神器!一键生成Spring Boot +Vue项目,接私活能缩短一半工期

今天给大家推荐一款自己公司正在打磨的一款一键部署,一键生成全自动化的低代码生成器工具,可以实现前端可视化操作(拖拽形式+配置就可以生成前端页面),后端直接结合前端代码一键生成,数据库(含表字段)可一键...

公司使用了6年的Spring Boot项目部署方案 打包 + 一键部署,稳得一批

云服务器我们需要一台云服务器,我之前白嫖过一台丐版的,1 核1G 内存,并且已经安装了宝塔面板。这是从宝塔面板首页看到的服务器配置详情。MySQL登录宝塔面板,点击「数据库」→「添加数据库」,填写数据...

vue2和vue3各个版本项目结构和启动

vue2版本项目:uniapp微信小程序启动需要下载hbuilder和微信小程序工具。导入ruoyi-uniapp-master项目即可启动项目。ruoyi-ui是vue2版本前端代码,其他项目是后台...

京东顶尖架构师手撸Vue+SpringBoot神级项目实战手册,传疯啦

前言:不同终端的兴起,对开发人员的要求越来越高,纯浏览器端的响应式页面已经不能满足用户体验的要求,需要针对不同的终端开发不同的定制版本;为了提升开发效率,前后端分离的需求越来越被重视。内容简介本书以实...