共识算法研究PBFT、PoW、PoS、DPoS

科普 | 共识算法的分类(上)

— Part1 共识的分类 ——


从早期的分布式一致性算法的缓慢发展到现如今区块链共识的百花齐放,共识算法的发展已经走过了四十年左右的时光。不同的共识算法的侧重点不同,因此它们所面临的问题、环境也不一样。本文将从如下几个不同角度对共识算法进行分类:

▲容错类型


根据是否容忍拜占庭错误,可以将共识算法分为两类。

1)拜占庭容错共识算法:PBFT、PoW、PoS、DPoS

2)非拜占庭容错共识算法:Paxos、Raft

是否容忍拜占庭标志着该算法是否能够应用到低信任的网络当中。通常来说,公有链环境中必须使用拜占庭容错算法,而联盟链中可以根据联盟参与方之间的信任程度进行选择。


▲算法确定性


根据算法的确定性,可以将共识算法分为两类。

1)确定性共识算法:Paxos、Raft、PBFT

2)概率性共识算法:PoW、部分PoS

确定性共识指的是共识决策一旦达成,就不存在回退的可能性,这一类通常是传统的分布式一致性算法及其改进版本。而概率性指的是已经达成的共识决策在未来有一定的概率会被回退,虽然这个概率随着时间的推移会趋于为0,这一类通常是应用在公有链上的区块链共识算法。


▲选主策略


根据选主的策略,可以将共识算法分为两类。

1)选举类共识算法:Raft、PBFT

2)证明类共识算法:PoW、PoS

选举类共识指的是通过投票选择出块节点,同一个节点可以连续多轮作为出块节点存在,这一类通常是传统的分布式一致性算法及其改进版本。证明类共识算法指的是出块节点需要通过某种方式证明自己具备某种能力,从而获得出块权,这一类的共识算法通常每一轮的出块节点都不相同,从而保证了出块权的公平性,通常应用在公有链上。


—— Part2 非拜占庭容错共识算法 ——


Paxos

Paxos是第一个异步网络模型下能够保证正确性且容错的共识算法。在此之前,FLP明确指出在异步网络模型中,只要存在节点故障,就不可能存在一个可终止的共识算法。因此Paxos也做出了一定的牺牲:Paxos牺牲了一定的活性从而保证了系统的安全性,即在系统处于异步状态时暂停共识的推进,只要有半数以上的节点恢复至同步状态之后,就可以推进共识,完成终止。

在Paxos中,会存在一个或者多个节点同时想要竞选成为协调者(也叫做提案者Proposer),而每一轮共识最终只会选出一个Proposer进行最终提案值的选择。Proposer提出一个决策值,并收集其他参与者节点(也叫做接受者Acceptor)的投票。最终,Proposer会宣布选定的最终决策值。如果能够达成一个最终决策的话,该决策值会被传递到对此感兴趣的节点(也叫做学习者Learner)中。可以看出,Paxos是一个保证了公平性的算法,即所有节点都可以竞选成为Proposer,没有哪个节点拥有特殊的权利。


图1.Basic Paxos共识流程

Paxos在一定程度上给出了一种异步网络下分布式一致性问题的解决范式,但是它本身的算法过于晦涩难懂,以至于Lamport本人也在Paxos发表之后又写了一篇论文[1]来重新解释Paxos的流程。同时,一个Paxos算法的正确实现也被证实是非常有难度的挑战,有兴趣的读者也可以阅读Google的实践论文[2]来理解实现过程中的一些权衡与考量。


Raft


Paxos诚然是一个非常有影响力的共识算法,可以说奠定了分布式一致性算法的基础,但是由于其难以理解以及实现难度非常之大,想要实现一个完整的Paxos算法非常的困难。因此,出现了非常多的Paxos变体,其中最著名的当属Raft共识算法。

Raft是一种用来管理日志复制的一致性算法,旨在易于理解。它具备了Paxos的容错性和性能,不同之处在于它将一致性问题分解为相对独立的三子问题,分别是领导选取(leader election)日志复制(log replication)安全性(safety)。这使得Raft更好理解并且更容易应用到实际系统的建立中。

在Raft中,每一个节点一定会处于以下三种状态中的一个:Leader(主节点)、Candidate(候选节点)、Follower(从节点)。在正常情况下,只有一个节点是Leader,剩下的节点是Follower。Leader负责处理所有来自客户端的请求(如果一个客户端与Follower进行通信,Follower会将信息转发给Leader),生成日志数据(对应在区块链中即负责打包)并广播给Follower节点。Follower是被动的:他们不会主动发送任何请求,只能单向接收从Leader发来的日志数据。Candidate是在选举下一任Leader的过程中出现的过渡状态,任何一个节点在发现主节点故障之后都可以成为Candidate并竞选成为Leader。

Raft算法将时间划分成为任意不同长度的term(任期)。任期用连续的数字进行表示。每一个任期的开始都是一次选举。如果一个Candidate赢得了选举,它就会在该任期的剩余时间担任Leader。在某些情况下,选票会被瓜分,有可能没有选出Leader,那么,另一个任期将会开始,并且立刻开始下一次选举。

每一台服务器都存储着一个数字作为当前任期的编号,这个数字单调递增。当节点之间进行通信时,会互相交换当前任期号,若一个节点的当前任期号比其它节点的小,则会更新为较大的任期号。如果一个Candidate或者Leader意识到它的任期号过时了,就会立刻转换为Follower状态。当一个节点收到过时任期号的请求,就会直接拒绝这次请求。


图2.Raft共识流程


总结


Paxos和Raft都是故障容错(Crash Fault Tolerance)共识,是非拜占庭问题的容错技术。非拜占庭是指分布式的系统中存在故障(crash fault),但不存在恶意(corrupt)节点的场景(即可能消息丢失或重复,但无错误消息)下的共识达成问题,是分布式共识领域最为常见的问题。相比较于Paxos,Raft更为简洁,同时可以保证同等的容错能力和性能。


—— Part3 概率性共识算法 ——


PoW

工作量证明(Proof of Work,PoW)最早在1993年由Cynthia Dwork与Moni Naor在学术论文[3]中提及,并于同年由Markus Jakobsson与Ari Juels正式提出了“工作量证明”这个概念[4]。起初,PoW主要用于防止垃圾邮件的产生。2008年,PoW作为共识算法应用在比特币系统中。PoW有以下3个基本属性:

1)数学难题:PoW共识算法设计了一个数学难题(Mathematical Puzzle),要求节点在生成新区块之前,需要消耗一定的计算资源才能获得难题的解,从而将区块广播到网络,并且其他节点可以轻易验证这个解的有效性。

2)哈希算法:哈希算法(Hash Algorithm)是一种能够把任意长度的输入变换成固定长度的输出的算法,可被记为y = hash(x),不同的输入x得到的输出y各不相同。除此之外,在已知x时可以快速计算得到y,但是在已知y的情况下,通常只能通过穷举法才能逆推出x。由于哈希算法具有正向快速、逆向困难的特性,常使用哈希算法来设计PoW的数学难题。

3)生成区块:在一轮区块生成中,系统通过对输出值设定条件来调整数学问题的难度值,节点在成功解出问题并通过验证上链后,将会获得相应的奖励。

在生成新的区块之前,PoW会预设目标值,要求出块节点计算出的哈希值小于该目标值,以此来表示PoW的难度。为了生成区块并获得奖励,出块节点首先收集一组交易打包成一个区块,并开始尝试解决数学问题进行出块。

在此期间,出块节点需要生成随机数,同当前区块数据与前一个区块的哈希进行多轮哈希运算,计算当前区块的哈希值:


直到当前区块哈希满足条件:


此时的nonce即为本次数学问题的答案,出块节点将当前区块的哈希、nonce值、前一个区块的哈希作为区块头部数据加入当前区块,如图3所示。然后将该区块广播到区块链网络中,等待验证通过后,出块节点就可以取到相应的奖励。


图3.PoW区块结构表示


PoS


前面提到的工作量证明共识算法,就是通过算力来争夺“领导者”的资格,但是工作量证明过程中的大量资源浪费,导致其很难被更大规模的应用接受。对此,有人开始尝试直接使用“股权(Stake)”作为标准进行“领导者”资格的竞选,并随之产生了权益证明(Proof of Stake,PoS)共识算法。

PoS的思想来源于社会:一个人拥有的股份量越多,其获得的股息和分红就会越高。如果区块链系统也采用这种方法进行维护,不需要过多的资源消耗,也能够使得区块链资产有自然的通胀。节点通过投入一定量的通证参与共识,根据通证持有情况获得打包新区块的权利并获得奖励。目前,以太坊也有转向PoS的以太坊2.0计划。

为了描述通证持有情况,PoS共识算法引入了“币龄”的概念。币龄(Coin-age)表示节点持有部分通证的时长,当节点将通证作为“股份”投入后,这部分通证就开始积累币龄,币龄的计算方式如下:


在使用了这部分通证后,无论是用来进行区块生成或者简单的交易,这部分通证对应的币龄将被销毁。在最初的PoS共识算法中,币龄是进行评判的重要标准,节点在区块生成时所使用的币龄越高就越容易产生区块,这可以在一定程度上制约短期投机行为。

PoS共识算法在进行区块生成时,将同时考虑币龄与哈希运算难度,使得节点只需要消耗很少的计算资源就可以完成区块生成。

DPoS

委托权益证明(Delegated Proof of Stake,DPoS)共识算法[5]中,选举人通过选举产生代表,由代表进行直接的区块产生,选举人通过选举代表人间接行使竞争出块的权利。委托权益证明共识算法,实际上就是通过一系列选拔规则对候选人进行制约,并制定一套投票规则。普通参与者通过投票的方式从候选者中选拔出委托人,并由委托人进行出块,不满足要求的委托人将会被取消权限,并重新选举产生新的委托人。

DPoS保留了一定的中心化特性,因此能够保证高效率的交易吞吐,速率可以比肩常见的中心化机构,例如Visa、Mastercard等。在该算法中,去中心化的特性主要体现在对于生成区块的权利可控。即股东通过投票,选择自己信任的代表节点,并由代表节点进行区块链数据的维护。

—— Part4 总结 ——

上述提到的共识算法大多用于公链场景,比如比特币,以太坊等,由于公链场景下节点规模庞大,因此较难采用确定性的分布式一致性算法。PoW通过工作量证明的方式来达到较高的安全性以及去中心化程度,相较于PoW,PoS牺牲了一定的安全性来降低能源消耗,而DPoS以更为激进的方式,选举出较少节点来提升共识效率。

在企业级场景下,节点数量不会非常多,但是对于交易吞吐量以及最终确定性要求较高,因此常用联盟链方式来进行建设,从而满足企业级需求。在实际应用场景中,由于拜占庭容错问题,常会使用PBFT及其变体拜占庭容错类共识算法。



内容错误性是一种技术

它能够帮助计算机系统去排除可能的错误,有助于提高系统的可靠性。在物理世界中可能发生的意外都是难以预料的,如:多个可能的输入和输出,硬件故障或软件故障等,因此出现一种内容错误校正技术来协调各个系统的可靠性和可用性。


对于区块链行业来讲,内容错误性也是至关重要的。由于区块链技术对数据的一致性要求比较高,将区块链网络中的可能的计算机系统错误减少到最低,可以确保数据准确性和可靠性。而内容错误校正技术就是提升区块链的数据一致性的有效手段。

内容错误校正技术在普适计算领域的应用已经比较成熟,像Google、Apple和微软等计算机厂商等也均在使用以提高其自身服务的可靠性、一致性和可信度。在区块链行业中,内容错误校正技术能够提供协调智能合约和网络运行中可能出现的错误,以及提供可靠数据库灵活性和可信任性所需的技术。

例如,区块链平台上可能常常出现的类似交易费用余额不足,内容错误校正技术可以检测和处理这样的错误,针对相应的资金池作出及时的调整;另外,一些重要的智能合约也可以利用内容错误校正技术来确保交易的可用性和有效性,有效的降低有无数据容错性的风险。

综上所述,可以看出,内容错误校正技术对于区块链行业是至关重要的,它能够确保整个区块链网络的可靠性和可用性,并且能够有效的降低有无数据容错性的可能发生的风险,为区块链行业的未来发展提供技术保障。

容错性 对区块链行业有帮助吗?

24小时热点

988pay虚拟钱包使用指南分享

988pay虚拟钱包被称为数字货币钱包或者是区块链钱包,方便 ...

657985

波场区块链浏览器

科普区块链:Wallet 钱包

区块链钱包(Wallet)是区块链系统中的一种存储数字货币和 ...

27968

QuillAudits

解读数字钱包风控多久解除 数字货币账户冻结的申诉步骤

数字货币钱包封控的解除时间并不是固定不变的,这个时间取决于封 ...

419576

区块链圈小菜鸡

深入解析哈希运算是什么技术?哈希运算的工作原理

哈希运算也称为散列算法或哈希算法,是一种将任意长度的输入(也 ...

3062

区块链圈小菜鸡

盘点区块链电商平台有哪些,数字货币的发展趋势

区块链技术不断成熟,数字货币被广泛接受,越来越多的电商平台开 ...

20913

波场区块链浏览器

ELE币(Elementrem)在中国被禁止了吗? ELE币是否合法?

截至目前为止,ELE币(Elementrem)在中国并没有被 ...

5019

区块链网快讯

bitfoliex钱包进不去了 bitfoliex钱包登录不进的解决办法

bitfoliex钱包是一款数字货币钱包,该钱包为用户提供便 ...

16045

波场区块链浏览器

什么是数字社会?数字社会是如何形成的?

数字社会是新型社会中瞬息万变的核心极限,是信息技术发展下新兴 ...

79541

Solanat

永续合约可以随时卖出吗?永续合约交易技巧有哪些?

永续合约是可以随时卖出的,永续合约与传统交割合约相比,最大的 ...

5837

区块链圈小菜鸡

IOG币(Playgroundz)挖矿什么意思? IOG币挖矿解读

IOG币是Playgroundz项目的加密货币,挖矿是指通过 ...

6301

区块链网快讯

热点专题

区块链网是什么

中国区块链价值评价中心 中国区块链价值评价中心于2 ...

5292806

知信链

免费的行情软件app网站在国外有哪些?

区块链看行情的软件,简而言之,就是一类能够实时提供数字货币行 ...

2377018

波场区块链浏览器

雷达币最新进展:2024年主网上线时间及前景预测

近期有传闻称,新加坡的加密货币交易所推出了一款雷达币,这款被 ...

1827508

波场区块链浏览器

2024年最新十大不收费看盘软件排名公布

随着股市交易的普及和技术的发展,投资者对高效、可靠且免费的看 ...

1125849

波场区块链浏览器

元界(Metaverse)

元界(Metaverse)是一个去中心化的公有区块链项目,元 ...

992187

WEEX数字货币

BTC123

BTC123(www.btc123.com)成立于2011年 ...

839225

Kusama 测试网

最全传销名单,请告诉家人朋友,别让他们上当受骗后赔到血本无归

因为互联网的发展,让现代传销具备了更强的隐蔽性,更让社会经验 ...

785641

律动 BlockBeats

中币网zb——中币交易所

ZB.com是一个全球化的数字货币交易所,目前已获得泰国和迪 ...

751221

中币交易所

Bitfinex(香港B网)

Bitfinex交易平台目前仍处于试运营阶段,该平台由iFi ...

722733

Hi元宇宙

DAC币——达芬奇Davinci Coin

达芬奇项目的平台是通过叫作"Dchain"的自身区块链把可以 ...

715222

Mechanism Capital