06共识算法

2018-11-01  本文已影响40人  EricLihuifeng

目录:
1.什么是共识算法?

2.共识算法的目的和价值
3.常用的共识算法

一、什么是共识算法?

(一)、分布式系统

1、区块链系统本质就是一一个分布式应用软件。区块链架构是一种分布式的架构。

2、分布式系统中,多个主机通过异步通信方式组成网络集群。

3、利用区块链构造基于互联网的去中心化账本,需要解决的首要问题是如何实现不同账本节点上的账本数据的一-致性和正确性

(二)、分布式系统的一致性问题

1、理想的分布式系统的一致性应该满足以下三点:

2、对于分布式系统,希望具备以下能力:

3、在实际的计算机集群中,可能会存在以下问题:

4、实现全网一-致性其实只需要在某个时刻达成最终一致即可。

(三)、FLP定理与CAP定理

1、FLP定理(FLP不可能性定理)

2、CAP定理

(四)、拜占庭将军问题

屏幕快照 2018-11-01 下午8.32.42.png 屏幕快照 2018-11-01 下午8.32.59.png

1、 去中心化的区块链技术必须要考虑拜占庭将军问题

2、拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或中断以及遭到恶意攻击等原因,计算机和网络可能出现不可预料的行为。拜占庭容错技术被设计用来处理这些异常行为,并满足所要解决的问题的规范要求。

3、拜占庭将军问题的可以描述为:一 个发送命令的将军要发送一个命令给其余n-1个将军,使得:

4、Lamport 对拜占庭将军问题的研究表明

(五)、传统分布式一致性算法和区块链共识算法

1、一致性就是指数据要完整、要同步。

2、所谓的共识算法(或“共识机制”),主要是为了解决分布式系统中,所有节点对于数据的一致性和有效性问题而指定的一系列规则。通过类似节点投票的方式,确保分布式系统不会因为某个节点的问题(如宕机或者恶意篡改数据)导致分布式系统的数据发生安全问题。

3、传统分布式一致性算法和区块链共识算法相同点

4、传统分布式一致性算法和区块链共识算法不同点

二、共识算法的目的和价值

(一)、共识算法的目的
1、利用区块链构造基于互联网的去中心化账本,需要解决的首要问题是如何实现不同账本节点上的账本数据的一致性和正确性。

2、区块链解决了在不可信信道上传输可信信息、价值转移的问题,而共识机制解决了区块链如何在分布式场景下达成一致性的问题。

(二)、引入新的共识机制
1、当分布式的思想被提出来时,人们就开始根据FLP定理和CAP定理设计共识算法。
2、FLP定理规定:“在网络可靠、存在节点失效的异步模型系统中,不存在解决一致性问题的确定性算法”

(三)、共识算法的假设条件

1、在实际情况下,根据不同的假设条件,有很多不同的共识算法被设计出来。这些算法各有优势和局限。算法的假设条件有以下几种情况:

2、在区块链网络中,由于应用场景的不同,所设计的目标各异,不同的区块链系统采用了不同的共识算法。

(四)、共识算法及其代表产品(包括新的共识算法+传统的一致性算法)

1、PoW

2、PoS

3、DPoS

4、PBFT

5、Paxos

6、Raft

三、常用共识算法

一般比特币、莱特币使用pow算法 ,开发鼓励使用pos算法,联盟链PBFT 、私有链Paxos或者Raft算法。

(一)、PoW算法(Proof-of-Work, 工作量证明机制)

  1、工作量证明(Proof Of Work, 简称PoW), 简单理解就是一-份证明,用来确认你做过一定量的工作。

  。在比特币白皮书里,中本聪提出“工作量证明”机制,就是PoW机制。。通俗讲:比特币的工作量证明,就是我们俗称“挖矿”所做的主要工作。

  .工作量证明是矿工在处理交易数据(对数据进行哈希)的同时不断的进行哈希计算,求得一一个nonce 黄金数。当全网有一~位矿工哈希出nonce时,他就会把自己打包的区块公布出去,其他节点收到区块验证区块后就会-致性认为这个区块接到了区块链.上,就继续进行下一个区块的打包和哈希计算。

  。在这个过程中,中本聪通过算力的比拼这种简单暴力的方法把区块链系统的健壮性提升到极致,就算全网只剩下一个节点运行,这个区块链系统还是会继续运行下去。

  。PoW也充分提高了区块链系统的安全性,依靠51%攻击理论去破坏区块链系统是只有政府或者疯子才会采取的方法。

  2、PoW的优点

  . 1.完全去中心化,节点自由进出,避免了建立和维护中心化信用机构的成本。

  。2.只要网络破坏者的算力不超过网络总算力的50%,网络的交易状态就能达成一致。破坏系统花费的成本巨大

  3、PoW的缺点

  .1.目前比特币挖矿造成大量的资源浪费;

  .2.挖矿的激励机制也造成矿池算力的高度集中,背离了当初去中心化设计的初衷;。3.更大的问题是PoW机制的共识达成的周期较长,每秒只能最多做7笔交易。

(二)、PoS算法 (Proof-of-Stake,股权证明机制)

  1、PoS:也称股权证明,类似于财产储存在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。

  . PoS是一种在公链中的共识算法,可作为PoW算法的一种替换。如果简单的把PoW当作比力量大小的话,PoS就是比耐力多少。

  。PoW是保证比特币、以太坊和许多其它区块链安全的一种机制,但是PoW算法在挖矿过程中因破坏环境和浪费电力而受到指责。所以PoS试图通过以一种不同的机制取代挖矿的概念,从而解决这些问题。。PoS是根据钱包里面货币的多少以及货币在钱包里存在的天数来合成一一个单位(币天)。

  。它根据币天的关系对计算机进行哈希计算降低了难度,降低了计算机的门槛,但是对计算机还是有一定要求的,它把钱包和区块链系统的一致性绑定在一起。

  。谁的钱包里币天的数值越大谁拥有记账权的概率就越大。但是它和PoW机制一-样解决问题的思想也导致了它与PoW拥有一样的缺点,也是牺牲了-部分的共识(同样分叉),而且需要等待多个确认。. PoS机制可以被描述成一种虚 拟挖矿。

  。在PoW中,一个用户可能拿1000美元来买矿机,加入网络来挖矿产生新区块,从而得到奖励。而在PoS中,用户可以拿1000美元购买等价值的代币,把这些代币当作押金放入PoS机制中,这样用户就有机

  会产生新块而得到奖励。  王路县。在PoW中,如果用户花费2000美元购买硬件设备,当然会获得两倍算力来挖矿,从而获得两倍奖励。


  2、同样,在PoS机制中投入两倍的代币作为押金,就有两倍大的机会获得产生新区块的权利。


  2、PoS的优点

  - 对节点性能要求低,缩短了共识达成的时间(网络环境好的话可实现毫秒级) ;降低了PoW机制的资源浪费。


  3、PoS的缺点

  。1.破坏者对网络攻击的成本低,网络的安全性有待验证;

  。2.拥有代币数量大的节点获得记账权的几率更大,会使得网络的共识受少数富裕账户支配,从而失去公正性;

  。3.没有最终一 致性。 

(三)、DPoS算法(Delegated Proof of Stake,股份授权证明机制/代理股权证明机制)

1、DPoS是基于PoS衍生出的更专业的解决方案,他是类似于董事会的投票机制

2、DPoS优点

3、DPoS缺点

(四)、PBFT算法(Pracical Byzantine Fault Tolerance ,实用的拜占庭容错机制)

早期BFT由于性能太低不能在实际系统中运作,而PBFT解决了原始拜占庭容错算法效率不高的问题,将算法复杂度降低,使得其能在实际系统应用中可行;

在PBFT算法中,每个副本有三个状态: pre-prepare、 prepare、 comited; 消息也有三种: pre-prepare、prepare、 comited。

PBFT是一 种基于消息传递的一致性算法,算法经过三个阶段达成一致性,这些阶段可能因为失败而重复进行。

2、PBFT的优点

3、PBFT的缺点

(五)、Paxos算法

1、Paxos解决的是非拜占庭将军问题

  .分布式系统中根据有无恶意节点,分为拜占庭容错和非拜占庭容错机制;

  . Paxos解决的仅仅是指分布式系统中的节点存在故障,但是不存在恶意节点;

  .1998年Lamport提出Paxos算法, 后续又增加了多个改进版本的Paxos,行成了Paxos算法家族;

  . Paxos是一种基于消息传递且具有高度容错特性的一致性算法。 但是Paxos家族共同的特点是不易于工程实现。

2、Paxos被用于分布式系统中典型的例子就是Zookeeper,他是第一个被 证明的共识算法,其原理基于两阶段提交并扩展。

3、Paxos算法中将节点分为三种类型:

  . proposer:提出一一个提案,等待大家批准为结案。往往是客户端担任该角色. acceptor: 负责对提案进行投票。往往是服务端担任该角色

  learner:被告知结案结果,并与之统一,不参与投票过程。可能为客户端或服务端

  .基本过程包括proposer提出提案,先争取大多数acceptor的支持,超过一 半支持时,则发送结案结果给所有人进行确认。一个潜在的问题是proposer在此过程中出现故障,可以通过超时机制来解决。极为凑巧的情况下,每次新的一轮提案的proposer都恰好故障,系统则永远无法达成一致(概率很小)。. Paxos能保证在超过50%的正常节点存在时,系统能达成共识。

4、Paxos协议用于微信PaxosStore中,每分钟调用Paxos协议过程数十亿次量级。

(六)、Raft算法

1、Raft算法是对Paxos算法的一种简单实现。

  .Raft, 中文是救生艇的意思;

  .由于Paxos太难懂,也太难以实现,Raft算法应运而生;

  .2013年底,由斯坦福大学的Diego Ongaro和John Ousterhout发布;Raft与Paxos比, Raft更适合用来学习以及做工程实现; 

  . Raft使 用的是Log进行同步,并且将服务器分为三种角色: Leader (领导者)、Candiate (候选人)和Follower (追随者), 相互可以互相转换。

2、Raft的优点:

  .不需要代币也可以工作,实现秒级共识验证。

3、Raft的缺点:

  .去中心化程度不如Bitcoin; 

  .更适合多方参与的多中心商业模式。
上一篇 下一篇

猜你喜欢

热点阅读