共识算法的Overview

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28666193/article/details/85017449

1 区块链说起

普遍有狭义或者广义,各类定义。一种数据结构?一种分布式计算的基础框架或范式。我们可以参考计算机网络的ISO协议族做一个对比。

区块链的一种解释结构)

一般来讲,区块链有四大核心技术:分布式账本、加密技术、共识机制和智能合约。无共识,不区块链

共识(Consensus),很多时候会见到与一致性(Consistency)术语放在一起讨论。共识算法主要是保障系统能够满足不同程度的一致性。共识算法解决的是对某个提案大家达成一致的过程。共识算法主要面临的问题是不存在完美性能的分布式系统,一般地,把故障(不响应)的情况称为“非拜占庭错误”,恶意响应的情况称为“拜占庭错误”(对应节点为拜占庭节点)。我们可以通过一些算法包括Paxos/Raft等来解决非拜占庭错误。对于拜占庭错误,则使用PBFT 系列、PoW 系列算法等。

2 共识机制

协同各个节点的信任、一致性工作,达成某种信任的关系、持续性等。共识需要解决的几个核心问题是:

  1. 谁在这个网络里有记账权,也就是做为leader发起一次记账。
  2. 做为互相不信任的参与者,为什么要采纳和相信某一个人给出的记账。
  3. 怎么保证大家最终收到的结果都是一致的,无错的。

共识算法一般在公有链和私有链的表现不同,一般算法有其较适用的区块链类型。

CAP原理:一致、可用、容错

3 共识算法一览

1542095062537)

公有链常用:PoW、POS、DPoS

私有链常用:Raft、PBFT

4 公有链

PoW、PoS、DPoS。公有链里采用的共识算法,都能解决可信和一致性的问题,区别在于组织方式和计算代价不同,有一点相同的是:都是追求“最终一致性”,而不是强一致性。

4.1 PoW

工作量证明

  • 原理:哈希函数难题友好性;拼算力、“挖矿”;算力强的矿工因为可以在这段时间内计算更多的随机数,所以更有机会比其他人先挖到矿。
  • 应用:比特币,早期Ethereum
  • 分析:简单;表现稳健,是史上最成功的共识算法,没有之一;
    不环保,能耗太多,效率较低,无脑算HASH;51%攻击成为可能(矿池)

4.2 PoS

权益证明

  • 原理:基本思想是让在网络中拥有更多权益的人有机会在更短时间里做更多的决定;引入了“币龄”的概念
  • 应用:点点币
  • 分析:PoW对比,有利于降低纯计算资源的消耗;
    依据权益结余来选择,会导致首富账户的权力更大,有可能支配记账权。

4.3 DPoS

Delegated Proof of Stake,股份授权证明机

  • 原理:让所有持币人都有机会选出自己的代表,比如全网有1万个参与人,通过一定的算法,参与人以自己的代币为权益证明,选出101个代表,这些代表可以轮流或者采用PoS算法加权的获得记账权,进行记账。DPOS 使用技术民主用来抵消集中化的负面影响
  • 分析:更民主,更开放;提高了交易速度
    网络的复杂度增加,维护成本增大

5 私有链

联盟链和公有链不同的是,参与记账的人,身份是可知的、可控的,可能有监管或者经济共同利益之类的措施来约束他们。联盟链的场景倾向与追求强一致性,也就是说一笔交易发生了,就不能再被分叉或回滚推翻了。所以联盟链通常使用的是PBFT和Raft算法以及其变种。

5.1 PBFT

从BFT衍生

  • 原理:少数服从多数,快速达成共识,体现参与度和民主性,有较强的确定性和抗欺诈性
  • 分析:容错性强,高可用,高吞吐;可优化;允许存在少数节点作恶场景
    状态机维护复杂,投票往返步骤较多,容易受网络波动影响,对网路延迟和丢包相当敏感

5.2 PBFT-Smart

5.3 Raft

  • 原理:Raft算法包括三种角色:Leader(领导者)、Candidate(候选领导者)和Follower(跟随者),决策前通过选举一个全局的leader来简化后续的决策过程。Raft算法面向对多个决策达成一致的问题,分解了Leader选举、日志复制和安全方面的考虑,并通过约束减少了不确定性的状态空间。
  • 分析:强调可用性和最终一致性,效率较高,不强调抗欺诈性

5.4 PAXOS

  • 原理:一种基于消息传递且具有高度容错特性的一致性算法;简单的说可以理解成大家选出一个记账者,如果它稳定运行没有挂掉,就由他记账,大家无条件接受他的记账结果,相信他是诚实的,如果他挂掉了,那么大家是可以通过超时或网络探测感知,然后快速启动一轮投票,来选出一个新的记账者,然后继续无条件的等它记账,这样就达成了容错性
  • 分析:更加高效,不需要多步的反复确认,受网络影响的小;最大化保障分布式系统一致性
    不解决恶意记账者问题

猜你喜欢

转载自blog.csdn.net/qq_28666193/article/details/85017449