说透区块链
自游
区块链服务平台资深架构师
7193 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 19 讲
说透区块链
15
15
1.0x
00:00/00:00
登录|注册

07 | 共识(上):拜占廷将军也讲少数服从多数?

你好,我是自游。
在上一讲中,我提到交易扩散的时候,说过交易自连接节点开始逐步向外扩散,最终会有一个时刻,所有的节点都可以收到该交易。这也就意味着去中心化网络中,想要实时保证每个节点数据状态一致比较困难,网络越分散,数据扩散的时间也越久,一致性也越难以达成。更不要说还存在专门搞破坏的作恶者,故意阻碍一致性的达成。
因此,就需要专门有一种机制去协调,使其在一定程度上约束节点的行为,来保证整个区块链网络保持状态的一致性,而这也就是这一讲要学习的共识算法。共识算法可以说是区块链技术的核心思想,是区块链运行的行为准则。
我会通过两讲的内容,带你快速理解区块链里的共识算法。为了让你轻松理解共识算法,这节课我会用一个故事为你解析共识背后的基础知识点,而下一节课再将知识点融入到区块链中,为你详细剖析区块链中是如何解决共识问题的。

拜占庭将军问题

话说在拜占庭帝国,9 位将军分别率领一支军队要共同围困一座城市。但是这座城市军事实力很强大,如果不协调统一将军们的行动策略,部分军队进攻、部分军队撤退会造成围困失败。
因此,各位将军必须通过投票达成一致策略,少数服从多数,要么一起进攻,要么一起撤退。
因为各位将军分别占据城市的一角,他们只能通过信使互相联系。在协调过程中,每位将军都将自己想“进攻”还是“撤退”的消息通过信使分别通知其他所有将军,这样一来每位将军根据自己的投票和其他将军送过来的投票,就可以知道投票结果,然后决定是进攻还是撤退。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

区块链共识算法是保证去中心化网络数据一致性的关键机制。本文通过拜占庭将军问题引出共识算法的概念。在拜占庭将军问题中,将军们需要通过投票达成一致策略,但叛徒的存在可能破坏一致性。文章通过故事和推演阐述了拜占庭将军问题的复杂性,以及解决该问题的最小化模型。文章强调了共识算法的重要性,并解释了实时广播和投票共识的区别。通过图解和详细分析,读者能够快速了解共识算法的核心思想和解决方案。 在故事之外,文章还通过去中心化特性,反向论证了共识的必要性。区块链中共识的基础是区块,区块有序地包含了交易,从而保证了状态的一致,对区块的共识就是对状态的共识。理论只是科学,重要的还是要把理论付诸到工程实践中来。文章提到了拜占庭将军问题出自一篇学术论文,是分布式共识问题的鼻祖,这有助于理解区块链共识会面临的情况。 总的来说,本文通过深入讨论拜占庭将军问题和共识算法的重要性,帮助读者理解了区块链中共识算法的关键作用。同时,文章还提到了共识算法需要解决的问题,为读者提供了对区块链技术的深入思考和理解。

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

全部留言(14)

  • 最新
  • 精选
  • 三儿
    可不可以用图示来表示一下三个将军情况下,B将军想做恶而导致达不成一致的情况呀

    作者回复: 如微信群中回答。在真实场景中,不能预知ABC到底谁是恶,分析的时候可以

    2021-08-04
    3
    3
  • 漂泊的小飘
    是不是为了防止发起者作恶的可能性呢?

    作者回复: 可以这么说

    2021-08-06
    1
  • www
    为什么还要再有一个“确定 A 要进攻”的阶段呢?之前只是各位将军自己知道,说出来才能让A确定,大家都收到了自己要进攻的信息。

    作者回复: 不要这么想哟。想象这是一个分布式的系统,所有的结果都是自己独立通过别人传递过来的消息得出的,A在共识的流程里跟其他人没有区别

    2021-08-04
    2
    1
  • InfoQ_095d09facfde
    为什么不是1/2 按这样分析A第一轮信息扩散完第二轮信息其他所有的信息到达另外几位将军,综合所有的信息输入,只要超过1/2就能确定A此次进攻还是撤退吧。

    作者回复: 我没看懂这段话,希望能加上标点符号🙏。

    2023-02-28归属地:广东
  • Geek_3d623d
    哪里进群啊?

    作者回复: 联系客服

    2023-02-21归属地:北京
  • 姚莉莉
    在4个节点,B节点是坏人的情况下,有一个推演进行不下去了,请指教。假设是A发起投票。A向B、C、D发出了yes信号。B向A回复了yes,但是故意搞破坏,来给C,D转发出no信号。 到此刻,A完成了对所连三个节点的交易/消息扩散;B也完成了根据收到的信息再对它所连三个节点的消息扩散。 接下来C节点也想参与扩散,可是发现自己收到的是一个来自A的yes信号,一个来自B转发的no信号。它就不知道自己应该向外,向它所连的A、B、D发出什么信号了啊?是发yes,还是发no。那么接下去,C该怎么继续下去呢?不然,难道这一轮投票就卡在这里了吗?

    作者回复: 在这一轮,C扩散的是从A那里收到的信息。如果他是正常,那会给ABD发yes。如果不是,就随意了。

    2021-10-08
  • 童言
    拜占庭问题引出了分布式系统中一个重点:共识。
    2021-08-04
    1
    3
  • Geek_3d623d
    能不能加我下进群 wucs_dd
    2023-02-21归属地:北京
  • Geek_66a431
    打包成区块应该是为了效率, 当前全网所有的节点 只对某一区块进行确认, 而不是对每笔都确认,扩大区块会显著降低网络拥堵, 但是会造成全节点过大, 介入成本太高, btc和bth分叉就为了这事
    2022-04-28
  • 亚东
    确认A要进攻我觉得是一个非常重要的环节,如果所有节点能达成一致,说明系统是可信的,叛徒数没有拆过1/3,相反如果大家就A是否要有歧义,说明系统是不可信的。区块链在尝试在一个真实且紊乱的场景下,构建共识,这是一个系统层面的事情,而不是单一判断真假的问题。
    2022-04-22
收起评论
显示
设置
留言
14
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部