区块链知识-共识与分叉付少庆2018-04目录CONTENTS1共识机制的相关知识2常见的共识算法3是否有完美的共识机制?456软分叉与硬分叉Q&APPT内容提示本PPT讲解区块链领域的共识机制。主要面向所有区块链领域的技术人员。特别是期望在应用中需要了解共识机制的人员。……区块链中的比喻:共识机制是区块链的灵魂核心、密码算法是区块链的骨骼。相关的区块链知识请参考我们的一系列培训PPT共识机制的相关知识1共识机制的相关知识共识机制区块链作为一种按时间顺序存储数据的数据结构,可支持不同的共识机制。共识机制是区块链技术的重要组件。区块链共识机制的目标是使所有的诚实节点保存一致的区块链视图,同时满足两个性质:1)一致性。所有诚实节点保存的区块链的前缀部分完全相同。2)有效性。由某诚实节点发布的信息终将被其他所有诚实节点记录在自己的区块链中。共识(Consensus)共识机制密码算法区块链的骨骼区块链的灵魂核心共识机制的相关知识CAP定律CAP原则又称CAP定理,指的是在一个分布式系统中三者不可兼得。Consistency(一致性)Availability(可用性)Partitiontolerance(分区容错性)分布式系统的CAP理论:理论首先把分布式系统中的三个特性进行了如下归纳:一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。共识机制的相关知识几种生活中的共识机制顾名思义,“共识”的核心是共同认可,它的反面就是有分歧。分歧依靠和相信科学尊重客观事实投票仲裁竞争权威命令核心共同认可共识机制的相关知识从以下4个维度评价各共识机制的技术水平:1)安全性。即是否可以防止二次支付、自私挖矿等攻击,是否有良好的容错能力。2)扩展性。即是否支持网络节点扩展。扩展性是区块链设计要考虑的关键因素之一。3)性能效率。目队交易达成共识被记录在区块链中至被最终确认的时间延迟,也可以理解为系统每秒可处理确认的交易数量。4)资源消耗。即在达成共识的过程中,系统所要耗费的计算资源大小,包括CPU、内存等。区块链上的共识机制借助计算资源或者网络通信资源达成共识。技术水平安全性扩展性性能效率资源消耗共识机制的相关知识达成共识越分散的过程,其效率就越低,但满意度越高,因此也越稳定;相反,达成共识越集中的过程,效率越高,也越容易出现独裁和腐败现象。达成共识常用的一种方法就是通过物质上的激励以对某个事件达成共识;但是这种共识存在的问题就是容易被外界其它更大的物质激励所破坏。对共识机制的总结常见的共识算法2常见的共识算法这类算法性能较高,但容错性较差,如Paxos、Raft等。针对非拜占庭错误的这类算法往往容错性较高,但是性能相对较差,包括工作量证明(POW)、权益证明(POS)、股份授权证明(DPOS)、实用拜占庭容错算法(PBFT)等。针对拜占庭错误的处理的异常情况不同的分布式系统,由于其故障类型不同,因此采用的共识算法也不同。根据处理的异常情况不同,同样可以分为两种类型常见的共识算法一种是通过提高作恶节点的成本以降低作恶节点出现的概率,如工作量证明、权益证明等,其中工作量证明是通过算力,而权益证明则是通过持有权益。另外一种是在允许一定的作恶节点出现的前提下,依然使得各节点之间达成一致性,如实用拜占庭容错算法等。思路处理拜占庭错误的算法有两种思路POW工作量证明机制英文ProofofWork简称POW,简单的说就是可以证明你付出了多少工作量的证明。在比特币网络中,要想得到比特币就需要先利用自己服务器的算力抢夺记账权,等记账权抢到手之后,矿工还有个工作就是要把10分钟内发生的所有交易记录按照时间的顺序记录在账本上,然后同步给这个网络上的所有用户。矿工付出劳动抢记账权和记录交易,并且这个劳动也在全网得到大家的认可,达成了共识的机制。ProofofWork(PoW)的机制来实现共识,该机制于1998年在B-money设计中提出。使用PoW的项目有:比特币、以太坊的前三个阶段(Frontier前沿、Homestead家园、Metropolis大都会)。以太坊的第四个阶段Serenity宁静将采用权益证明机制(POS)。常见的共识算法POW工作量证明机制1)去中心化,将记账权公平的分派到其他节点。你能够获得的币的数量,取决于你挖矿贡献的有效工作。2)安全性高,破坏系统需要投入极大的成本,如果想作弊,要有压倒大多数人的算力(51%攻击)。优点缺点1)挖矿造成大量的资源浪费,目前bitcoin已经吸引全球大部分的算力,其它再用Pow共识机制的区块链应用很难获得相同的算力来保障自身的安全。2)网络性能太低,需要等待多个确认,容易产生分叉,区块的确认共识达成的周期较长(10分钟),现在每秒交易量上限是7笔。3)PoW共识算法算力集中化,慢慢的偏离了原来的去中心化轨道。从比特币扩容之争可以看到,算力高的大型矿池是主人,而持币的人没有参与决定的权利,比特币分叉出很多儿子,即将失去“去中心化”的标签。常见的共识算法POS权益证明机制英文ProofofStake简称POS权益证明与要求证明人执行一定量的计算工作不同,权益证明要求证明人提供一定数量加密货币的所有权即可。它将PoW中的算力改为系统权益,拥有权益越大则成为下一个记账人的概率越大。这种机制的优点是不像Pow那么费电。一句话介绍:持有越多,获得越多。权益证明(ProofofStake,简称PoS)由QuantumMechanic2011年在比特币论坛讲座上首先提出,后经Peercoin(点点币)和NXT(未来币)以不同思路实现。常见的共识算法POS权益证明机制1)在一定程度上缩短了共识达成的时间。2)不再需要大量消耗能源挖矿。优点缺点1)还是需要挖矿,本质上没有解决商业应用的痛点;2)所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。例如,以太坊的DAO攻击事件造成以太坊硬分叉,而ETC由此事件出现,事实上证明了此次硬分叉的失败。3)极端的情况下会带来中心化的结果。PoS机制由股东自己保证安全,工作原理是利益捆绑。在这个模式下,不持有PoS的人无法对PoS构成威胁。PoS的安全取决于持有者,和其他任何因素无关。常见的共识算法DPOS股份授权证明机制DelegatedProofofStakeDPoS在PoS的基础上,将记账人的角色专业化,先通过权益来选出记账人,然后记账人之间再轮流记账。这种方式依然没有解决最终性问题。类似于董事会投票,持币者投出一定数量的节点,代理他们进行验证和记账。BitShares(比特股)社区首先提出了股份授权证明(简称DPoS)机制,它与PoS的主要区别在于节点选举若干代理人,由代理人验证和记账,但其合规监管、性能、资源消耗和容错性与PoS相似。类似于董事会投票,持币者投出一定数量的节点,进行代理验证和记账。例子:BitShares,Steem,EOS常见的共识算法DPOS股份授权证明机制大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。优点缺点整个共识机制还是依赖于代币,而很多商业应用是不需要代币的。常见的共识算法PBFT拜占庭容错共识机制PBFT是英文PracticalByzantineFaultTolerance的缩写,意为实用拜占庭容错共识机制。PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。同所有的状态机副本复制技术一样,PBFT对每个副本节点提出了两个限定条件:(1)所有节点必须是确定性的。也就是说,在给定状态和参数相同的情况下,操作执行的结果必须相同;(2)所有节点必须从相同的状态开始执行。在这两个限定条件下,即使失效的副本节点存在,PBFT算法对所有非失效副本节点的请求执行总顺序达成一致,从而保证安全性。例子:布萌区块链常见的共识算法PBFT拜占庭容错共识机制1)系统运转可以脱离币的存在,pbft算法共识各节点由业务的参与方或者监管方组成,安全性与稳定性由业务相关方保证。2)共识的时延大约在2~5秒钟,基本达到商用实时处理的要求。3)共识效率高,可满足高频交易量的需求。优点缺点1)当有1/3或以上记账人停止工作后,系统将无法提供服务;2)当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据常见的共识算法DBFT授权拜占庭容错delegatedBFT由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识。DBFT机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。2016年4月,小蚁公司发布共识算法白皮书,描述了一种通用共识机制——授权拜占庭容错,提出了一种改进的拜占庭容错算法,使其能够适用于区块链系统。授权拜占庭容错算法在使用拜占庭容错算法的基础上,进行了以下改进:将C/S架构的请求响应模式改进为适合P2P网络的对等节点模式;将静态的共识参与节点改进为可动态进入、退出的共识参与节点;为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点(记账节点);在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。常见的共识算法DBFT授权拜占庭容错专业化的记账人;可以容忍任何类型的错误;记账由多人协同完成;每一个区块都有最终性,不会分叉;算法的可靠性有严格的数字证明。优点缺点当1/3及以上的记账人停止工作后,系统将无法提供服务;当1/3及以上的记账人联合作恶,且其他所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据。例子:NEO常见的共识算法PoI重要度证明共识算法PoI(ProofofImportance)重要度证明共识算法引了账户重要程度的概念,使用账户重要性评分来分配记账权的概率。优点缺点低能耗,速度快,公平缺少社区共识,账户重要性≠设备贡献度常见的共识算法POP算法POP(ProofofParticipation)算法,POP将POI和DPOS的思想结合基本原理这是标准链(CZR)的创新,基于账户参与度的PoP(ProofofParticipation)算法,POP将POI和DPOS的思想结合,既能确保对设备的公平性,又拥有社区的共识。优点低功耗、速度更快,更加安全,既能确保公平性,又拥有社区的共识。常见的共识算法PAXOS共识机制PAXOS是个分布式一致性协议,它的事件需要多个节点共同参与,一个事件完成是指多个节点上均完成了自身负责的单机子事件(把这样的事件称为分布式事件),这样的分布式事件可以看作是多个单机子事件的复合,但是即不能从两个分布式事件的先后推导出某个节点上它们的单机子事件的先后,也不能根据某个节点上两个单机子事件的先后断言它们对应的分布式事件的先后。PAXOS算法是分布式技术大师Lamport提出的,主要目的是通过这个共识机制让参与分布式处理的每个参与者逐步达成一致意见,简单的说就是在一个选举过程中,让不同的选民最终做出一致性的决定。这个应用应该很受参与美国总统大选人选的欢迎吧。常见的共识算法PAXOS共识机制1998年Lamport提出Paxos算法,后续又增添多个改进版本的Paxos形成Paxos协议家族,且Paxos都有共同点是不容易工程实现。ClassicPaxos:LeaderLess,又名BasicPaxos,以下均为Pax