好好学习,天天向上

  • 后端开发
    • Rust
  • 区块链
    • BTC
    • Layer2
  • 经济投资
  • 文学创作
    • 哲学思考
    • 随笔
HhxxTtxs
人生到处知何似,应似飞鸿踏雪泥。
  1. 首页
  2. 区块链
  3. 正文

常见10种区块链共识算法

20 7 月, 2024 357点热度 0人点赞 0条评论
内容 隐藏
1 什么是共识算法
2 常见的10种共识算法
2.1 POW
2.1.1 原理
2.1.2 优点
2.1.3 缺点
2.2 POB
2.2.1 原理
2.2.2 优点
2.2.3 缺点
2.3 dPOW(延时工作量证明)
2.3.1 原理
2.3.2 优点
2.3.3 缺点
2.4 PoS
2.4.1 原理
2.4.2 优点
2.4.3 缺点
2.5 DPoS
2.5.1 原理
2.5.2 优点
2.5.3 缺点
2.6 PoH
2.6.1 原理
2.6.2 优点
2.6.3 缺点
2.7 PoA
2.7.1 原理
2.7.2 优点
2.7.3 缺点
2.8 PBFT
2.8.1 原理
2.8.2 优点
2.8.3 缺点
2.9 dPBFT
2.9.1 原理
2.9.2 优点
2.9.3 缺点
2.10 Tendermint-BFT
2.10.1 原理
2.10.2 优点
2.10.3 缺点
3 共识算法的发展
4 参考

什么是共识算法

共识是指多个参与者就某个特定的事务或状态达成一致的过程,而在区块链当中简单理解就是在众多节点当中选出一个节点来记账。而共识算法要解决的问题就是:如何选出这个节点?一般的共识算法是依靠节点提供“某种能力”的证明来确定,例如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 算法的基本流程可以分为以下几个阶段:

  1. 预准备阶段(Pre-Prepare Phase):
    • 主节点(Primary)将客户端的请求广播给所有副本节点(Replicas),并附带一个序列号和视图编号(View Number)。
  1. 准备阶段(Prepare Phase):
    • 每个副本节点在收到主节点的预准备消息后,会向其他所有副本节点广播一个准备消息,包含预准备消息的内容和自己的签名。
    • 当一个副本节点收到至少 2f+1 个(其中 f 是最大可容忍的拜占庭节点数)来自不同节点的准备消息时,它就会进入准备状态。
  1. 提交阶段(Commit Phase):
    • 进入准备状态的副本节点会向其他所有副本节点广播一个提交消息,包含预准备消息的内容和自己的签名。
    • 当一个副本节点收到至少 2f+1 个来自不同节点的提交消息时,它就会进入提交状态。
  1. 回复阶段(Reply Phase):
    • 进入提交状态的副本节点会向客户端发送一个回复消息,确认请求的执行结果。

图片来源

主节点可以通过轮询或者随机的方式选出。

优点

PBFT 在正常情况下可以达到接近线性的性能,因为它只需要两轮通信就可以达成共识。PBFT 的决策是确定性的(即不会分叉),即所有诚实节点最终会达成相同的决策。

缺点

因为网络交互的复杂性(可以看到每轮交互需要所有节点之间都进行通信),导致PBFT能够支持的节点数量有限,适用于联盟链和私有链。

dPBFT

原理

类似于dPoS会从众多节点中选出一部分节点作为委员会,dPBFT的实现也是类似的,既然全节点都去做PBFT会导致效率下降(节点越多,通信复杂度越高,速度越慢),那就只选出一部分节点来做PBFT,这样即可利用PBFT的速度,同时也可以避免因节点过多导致效率变慢的问题。委员会的选举可以通过投票来选出,而一般情况下投票权的多少取决于持有多少币。

优点

避免了PBFT节点无法持续增加的问题,同时也拥有了PBFT的速度。

缺点

少量的共识节点必然意味着中心化的风险。

Tendermint-BFT

原理

Tendermint-BFT共识算法是对PBFT共识算法的改进,使其更加适配区块链的情况,同时简化算法的处理以提升共识效率。

Tendermint-BFT的共识过程分为以下三个阶段:

  1. 提议阶段(Propose):

领导者选举:每一轮共识中,通过一个轮转或其他确定性算法选出一个领导者。

区块提议:领导者负责构造新的区块,并将其提议发送给所有验证者。

  1. 预投票阶段(Pre-vote):

投票广播:验证者接收到提议的区块后进行验证。如果区块有效,验证者会广播一个预投票消息支持该区块。

搜集投票:节点收集来自超过2/3的验证者的预投票。

  1. 预提交阶段(Pre-commit):

广播预提交:如果节点在预投票阶段收到了超过2/3验证者的有效预投票,它会广播一个预提交消息。

确认区块:如果一个节点在此阶段收到超过2/3的预提交消息,它将在本地提交这个区块,区块获得最终确认。

改进传统PBFT方面:

Pos+BFT选举共识与主链共识的解耦合搭配

对区块施加锁机制以及PoFL,将节点绑定在一个区块的共识中防止分叉

提交nil块的投票可以省略view change流程

优点

相对于PBFT更加简洁,效率更快。

缺点

同PBFT。

共识算法的发展

随着web3的快速发展,对于区块链的性能越来越高,随之产生了越来越多的共识算法,如下图所示:

图片来源见水印

速度更快的BFT目前是发展的重点,因为其对于速度的提升是更明显的,但依然是老生常谈的问题,如何在速度与中心化之间取得平衡是选择这类算法的主要考量。

参考

[1] 盘点|一文读懂11个主流共识算法

[2] 一文看懂共识机制和 11 个主流共识算法

[3] 主流共识算法

[4] Tendermint-2-共识算法:Tendermint-BFT详解

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: 区块链 链开发
最后更新:20 7 月, 2024

hhxxttxs

五年服务端开发,现专职区块链,偏零知识Layer2工程方向

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

Archives

  • 2026 年 2 月
  • 2025 年 9 月
  • 2025 年 8 月
  • 2025 年 7 月
  • 2025 年 1 月
  • 2024 年 9 月
  • 2024 年 8 月
  • 2024 年 7 月
  • 2024 年 6 月
  • 2024 年 5 月
  • 2024 年 4 月
  • 2024 年 3 月

Categories

  • BTC
  • cuda
  • L2
  • rust
  • 其他
  • 区块链
  • 后端开发
  • 哲学思考
  • 文学创作
  • 算法
  • 经济投资
  • 链开发
  • 零知识

COPYRIGHT © 2024 好好学习,天天向上. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang