第六章 九析带你轻松完爆 hyperledger fabric - 区块和区块链介绍
作者:互联网
本系列文章:
第一章:九析带你完爆 hyperledger fabric - 快速上手 basic-network 样例
第二章:九析带你完爆 hyperledger fabric - 快速搭建 GO 环境
第三章:九析带你完爆 hyperledger fabric - 快速上手 first-network 样例
第四章:九析带你完爆 hyperledger fabric - 系统逻辑架构篇
目录
1 前言
2 区块
3 区块链
4 区块链网络
5 区块链存储
1 前言
第一章九析手把手带领你运行了一个 fabric 区块链样例 basic-network。
第二章九析手把手带领你实现了 GO 语言开发环境的安装和配置。
第三章九析手把手带领你在 GO 语言开发环境下编译了 fabric 的最重要的两个工具 configtxgen 和 cryptogen,并在此基础上运行了 fabric 区块链样例 first-network。
第四章九析给你深入浅出的介绍了 fabric 整个逻辑架构。
第五章九析给你庖丁解牛般阐述了 fabric 网络拓扑、网络节点以及共识机制。
本章九析将为你讲解什么是区块、区块链,区块链网络以及区块链存储到底是什么意思。
2 区块
区块(block),本质是一种数据结构。如果用 java 表达,大概是下面这个样子:
public class Block {
private int index; # 索引值;此 Block 对象在整个区块链列表(List)的位置编号
private Date createdatetime; # 区块对象创建日期时间
private Object data; # 区块链中的交易记录,可以接受多种数据结构,比如 hashmap、 List、 Array 等
private Random nonce; # 随机数(下面会详细介绍)
private String hash; # 此 Block 对象的 hash 值
private String preBlockHash # 区块链列表(List)中此对象的上一个 Block 对象的 hash 值
......
public getHash() {
return hash( index + createdatetime + data + nonce + preBlockHash ); # 这里的 hash() 返回输入参数的 hash 值
}
}
3 区块链
讲完了区块,那么区块链 ( blockchain ) 就更好理解了,它也是一种数据结构。如果用 java 表达,大概就是下面这个样子:
List<Block> blockchain = new ArrayList<Block>();
Block _1st .= new Block();
Block _2nd = new Block();
Block _3rd = new BLock();
blockchain.add( _1st );
blockchain.add( _2nd );
blockchian.add( _3rd );
4 区块链网络
讲完了区块链,我们再来介绍一下区块链网络。上面我们已经知道区块链是一种数据结构对象(list);如果用 java 表述,此 list 存储在服务器的 jvm 中。设想如下场景,如果不想单点故障,你通常会在每个服务器上都启动一个 jvm,而每个 jvm 都存有相同的一份 list,这样由多个服务器构成的网络拓补结构就是分布式网络。
再回到区块链的概念上来,上面介绍的每个服务器就是区块链的网络节点,每个节点都存有一份相同的区块链,这样由多个节点构成的网络拓补结构便是区块链网络。如下图所示:
5 区块链存储
区块和区块链都是一种数据结构,如果这个数据结构存储在内存中是非常危险的,就像 java 对象一样,一旦 jvm 宕掉或者内存掉电,整个数据将不可恢复。因此,区块链也应该像 java 对象存储在 mysql 中一样存储在专属数据库中,fabric 使用 levelDB 和 couchDB(后续课程会介绍)存储区块链。
在 fabric 中,每个 Peer Committer 记账节点都会维护一份区块链对象(List)。每当客户端节点提交交易给 orderer 节点后,orderer 节点会将这些交易打包成新区块(block),然后在固定时间间隔将此区块同步给 Peer Anchor 节点,Peer Anchor 节点收到此区块后会利用 gossip 协议广播给每个 Peer Committer 节点。Peer Committer 节点收到区块,然后验证区块,最终将现加入的区块(block)添加(add)到自己节点所维护的区块链中(blocklist),这样便保证了整个分布式网络的数据一致性。
自此,九析带你轻松完爆了 hyperledger fabric 的区块和区块链。
标签:完爆,fabric,hyperledger,区块,节点,Block,九析 来源: https://blog.51cto.com/14625168/2468763