Java程序员也能迅速读懂区块链工作原理,以开源的区块链项目为例
开篇
我关注区块链相关的知识比较多,本身也是出身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 开源的Springboot 即时通讯 IM 聊天系统调试实战
基于 Java Spring cloud的开源在线教育系统调试实战
前端牛人写的开源的CMS系统调试实战,流体布局兼容手机端浏览器
当然不止这些.....
喜欢开源软件的同学,关注我,准没错