深入浅出区块链
陈浩
元界 CTO
40685 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 40 讲
深入浅出区块链
15
15
1.0x
00:00/00:00
登录|注册

第11讲 | 深入区块链技术(三):共识算法与分布式一致性算法

DPoS
PoS
PoW
PBFT
Paxos协议
Raft协议
村庄举办相亲大会的例子
区块链并没有逃离分布式系统这个理论框架
区块链共识算法
经典的分布式一致性算法
CAP定理
FLP不可能性
合法性问题
可终止性问题
一致性问题
分布式系统的模型
总结
共识算法与分布式一致性算法
有关分布式系统的定理
分布式系统面临的问题
从相亲大会说起:分布式系统的模型
深入区块链技术(三):共识算法与分布式一致性算法

该思维导图由 AI 生成,仅供参考

共识机制的概念,我们在前面的文章“浅说区块链共识机制”中已经讲解了一部分,但是,共识算法其实是一个非常大的话题,一篇文章肯定没有办法做到面面俱全。
那么今天的内容,我会将重点放在梳理技术的脉络上,详细分析的部分会少一点。如果你对共识算法有兴趣的话,可以自行查找相关内容,也可以和其他的资料进行相互补充的阅读。

从相亲大会说起:分布式系统的模型

由于区块链就是一种分布式系统,所以这篇文章我就从这一概念开始讲起。 为了让你更容易理解分布式系统,我们先来构建一个模型。
在“浅说区块链共识机制”那篇文章中,我举了一个村庄举办相亲大会的例子,我们来回顾一下。
大村子因为人口增长变成 11 个小村落分散在地图各地;
村落之间的通信只能依靠信鸽;
一只信鸽可能无法完全覆盖所有村落,需要有中继村落代为传输消息。
相亲大会的举办权会为村子带来巨大收益,为了产生合理的举办者,人们约定了几条规则:
大会举办权从 A 和 B 两个村子中产生,他们每一届都是候选村;
投票时所有村落仅能投 A 或 B;
用投票的方式产生举办者,少数服从多数。
所有村子会为了举办权都会使出浑身解数,比如延迟发送投票结果、篡改别人的投票结果、假装没有接收到通知等等。
其实这是一个典型的分布式系统,可以看成是我们简化版的区块链网络环境,那么这个分布式系统会遇到什么样的问题呢?

分布式系统面临的问题

分布式系统面临了几个问题:一致性问题,可终止性问题、合法性问题。
可终止性可以理解为系统必须在有限的时间内给出一致性结果,合法性是指提案必须是系统内的节点提出。当然其中面对的最重要也是最基础的问题,就是我们常说的一致性问题。
一致性是指在某个分布式系统中,任意节点的提案能够在约定的协议下被其他所有节点所认可。
需要提醒你区分的一点是:这里的“认可”表示所有节点对外呈现的信息一致,而不是对信息的内容认可。一致性也分严格一致性、最终一致性,这些我们在后文会谈到。
我们回到上面的例子,我们提到了所有的村子只能投 A 或 B,其实这个投票的动作可以理解为提案。
在“投票过程被大家所认可”这个语境下,“被大家所认可”表示某个村落投票的结果已经被记录,用于最后统计结果,而不是认可投给 A 或者投给 B,这也是我在上述强调你要注意区分的一点。
那我们这里所说的一致性到底体现在那里呢?
主要体现在下面两种类型的问题上。
非人为恶意的意外投票过程。非人为恶意篡改可归类为信鸽半路挂掉、信鸽迷路、信鸽送错目的地、信鸽送信途中下雨导致信件内容模糊、接收信件的人不在家、天气变化信鸽延迟送达等等。这些对应到分布式系统面临的问题就是:消息丢包、网络拥堵、消息延迟、消息内容校验失败、节点宕机等。
人为恶意篡改投票过程。人为恶意篡改包括“精神分裂式投票”,中继篡改上一个村落的投票信息。对应到分布式系统面临的问题就是:消息被伪造、系统安全攻击等等。发生的人为恶意篡改的过程就可以称之为系统发生了拜占庭错误(Byzantine Fault),如果系统可以容忍拜占庭错误而不至于崩溃,也就是在发生系统被恶意篡改的情况下仍然可以达成一致,我们将这样系统称作为做拜占庭容错系统。
问题 1 我们已经有较成熟的方案了。分布式系统本质上是一种并行异步操作,如果通过中心化的手段将系统中的“并行不确定”操作变更为“同步串行”操作就能解决上述的问题。
比如让第三方机构介入托管所有人的投票;或者构造一个不可伪造令牌,大家轮流将投票统一写到令牌上。
这些也是现代分布式系统经常使用的方法。但是这些方法有个缺陷,如果在分布式系统中被过多地使用以后,系统便会越来越像单点系统。
我们设计分布式系统的初衷就是为了克服单点系统的可用性不足、扩展性不好、单点性能上限等缺陷,这种退化的方案可能不是我们想要的。
而问题 2 要求设计拜占庭容错系统,这个在 IT 行业并不常见,因为多数 IT 系统是中心化的,所以如果我们想要解决问题 2,这就引出了我们今天要介绍的共识算法与分布式一致性算法。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了区块链技术中的共识算法与分布式一致性算法。通过引入相亲大会的例子,阐述了分布式系统面临的一致性、可终止性和合法性等问题。文章介绍了分布式系统的定理,包括FLP不可能性和CAP定理,以及由CAP定理推导出的严格一致性和最终一致性。作者指出了区块链系统在可用性、分区容忍性和一致性方面的权衡取舍,以及高性能区块链系统的去中心化程度与TPS之间的关系。最后,文章承接介绍了共识算法与分布式一致性算法,强调了它们在解决分布式系统一致性问题上的重要性。整篇文章通过生动的例子和理论分析,深入浅出地介绍了区块链技术中的共识算法与分布式一致性算法,为读者提供了全面的技术视角和理论基础。 文章还介绍了经典的分布式一致性算法,如Raft协议、Paxos协议和PBFT算法,以及区块链共识算法,包括PoW、PoS、DPoS等。对于读者来说,本文提供了对分布式系统和区块链技术的深入理解,帮助他们更好地理解区块链项目的技术特点和选择适合的共识算法。文章内容丰富,涵盖了分布式系统理论、共识算法和区块链技术的重要知识点,对于想要深入了解区块链技术的读者来说,是一篇值得阅读的文章。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出区块链》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • 朱显杰
    据我个人总结,联盟链基本上使用PBFT及其变种,而公有链大多采用PoX算法,对吗?

    作者回复: 嗯,我们理解一致。

    2018-04-21
    12
  • teletime
    去中心化需要群体意志,群体意志需要共识,抽签是最好方式,谁用机器模拟抽签模拟的好,谁的方法好。POW思想正统。

    作者回复: 区块链随机数有的,Cardano项目有公开一种算法。

    2018-04-21
    4
  • 沃野阡陌
    EOS 会不会形成泛中心化,即牺牲一致性来得到效率? 请教老师对此看法。 EOS 值得投资吗?

    作者回复: 本专栏不构成任何投资建议哦。

    2018-04-21
    3
  • 杨家荣
    极客时间第二期 21天打卡行动 9/21 <<深入浅出区块链11>>共识算法与分布式一致性算法 回答老师问题 区块链行业有哪些公司使用了如 PBFT、Paxos 这样的经典共识算法呢? PBFT实用性拜占庭容错:联盟链,公链, PAXOS是一种基于消息传递且具有高度容错特性的一致性算法:阿里巴巴 X-Paxos  [来源:https://developer.51cto.com/art/201708/547380.htm,https://www.jinse.com/bitcoin/273820.html] 今日所学: 1,分布式系统面临了几个问题:一致性问题,可终止性问题、合法性问题。可终止性可以理解为系统必须在有限的时间内给出一致性结果,合法性是指提案必须是系统内的节点提出。当然其中面对的最重要也是最基础的问题,就是我们常说的一致性问题。一致性是指在某个分布式系统中,任意节点的提案能够在约定的协议下被其他所有节点所认可。 2,一致性也分严格一致性、最终一致性 3,遇到问题:非人为恶意的意外投票过程,人为恶意篡改投票过程; 4,有关分布式系统的定理:第一个是 FLP 不可能性,简单来说是:即使网络通信完全可靠,只要产生了拜占庭错误,就不存在一个确定性的共识算法能够为异步分布式系统提供一致性。换句话来说就是,不存在一个通用的共识算法可以解决所有的拜占庭错误。第二个是 CAP 定理,CAP 定理是分布式系统领域最重要的定理之一,这个我们在“理解区块链的常见误区”一文中稍微讲到过。也就是在设计分布式系统的过程中,“一致性”“可用性”“分区容忍性”三者中,我们只能选择两个作为主要强化的点,另外一个必然会被弱化。 5,最终一致性不要求严格的短时间内达到一致。为了其他两个指标,我们相当于让一致性在时间上做了妥协。区块链满足了最终一致性,而且处理过程时间比较长。 6,从软件架构上也经历了基于 ESB 的模块化 SOA 模式,到无状态的微服务架构。从工程的角度来看,根据业务需求达到 4 个 9、6 个 9 就足够了,只是肯定比不了区块链近乎 100% 的可用性。 7,分区容忍性在企业内部极少出现,尤其是中心化的服务性应用,所以很少考虑。然而区块链的 P2P 网络环境十分复杂,所以必须要保证很高的分区容忍性; 8,经典分布式一致性算法有 Raft 协议,Raft 协议是一种强 Leader 的一致性算法,它的吞吐量基本就是 Leader 的吞吐量,它无法抵御节点恶意篡改数据的攻击。 9,Paxos 协议,Paxos 能提供不同场合不同种类的一致性算法,所以 Paxos 有很多变种,经典 Paxos 是 Leaderless 的,有变种是强 Leader 型的,叫做 Fast Paxos, 10,PBFT 全称实用性拜占庭容错系统(Practical Byzantine Fault Tolerance, PBFT),PBFT 是一种状态机,要求所有节点共同维护一个状态,所有节点采取的行动一致,PBFT 非常适合联盟链等对性能具有较高要求的场合,超级账本项目中的 Fabric 框架默认采用的就是 PBFT 的修改版本; 11,区块链中的共识算法目前具有工业成熟度的是 PoW,另外两种比较成熟的是 PoS 和 DPoS,其次还有一些变种和单一币种使用的共识算法,例如 Ripple 共识、PoC 共识(概念性证明)、PoE 共识(存在性证明), 12,在使用 PoW 共识算法的情况下,容错阈值是 50%,而 PBFT 及其变种的容错阈值是 33% 左右,这里的百分比是指作弊节点占全网节点的比例。 13,PoX 类的算法其实都延续了 PoW 的设计理念,相比较经典分布式一致性算法,PoX 类算法通过概率选择记账者降低了潜在的提案者,另外是延长了达成最终一致性的时间
    2020-01-14
    6
  • A君
    分布式网络需要共识机制在有限的时间内(可终止性)将网络内节点(合法性)发起的投票同步到所有节点中(一致性)。相比其他分布式系统,区块链共识机制还需要在部分节点篡改投票信息的条件下通过网络其他节点自适应地纠正作弊节点的记录最终达到全网一致性。这种人为主观恶意的一致性错误称为拜占庭错误。区块链通过经济学博弈,让作弊的成本远大于收益来实现拜占庭容错。
    2021-02-18
    3
  • S
    第一条降低了系统通信复杂度。请问这里的第一条指的是什么?没有看懂。
    2018-12-29
    1
    2
  • Geek_021547
    虽然说以太坊有成千上万的记账节点,但实际上由于资本的干预,大型的矿池出现,真正记账的也没有比21个多很多吧?
    2019-09-28
    1
  • 花子翁
    最近的迅雷的公链采用的是Pbft
    2018-05-29
    1
  • Grocker
    Solana 用了PoH共识算法
    2021-04-27
  • 小老鼠
    现在区块链除了虚拟货币,还有什么用途?
    2019-12-09
    1
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部