常见10种区块链共识算法
共识是指多个参与者就某个特定的事务或状态达成一致的过程,而在区块链当中简单理解就是在众多节点当中选出一个节点来记账。而共识算法要解决的问题就是:如何选出这个节点?一般的共识算法是依靠节点提供“某种能力”的证明来确定,例如POW算法,是节点通过证明自己的“算力能力”并计算出一个指定要求的哈希值来获得记账的权利,下面就来介绍常见的几种共识算法。
什么是共识算法
共识是指多个参与者就某个特定的事务或状态达成一致的过程,而在区块链当中简单理解就是在众多节点当中选出一个节点来记账。而共识算法要解决的问题就是:如何选出这个节点?一般的共识算法是依靠节点提供“某种能力”的证明来确定,例如POW算法,是节点通过证明自己的“算力能力”并计算出一个指定要求的哈希值来获得记账的权利,下面就来介绍常见的几种共识算法。
常见的10种共识算法
POW
原理
POW(Proof Of Work)工作量证明共识算法因为BTC的采用,成为大家最为熟知的共识算法。其实现原理也比较简单,节点之间会约定一个hash难度值(例如需要计算出的hash小于某个指定的值),矿工通过修改待hash数据中的随机数(也可以修改交易数据)来不断尝试达到这个hash难度,如果计算出符合该难度的hash,立即进行广播,以获得该区块的记账权,并获得出块奖励。该hash计算出来需要消耗大量的算力,但是校验时却并需要。这里计算出对应hash结果就是矿工的“工作量”证明了。
优点
从区块链诞生以来就一直在被采用,安全性经过了时间的检验。
缺点
大量的算力使用导致能源的消耗,这也是POW最被人诟病的缺点。
POB
原理
POB(Proof of Burn)燃烧证明其核心理念是通过“燃烧”或永久销毁一部分加密货币来获取网络的记账权。这种方法是为了模拟挖矿活动,而不需要实际的能源消耗。用户通过将某些加密货币发送到一个不可用的地址,从而永久移除这些币的流通。这个过程被称为“燃烧”,而燃烧的币则被视作一种牺牲,以获取记账权:在POB模型中,燃烧更多货币的节点更有可能获得新增区块的记账权。这是因为他们通过燃烧币表明了对网络长期承诺的意愿和信任。
优点
与Proof of Work(工作量证明)机制相比,POB不需要大量的电力和物理硬件,因此对环境的影响较小。
缺点
它要求用户必须牺牲自己的资产,这对许多人来说是一个较大的心理障碍。
dPOW(延时工作量证明)
原理
dPoW(Delayed Proof-of-Work)延迟工作量证明最早是Komodo提出的,核心思想是通过自己的链定时向依赖的链锚定数据,通过“依赖链”的安全性来增强自己的安全性,Komodo依赖的链就是btc链。出块的过程依然是通过pow的方式,选取记账节点。但除了正常节点之外,还有64个通过社区选择的公证人节点,它们会定时将链上数据的hash“锚定”到依赖链,这样如果攻击者想攻击这条链,那么就需要连依赖链也攻击掉,这几乎是不可能的。
优点
可以通过锚定一个经过市场考验的区块链来保证自有链的安全,进一步增加自有链的安全性。
缺点
就因为需要依赖其他链,所以想着“超越”的区块链基本都不会采用该算法。
PoS
原理
POS(Proof-of-Stake)权益证明的核心是:节点通过质押代币的方式获得记账权,具体的打包节点是根据“权重”随机出的。但其具体实现会有一些细节上的不同,例如有的pos算法在选择节点计算“权重”时会考虑币龄。其他的一些方面,例如在计算区块奖励时,有的只是奖励该区块内的手续费给打包节点,有的则会加一些coinbase的奖励
优点
相较于BTC的pow算法,POS减少大量能源消耗,更加节能环保,同时速度更快。
缺点
可能会出现富者愈富的情况,导致更加的中心化趋势。不过也有一些方式避免该种情况的发生,例如:甲醛随机选择、设定奖励上限等。
DPoS
原理
DPoS(Delegated Proof of Stake,DPoS)委托权益证明是PoS的一个变种,持币者将不直接参与竞争出块的权利,而是所有的币持有者可以将他们的币用来投票,选出一定数量的代表(也被称为见证人或者是区块生产者)。这些被选中的代表负责验证和创建新的区块,而在这些区块中则是通过PoS的方式最终选出出块节点。如果任何选出的代表不能正确执行他们的职责,他们可以被其他币持有者投票下台。类似于代表大会制度,选出一部分人来参与这个会议。
优点
因为只有少部分节点参与最终的出块,那么它的速度会更快。
缺点
更少的出块节点意味着更加的中心化,这正好体现了区块链的三难困境:可扩展性、安全性和去中心化无法同时达成。
PoH
原理
PoH(Proof of History)历史证明共识算法简单理解:就是将交易的序列,通过连续的hash处理“串”起来,行成一个不可逆转的hash序列,同时该hash序列可视为代表交易的“时间戳”。PoH需要配合其他共识算法共同使用,常见的使用方式是通过dPoS选举出Leader然后使用PoH算法进行交易的处理,之后广播。
优点
使用PoH避免分布式系统中的时间戳问题,使交易速度更快。
缺点
老生常谈,速度越快中心化的程度越被人诟病。
PoA
原理
POA(Proof of Authority)权威证明共识算法,会预先选择出一部分节点作为“权威节点”,这些节点通常是特定的、可信的实体,类似于dPoS算法中选出来的代表节点,不过PoA更重视节点的“信誉”与“权威”。权威节点轮流或根据预定的规则生成新的区块。每个生成的区块都需要得到其他权威节点的验证和确认。
优点
由于权威节点是已知且可信的,交易和区块的确认过程通常非常快速,这使得POA适合需要高交易吞吐量的应用场景,也比较适合于私有链和联盟链。
缺点
同样的问题,少量的权威节点必定增加中心化的风险,同时对于权威节点的身份及可信度的监督也是一个复杂的工作。
PBFT
原理
PBFT(Practical Byzantine Fault Tolerance)是一种实用的拜占庭容错共识算法,由Miguel Castro和Barbara Liskov在1999年提出。PBFT算法旨在解决分布式系统中的拜占庭将军问题,即在一个可能存在恶意节点的分布式网络中,如何使所有诚实节点达成一致的决策。PBFT 能够容忍最多 (n-1)/3
个拜占庭(恶意或故障)节点,其中 n
是系统的总节点数。这意味着在一个有 n
个节点的系统中,最多可以有 (n-1)/3
个节点是恶意的或故障的,系统仍然能够正常运行。
PBFT 算法的基本流程可以分为以下几个阶段:
- 预准备阶段(Pre-Prepare Phase):
-
- 主节点(Primary)将客户端的请求广播给所有副本节点(Replicas),并附带一个序列号和视图编号(View Number)。
- 准备阶段(Prepare Phase):
-
- 每个副本节点在收到主节点的预准备消息后,会向其他所有副本节点广播一个准备消息,包含预准备消息的内容和自己的签名。
- 当一个副本节点收到至少
2f+1
个(其中f
是最大可容忍的拜占庭节点数)来自不同节点的准备消息时,它就会进入准备状态。
- 提交阶段(Commit Phase):
-
- 进入准备状态的副本节点会向其他所有副本节点广播一个提交消息,包含预准备消息的内容和自己的签名。
- 当一个副本节点收到至少
2f+1
个来自不同节点的提交消息时,它就会进入提交状态。
- 回复阶段(Reply Phase):
-
- 进入提交状态的副本节点会向客户端发送一个回复消息,确认请求的执行结果。
图片来源
主节点可以通过轮询或者随机的方式选出。
优点
PBFT 在正常情况下可以达到接近线性的性能,因为它只需要两轮通信就可以达成共识。PBFT 的决策是确定性的(即不会分叉),即所有诚实节点最终会达成相同的决策。
缺点
因为网络交互的复杂性(可以看到每轮交互需要所有节点之间都进行通信),导致PBFT能够支持的节点数量有限,适用于联盟链和私有链。
dPBFT
原理
类似于dPoS会从众多节点中选出一部分节点作为委员会,dPBFT的实现也是类似的,既然全节点都去做PBFT会导致效率下降(节点越多,通信复杂度越高,速度越慢),那就只选出一部分节点来做PBFT,这样即可利用PBFT的速度,同时也可以避免因节点过多导致效率变慢的问题。委员会的选举可以通过投票来选出,而一般情况下投票权的多少取决于持有多少币。
优点
避免了PBFT节点无法持续增加的问题,同时也拥有了PBFT的速度。
缺点
少量的共识节点必然意味着中心化的风险。
Tendermint-BFT
原理
Tendermint-BFT共识算法是对PBFT共识算法的改进,使其更加适配区块链的情况,同时简化算法的处理以提升共识效率。
Tendermint-BFT的共识过程分为以下三个阶段:
- 提议阶段(Propose):
领导者选举:每一轮共识中,通过一个轮转或其他确定性算法选出一个领导者。
区块提议:领导者负责构造新的区块,并将其提议发送给所有验证者。
- 预投票阶段(Pre-vote):
投票广播:验证者接收到提议的区块后进行验证。如果区块有效,验证者会广播一个预投票消息支持该区块。
搜集投票:节点收集来自超过2/3的验证者的预投票。
- 预提交阶段(Pre-commit):
广播预提交:如果节点在预投票阶段收到了超过2/3验证者的有效预投票,它会广播一个预提交消息。
确认区块:如果一个节点在此阶段收到超过2/3的预提交消息,它将在本地提交这个区块,区块获得最终确认。
改进传统PBFT方面:
Pos+BFT选举共识与主链共识的解耦合搭配
对区块施加锁机制以及PoFL,将节点绑定在一个区块的共识中防止分叉
提交nil块的投票可以省略view change流程
优点
相对于PBFT更加简洁,效率更快。
缺点
同PBFT。
共识算法的发展
随着web3的快速发展,对于区块链的性能越来越高,随之产生了越来越多的共识算法,如下图所示:
图片来源见水印
速度更快的BFT目前是发展的重点,因为其对于速度的提升是更明显的,但依然是老生常谈的问题,如何在速度与中心化之间取得平衡是选择这类算法的主要考量。
参考
[1] 盘点|一文读懂11个主流共识算法
[3] 主流共识算法
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)