浅出区块链

缘起

谈起区块链不得不提到比特币,2008年中本聪在 比特币: 一个点对点的电子现金系统 一文中首先提出比特币,初衷很明确:希望这套系统不依赖任何一个中心,因此它是一个分布式系统,区块链的概念正是在中本聪设计比特币系统的时候第一次提出,比特币项目也是区块链技术目前为止落地应用最成功的一次。

本质

本质上来说,区块链是一个分布式的数据库,这个数据库维护了一个不断增长的数据记录列表。区块链这个词拆开来看,一个区块,一个链,区块里存放的是数据,链是用来将区块串联起来。如下图所示:


浅出区块链_第1张图片
1. 区块链本质

区块

区块里存放的是数据,每个区块包括两部分

区块头:记录当前区块的特征值

区块体:记录实际的交易数据

区块头主要包括的特征值如下:

Version:版本号

Previous Block: 前一个区块头的hash值

Number Of Transactions:交易数

Timestamp:时间戳

Nonce:随机数

Merkle Root:区块体根节点hash值

交易的记录存储在区块体中,区块体的存储结构是一颗二叉树,称为默克尔树,在这棵树中叶子节点存放的是交易数据及数据的hash值,两个叶子节点的hash值生成父节点;直至生成根节点,就是默克尔树根节点(Merkle Root)


浅出区块链_第2张图片
2. 默克尔树

可以打开此链接查看一个比特币区块完整的详细信息

区块头里存放着上一个区块的hash值顺序成为一个链条,区块链的概念就是这一样来的。

浅出区块链_第3张图片
3. 区块链

工作流程

理解了交易记录,区块,链等概念,我们来看下底层区块链的工作流程

1. 交易发生

2. 节点监听交易记录

3. 验证记录并将合法记录加入到节点内存区

4. 计算出区块并广播全网形成共识

5. 产生的新的区块加入到区块链中

6. 重复2-5

共识算法

区块链技术是基于分布式系统,为了保证各个节点数据的同步,我们需要一个算法来保证数据一致性,这类算法被称为共识算法。比特币的共识算法为工作量证明(PoW),其他共识算法还有 权益证明(PoS)、授权股权证明机制(DPoS)、瑞波共识协议(RCP)、拜占庭共识算法(PBFT)等

挖矿

回想我们在上面所提到的区块链工作流程第四步

4. 计算出区块并广播全网形成共识

如何计算出区块?这 就需要寻找一个随机数(Nonce)和区块头的其他特征值一起计算出来一个hash值,一旦找到一个随机数使得计算出来的hash值满足难度要求,即可全网广播告诉其他节点,这个区块已经被找到了,而找到区块的节点会有相应的比特币的奖励。这个过程被形象的称为挖矿。计算hash的机器被称为矿机,操作矿机 的人被称为矿工

区块链分叉

区块链是一个去中心化的数据结构,各个节点在任意时刻不会 保持实时一致性,会存在某一时刻不同的节点形成了多个区块,这就形成了分叉,这时应该采用哪一个区块?

目前的规则是新节点总是采用最长的那条区块链。如果区块链有分叉,将看哪个分支在分叉点后面,先达到6个新区块(称为"六次确认")。按照10分钟一个区块计算,一小时就可以确认。

区块链分类

根据参与者的不同可以分为公开链,私有链,联盟链

公开链顾名思义,任何人都可以参与使用和维护,典型的如比特币区块链,信息完全公开

私有链,集中管理者进行限制,内部少数人可以使用,信息不公开

联盟链介于两者中间,若干组织维护一条区块链,区块链的使用有权限管理,相关信息能够得到保护。

总结

区块链不是一个凭空产生的一个新技术,它是技术演化到一定程度后的产物,其应用场景也跟环境息息相关,能否最终带来成本的降低和效率的提升,是这项技术深入应用的关键,它也面临着很多有待改进的关键技术点:

密码学技术

共识机制

处理性能

系统安全

相应的数据和存储系统

和现有系统的融合

参考链接

How does blockchain really work?, by Sean Han

Bitcoin mining the hard way: the algorithms, protocols, and bytes, by Ken Shirriff

区块链技术指南,by 杨保华 陈昌

你可能感兴趣的:(浅出区块链)