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

第3讲 | 浅说区块链共识机制

投票者的“精分”
中继村子作弊
作弊问题
谁有权利
拜占庭将军问题
规则二
规则一
理性参与者奖励
计算难度
计算资源
区块链共识机制解决的问题
分布式系统问题
PoS、DPoS等共识机制
PoW共识机制
解决双花攻击
抗击作弊收益
随机性来源
共识机制
区块链共识机制总结
PoW工作量证明
区块链发展
区块链共识机制

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

我在第 2 讲“区块链到底是怎么运行的”一文中,提到了“打包 Transaction”和“广播交易”这两个概念,因为概述的原因,当时只带着你走了一遍过程。其实,以上谈到的两个内容正是区块链最核心的技术内容之一:共识机制。
区块链发展至今,已经形成了各种不同类型的共识机制,在今天的文章中,我们就展开聊一聊区块链共识机制到底是什么,以及区块链的共识过程到底是怎样的。

分布式系统的经典问题: 拜占庭将军问题

拜占庭将军问题其实是虚构出来的一个故事,是为了方便通俗地介绍分布式系统所面临的难题。这里我仅作一个简短的说明,你可以在中文社区找到更丰富的通俗解释材料。
为了避免重复,我们换一种表述形式,还是以上一次的村子为例,假设随着村子和人口的发展,大村子演变成了十一个小村子并分散在各地,各地的通信只能靠信鸽进行。
大家约定了每年都会举办一个相亲大会,至于谁能举办,每年轮流从两个备选村子,A 村和 B 村中选择一个,然后大家投票,票数多者可以赢得举办权。
由于地图很大,任何一个村子的投票都无法靠一只信鸽传输到每个村子,必须靠一个中继村子代为传输,这也就意味着有中继村子可以读到其他村子的投票信息。
那么,如何防止下面两个问题的出现呢?
投票者的“精分”,这里所谓的“精分”是指某个村子的投票行为不一致,发送给第一个村子的投票消息为“投票给 A”,而发送给第二个村子的投票消息却为“投票给 B”。
中继村子作弊,即篡改上一村的投票消息。
上面讨论的问题我们可以认为是简化的 “拜占庭将军问题”(完整的拜占庭将军问题还有将军 - 副官模型,如果感兴趣的话,你可以自行阅读)。
我们回头再看区块链。区块链本质上也是分布式系统的一种,其共识机制也是为了上述问题而提出的解决方案。

什么是区块链共识机制?

共识机制是区块链是核心的组成要素之一,它决定了区块链的业务吞吐量、交易速度、不可篡改性、准入门槛等等,是最为关键的技术要素之一。
要理解区块链共识机制,首先就需要理解区块链共识机制到底解决了什么问题。
共识机制主要解决了两个问题:
谁有权利;
作弊问题。
上一次我们构造了一个中心化记账的场景,在这个场景下,记账问题其实可以简化为大家信任中心记账者即可。
然而在分布式记账的场景下,问题更为复杂。首先,大家面临的最大问题是谁有权利记账,其次是如何避免记账者作弊。毕竟,谁都有权利记账,也就意味着谁都有可能作弊。
以上两部分共同构成了区块链共识机制。
另外补充一点,在比特币社区,“共识”(consensus)这个词已经跳出了技术的范畴。通常人们在表述一个比特币上的问题时,共识的内涵还包括比特币的使用者、开发者、矿工来达成社区共识的部分,所以“共识”这个词在区块链领域还有些“民主”的味道,不单单是技术领域的“共识”。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

区块链共识机制是区块链技术中至关重要的一环,它解决了分布式系统中的权利分配和作弊问题。本文通过介绍拜占庭将军问题引出了共识机制的重要性,并深入解析了PoW(工作量证明)共识机制的原理和作用。PoW通过随机性和计算资源来避免作弊,同时采用激励机制抗击作弊收益问题。文章生动地比喻和举例,帮助读者快速了解了区块链共识机制的基本概念和技术特点。另外,文章还补充了PoW工作量证明解决双花攻击的机制,详细阐述了如何避免双花问题,以及作弊者获取系统计算资源后篡改的可能性。最后,文章提出了对比PoW共识机制和其他分布式一致性算法的思考,并欢迎读者一起讨论。总的来说,本文通过深入浅出的方式,帮助读者全面了解了区块链共识机制的重要性和技术特点。

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

全部留言(51)

  • 最新
  • 精选
  • 朱显杰
    PoW算法的特色是结合了经济学上理性人的假说,发明了激励机制,让做好人的奖励大于做坏人的获利。但我觉得比特币每4年递减的特点可能会导致这个天平被打破,比特币奖励越来越少,而比特币总量越来越多,是否意味着某一天可能作恶的收益要大于做好人的收益呢?

    作者回复: 1. 可能的,不过这个周期非常长,临界点可能在这个世纪末,但由于不确定因素非常多,多因素综合,例如到时比特币100万美金一个,即使低收益只要可以覆盖成本即可,而且作弊是概率的,只有期望值。所以足够的时间会发现新的算法来修正PoW,或切换其他共识 2. 比特币的总量是恒定的

    2018-03-30
    19
  • 4Neutrino
    老师好,有点疑问,算力强大的单位,就算难度提升了,那他挖矿成功的概率还是高啊?这似乎没有解决中心化问题吗

    作者回复: 问题是这些算力有没有进入门槛,如果没有,普通人也可以介入,那么就是公平的,算力中心化的威胁只有51%攻击,实际上达到51%,矿工的攻击动机也是不足的,因为很容易被发现,攻击成功会造成用户流失,短期收益很高,但是断了自己的长期财路,矿工一般不会选择攻击。所以问题就演变成攻击是否可以被公众感知。

    2018-05-25
    8
  • 静。安
    老师作为一个软件开发人员区块链技术应该向什么方向学习呢,还有前景问题,望老师解惑,谢谢!

    作者回复: 1. 公链开发。偏底层 2. 区块链应用开发。 偏智能合约 两个都需要区块链基础知识作为支撑,先打好基础,再找方向ο(=•ω<=)ρ⌒☆。

    2018-03-31
    8
  • Alexcsl
    关于双花问题,如果双花交易同时出现在两个区块中,那应该根据挖矿难度的大小,自动舍弃一个区块,保证只有一次花费被确认。这和算力,连续六次记账的概率有什么关系呢?是因为进行双花攻击的时候,是把两笔交易记在同一个区块里,一旦由另一个节点进行merkel树检验,会发现异常,必须由攻击节点连续记录六个区块么?还请老师解惑

    作者回复: 已在其他回复中回答。

    2018-03-30
    7
  • 席彬
    陈浩老师好,有两个问题请教 1双花攻击中后一个区块如何验证前一个区块是否“作弊” 2区块链产生分叉后,新产生的区块如何“选择”加入哪一个分支

    作者回复: 你好。 1. 每一笔交易记录都是有前向输入的,如果已经被花费过,则状态已经变更为已花费,再次话费共识验证的代码会检验不过,拒绝被打包。这个我曾经在比特币上干过,修改本地节点代码后发起攻击,交易不会被打包,除非全球的矿池同时重启,也是概率会成功,仅限未被确认的交易。 2. 通俗说法叫做所有节点跟随最长的一条分叉链,共识代码规定的。专业的说法叫做“难度”累积最大的一条链。

    2018-03-30
    3
  • Happy
    大佬您好 所謂一個区块被打包 需要6次确认 是判断拥有6次记账权?还是什么意思 ,所谓的6次确认是怎么确认的 谢谢

    作者回复: 一次确认就代表已经刚刚被打包进区块,两次确认就代表又产生了一个新块引用这个区块,链式引用,引用越多就代表被篡改的可能性越小,6个确认是在概率上认定为基本不可能被篡改了,所以6次只是一个建议,由用户自己选择的,当前比特币网络很稳定,一般1~2就可以认定有效,以太坊一般是12个。

    2018-10-09
    2
  • 荔荔要去看世界
    交易算作确认的条件 1.交易存在于最长分的一个区块中 2.后面至少有5个区块被验证过

    作者回复: 是的,这是比特币的确认条件。

    2018-05-14
    2
  • TaoLEE
    为什么说共识机制有"民主性"?

    作者回复: 共识机制狭义上指分布式一致性,实际上也可以拓展到区块链治理共识。

    2018-05-01
    2
  • 流星🌠火箭🚀蛋🥚
    老师,您好,请教一下:看了文章和您在讨论区的一些回复,还是没搞明白挖矿和比特币的关系,您打的比喻:挖矿产生的区块相当于数据库,而比特币相当于积分,这个怎么理解呢?这是说比特币是写在对应区块的一笔交易记录吗?还有是不是每产生一个区块就会派发一个比特币?比特币归属怎么来记录呢?每个区块里边是不是可以无限追加交易记录?我这还没入门,希望老师赐教哈

    作者回复: 1. 积分记录在数据库的表中,谁有权利创建新表,谁就能获得积分。 2. 比特币是表中有效的未花费记录 3. 一个区块就是一张新表,表可以哈希后串起来 4. 不是无限的,有区块容量限制

    2018-04-12
    3
    2
  • Hollis
    我有个问题想问下: 工作量证明的题是谁出的?如何保证节点收到的题是一样的?

    作者回复: 细节我们会在深入技术一章中讲。 每次难题都是基于当前全网的状态和上个区块作为输入,所以每个人得到的难题都一样。

    2018-04-03
    2
收起评论
显示
设置
留言
51
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部