共识算法之争(PBFT,Raft,PoW,PoS,DPoS)

文章目录

  • 共识算法
    • [拜占庭容错技术(Byzantine Fault Tolerance,BFT)](#拜占庭容错技术(Byzantine Fault Tolerance,BFT))
    • [PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法](#PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法)
    • Raft协议
    • [POW(Proof of Work)工作量证明机制](#POW(Proof of Work)工作量证明机制)
    • POS
    • [DPoS(Delegated Proof of Stake)委托股权证明](#DPoS(Delegated Proof of Stake)委托股权证明)
    • [PoA(Proof of Authority,权威证明)共识](#PoA(Proof of Authority,权威证明)共识)
    • 总结
  • 参考

共识算法

在区块链系统中,如何让每个节点通过一个规则将各自的数据保持一致是一个很核心的问题,这个问题的解决方案就是制定一套共识算法,实现不同账本节点上的账本数据的一致性和正确性。

所谓共识,简单理解就是指大家都达成一致的意思。

PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)、PoW(Proof of Work,工作量证明)、PoS(Proof of Stake,权益证明)、DPoS(Delegate Proof of Stake,委托权益证明)

Proof of Work:算力竞争

Proof of Stake:财力竞争

Proof of Authority:身份荣誉。以身份荣誉背书。

拜占庭容错技术(Byzantine Fault Tolerance,BFT)

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

原始的拜占庭容错系统由于需要展示其理论上的可行性而缺乏实用性。另外,还需要额外的时钟同步机制支持,算法的复杂度也是随节点增加而指数级增加。

PBFT:Practical Byzantine Fault Tolerance,实用拜占庭容错算法

实用拜占庭容错系统(PBFT)降低了拜占庭协议的运行复杂度,从指数级别降低到多项式级别(Polynomial),使拜占庭协议在分布式系统中应用成为可能。

PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,通常假设故障节点数为m个,整个服务节点数为|R|=3m+1个,这里m是有可能失效的副本的最大个数。尽管可以存在多于3m+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。

PBFT要求共同维护一个状态,所有节点采取的行动一致。为此,需要运行三类基本协议,包括一致性协议、检查点协议和视图更换协议。我们主要关注支持系统日常运行的一致性协议。一致性协议至少包含若干个阶段:请求(request)、序号分配(pre-prepare)和响应(reply)。根据协议设计的不同,可能包含相互交互(prepare),序号确认(commit)等阶段。

Raft协议

在这些分布式系统的实用场景下,其假设条件不需要考虑拜占庭故障,而只是处理一般的死机故障。 在这种情况下,采用Raft协议、Paxos等协议会更加高效。Paxos是Lamport设计的保持分布式系统一致性的协议。但由于Paxos非常复杂,比较难以理解,因此后来出现了各种不同的实现和变种。Raft是由Stanford提出的一种更易理解的一致性算法,意在取代目前广为使用的Paxos算法。 目前,在各种主流语言中都有了一些开源实现。

Raft最初是一个用于管理复制日志的共识算法,它是一个为真实世界应用建立的协议,主要注重协议的落地性和可理解性。Raft是在非拜占庭故障下达成共识的强一致协议。

POW(Proof of Work)工作量证明机制

基本原理:第一代共识机制,比特币的基础。理解起来,很简单,就是"按劳取酬",你付出多少工作量,就会获得多少报酬(比特币等加密货币)。在网络世界里,这里的劳动就是你为网络提供的计算服务(算力x时长),提供这种服务的过程就是"挖矿"。假如是真的矿场,显然在均匀分布的前提下,人们"挖矿"所得的比重与各自提供的算力成正比,通俗一点就是,能力越强获得越多。

缺点:

算力是计算机硬件(CPU、GPU等)提供的,要耗费电力,是对能源的直接消耗,与人类追求节能、清洁、环保的理念相悖。

这种机制发展到今天,算力的提供已经不再是单纯的CPU了,而是逐步发展到GPU、FPGA,乃至ASIC矿机。用户也从个人挖矿发展到大的矿池、矿场,算力集中越来越明显。这与去中心化的方向背道而驰,渐行渐远,网络的安全逐渐受到威胁。有证据证明Ghash(一个矿池)就曾经对赌博网站实施了双花攻击(简单的说就是一笔钱花两次)。

比特币区块奖励每4年将减半,当挖矿的成本高于挖矿收益时,人们挖矿的积极性降低,会有大量算力减少,比特币网络的安全性进一步堪忧。

POS

DPoS(Delegated Proof of Stake)委托股权证明

什么是DPoS共识机制

参考URL: https://zhuanlan.zhihu.com/p/69649110

DPoS共识机制_委托股权证明_LoomNetwork

参考URL: http://www.tucaod.com/2721.html

delegate

美: ['deləɡət]

英: ['deləɡət]

v. 委托;派...做代表

n. 代表;(众议院中准州地区的)代表;〈美〉众议院议员

网络 授予;授权;授与

委托股权证明(DPoS)------它是PoS的一种变体,以限制网络上验证者的数量为代价,提供高级别的可扩展性。

由于区块生产者数量较少,DPoS是一种为了吞吐量牺牲去中心性的协议。

DPoS是一个系统,其中固定数量的选定实体(称之为区块生产者或见证人)被挑选来以循环顺序创建区块。

区块生产者由网络用户投票决定,他们每个人都得到与他们在网络上拥有的代币数量(他们的股份)成正比的选票。

或者,选民可以选择将他们的股权委托给另一名选民,被委托的选民将代表他们投票选举区块生产者。

PoA(Proof of Authority,权威证明)共识

PoA是一种基于身份验证的共识算法,需要节点提供身份证明才能参与共识过程。它适用于私有链和联盟链,能够提供高效的共识和更好的性能。

权威证明共识(又称PoA共识)规定,节点只有被授权以后才能参与区块链共识。一旦被授权之后,共识节点享有公平的记账权利。

在 PoA 中,负责处理交易和验证区块的验证人,必须经过一系列的审查,必须要保证自身的可靠性。

相比之下,PoA相对于传统的PoW、PoS、DPoS等共识算法,更适合在私有链和联盟链中使用,因为它更注重高效性和可控性,对节点的身份和权限有明确的要求,适合一些特定的商业场景和应用需求。

总结

  • POW 工作量证明机制,类似于按劳分配。
  • POS 股权证明机制。 持有股票的人,就有对应的权利,持有的越多,权利越大 。
  • DPOS 授权股权证明机制。类似于董事会, 董事会成员数量有限,,由大家选举产生, 被选中的董事会成员可以行使权利。
  • PBFT这是一种基于消息传递的一致性算法,算法经过三个阶段 预准备(pre-prepare)、准备(prepare)和确认(commit)达成一致性,这些阶段可能因为失败而重复进行。

从机制设计上来看. POW 机制更加强调去中心, 更加强调对等.。而DPOS 则是有一个明显的中心, 通过带来部分中心,来得到效率的提升。

参考

浅谈共识机制(POW、POS、DPOS、PBFT及POP)

参考URL: https://blog.csdn.net/q282176713/article/details/81287144

[区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)

参考URL: https://www.lastupdate.net/16610.html

DPOS机制是什么?它和POW、POS的区别是什么?

参考URL: https://baijiahao.baidu.com/s?id=1603870079950594911\&wfr=spider\&for=pc

【推荐阅读】[区块链] 共识算法之争(PBFT,Raft,PoW,PoS,DPoS,Ripple)

参考URL: https://www.lastupdate.net/16610.html

DPOS机制是什么?它和POW、POS的区别是什么?

参考URL: https://baijiahao.baidu.com/s?id=1603870079950594911\&wfr=spider\&for=pc

相关推荐
新时代农民工--小明20 分钟前
前端自动化部署更新,自动化打包部署
运维·前端·自动化
一个不秃头的 程序员1 小时前
服务器上加入SFTP------(小白篇 1)
运维·服务器
fnd_LN1 小时前
Linux文件目录 --- 复制命令CP、递归复制目录、软连接、硬链接
linux·运维·服务器
MorleyOlsen1 小时前
【Trick】解决服务器cuda报错——RuntimeError: cuDNN error: CUDNN_STATUS_NOT_INITIALIZED
运维·服务器·深度学习
周周的奇妙编程1 小时前
基于鲲鹏服务器的打砖块小游戏部署
运维·服务器
大熊程序猿1 小时前
airflow docker 安装
运维·docker·容器
会飞的土拨鼠呀2 小时前
chart文件结构
运维·云原生·kubernetes
人类群星闪耀时2 小时前
基于AI的网络流量分析:构建智能化运维体系
运维·人工智能
晚安,cheems2 小时前
linux的权限
linux·运维·服务器
路溪非溪2 小时前
Linux加载一个应用程序的过程总结
linux·运维·服务器