区块链根据共识机制使其在不依靠中心化组织的情况下,依然大规模高效协作完成运转。
1.PoW工作量证明机制
目前比特币系统采用的共识机制就是工作量证明机制(PoW,Proof of Work),其工作机制描述如下:
(1)区块将交易数据收集之后生成Merkle树。
(2)各个节点(俗称为矿工)必须进行一个SHA256的负责数学运算来得到一个随机数(俗称挖矿),当某个节点得到的随机数满足要求,并在全网广播,得到全网所有其它节点的认可,获得了当前区块的记账权,同时系统给予该节点一定数量的比特币奖励。
(3)当前“挖矿”结束,下一阶段的“挖矿”开始。由于比特币的数量有限,所以越来越“挖矿”将浪费算力及电力。值得一提的是当一个“矿工”得到比特币的时候,其它的“矿工”所做出的努力都将是“浪费”。
2. PoS股权证明机制
股权证明机制PoS(Proof of
Stake)的出现是为了解决PoW的问题,PoW的一个很大的缺点就是根据节点得到的结果来给予比特币等虚拟货币的奖励,即运算能力强大的节点将拥有一个极大的概率来获得区块的记账权及比特币奖励,而运算能力低下的节点几乎都是在“浪费”资源与精力。这会造成运算能力越强的节点越来越强,运算能力低下的节点“破产”,这种机制对同样付出大量运算的节点极其不公平。
股权证明机制PoS的设计如下:矿工手中的货币数量和持有时间进行乘积认定为权益数。同样,所有的矿工进行哈希运算寻找目标值,获得相应的奖励。相对于PoW,PoS机制当中寻找目标数的难度有所降低,减少了计算开销及算力的浪费。但是缺点也很明显:矿工手中持有的权益数跟后续“挖矿”成功的几率成正比,新加入的矿工在后续的挖矿中依然无法胜过权益数多的矿工,依然存在在不公平性。
3. DPoS代理权益共识机制
为了有效地解决PoS的一些问题,DPoS(Delegated Proof of
Stake)代理权益共识机制将节点定义成两种角色:用户节点和代理节点,用户节点选取若干数量的节点作为证明人节点,之后节点获得投票数最多的节点被选举出来拥有这个区块的记账权成为代理节点。DPOS机制中,不需要算力解决数学难题,而是由持币者选出谁说生产者,如果生产者不称职,就有随时有可能被投票出局,这也就解决了POS的性能问题,该机制参与共识的节点也减少了,且不需要消耗大量算力,有效地提高了该机制的性能。但是缺点也有:DPoS取消了大量节点的共识,代理节点集中到了一些权益最高的节点手中,故该共识机制容易中心化,易出现不公平的现象。
4.实用拜占庭容错(PBFT)共识机制
PBFT主要是为了解决拜占庭容错问题。该共识机制解决了系统存在着恶意节点的前提条件下,其他可靠节点如何达成一致性的问题。PBFT一般分为以下几个过程:发送请求、预准备阶段、准备阶段、提交、回复阶段
1)Request:从整个体系的所有节点中选出一个主节点负责区块生成。2)Pre-Prepare:客户端发出的交易在全网广播,主节点0将从网络收集交易进行打包,并向全网广播,也就是扩散至节点123。3)Prepare:每个节点在接收到广播信息之后,对这些交易信息进行模拟执行。根据执行结果计算新区块的哈希,并向全网广播,1->;023,2->;013,3因为宕机无法广播。4)Commit:当系统中的某一个节点收到2f(f是拜占庭节容错节点数)个区块哈希值和自己相等时,就向全网广播一条commit消息。5)Reply:当某一节点收到2f+1条commit消息,即可完成该区块的上链过程。
![共识机制 共识机制](//ziboxinyan.com/FileUpload/ueditor_s/upload/2022-5/5/6378734872909947106321535.png)
5.Raft共识机制
Raft是实现分布式共识的一种算法,主要用来管理日志复制的一致性。它和Paxos的功能是一样,但是相比于Paxos,Raft算法更容易理解、也更容易应用到实际的系统当中。而Raft算法也是联盟链采用比较多的共识算法Raft的三种状态(角色):Follower(群众):被动接收Leader发送的请求。所有的节点刚开始的时候是处于Follower状态。Candidate(候选人):由Follower向Leader转换的中间状态。Leader(领导):负责和客户端交互以及日志复制(日志复制是单向的,即Leader发送给Follower),同一时刻最多只有1个Leader存在。Raft的工作原理即复制节点的日志,选举出一个Leader,让其保持日志的一致性从而保证共识一致性。工作流程如下:(1)所有的节点参与投片选举Leader和Candidate。(2)日志复制过程:Leader在一个周期内进行日志的复制,并且负责与其它节点进行消息的传达。(3)在一个周期内,Leader发送更新消息(AppendEntries)给Follower,如在一个周期内没有发布消息,由Candidate节点转成Leader节点,成为新的Leader节点
![共识机制 共识机制](//ziboxinyan.com/FileUpload/ueditor_s/upload/2022-5/5/6378734874925567356363230.png)