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

08 | 共识(下):区块链领域的两类常用算法

你好,我是自游。
在上一讲中,我们通过对拜占庭将军问题的描述及推演,引出了分布式共识的基础知识,也论证了区块链共识的必要性。而这一讲,我将为你梳理区块链中常用到的共识算法。
说起对区块链共识最初的认知,我们几乎都能想到比特币中的 PoW,也就是工作量证明算法。
其实它只是众多区块链共识算法中的一个,虽然现在区块链领域中有很多种类的共识算法,但总的来说可以分为两类,一类是联盟链中用到的拜占庭容错算法,而另一类就是公链中用到的类似于 PoW、PoS 之类的算法,而我更愿意将它们统称为激励共识算法。
因为是两类共识,理解起来肯定有差异,但是我们却可以从上一讲故事里提取共识的基础要点来进行对比分析。我大致总结了三个要点。
1. 由谁来生产区块?因为区块链是去中心化网络,节点间权利与义务是对等的,因此在任意一个时刻,任何节点都可以生产区块。但是以谁的为准呢?这是我们在理解区块链共识时需要首先搞清楚的问题。
2.什么时刻可以达成共识?分布式共识其实也蕴含一个前提,那就是需要在有限的时间内达成各节点间区块一致。如果共识过程无限期,那么共识本身就不成立了。
3.有多少节点参与了共识?通过对拜占庭将军问题的解析,我们知道共识的达成跟叛徒的数量息息相关,不同的共识对于叛徒的容忍程度是不一样的,我们常听到的少数服从多数,51% 攻击等等说的就是这一点。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

区块链共识算法分为拜占庭容错算法和激励共识算法两类。拜占庭容错算法如PBFT适用于联盟链,通过节点间的多次信息广播通信实现强一致共识协议。而激励共识算法如PoW、PoS适用于公链,通过工作量证明等方式实现共识。公链网络的开放特性不适合拜占庭容错共识,因此引入了基于激励的共识算法系列。这种创新性的共识算法不仅简化了拜占庭容错共识,还引入了社会治理思想,调动节点的积极性,推动区块链网络的繁荣。总的来说,区块链中的共识实现有差异,但底层逻辑是一致的。在联盟链中,共识基本遵循了拜占庭容错共识算法的思路,而公链网络则创新性地引入了基于激励的共识算法系列。这些技术的应用使得区块链能够在去中心化网络中保持各节点状态一致。

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

全部留言(13)

  • 最新
  • 精选
  • 王建设
    “利用哈希算法计算区块哈希,使得区块哈希以 N 个 0 开头” 对第一个条件不是很了解。 是怎么样的过程? 把当前要出块的区块 进行哈希? 怎么样才能碰撞出N个0开头的哈希?

    作者回复: 哈希就是对数据的计算,区块数据是固定的,因此无论计算多少次,特定区块的哈希值是固定的。但是会并不满足诸如N个零开头等一些条件,因此就再随机一个数跟区块数据合在一起进行哈希运算,如果不满足条件,就修改这个随机值,直到找到合适的区块哈希为止

    2022-01-26
    3
  • 漂泊的小飘
    老师,这个课程后面会不会给我们一个思路或者代码去实现一个简单联盟链呢?

    作者回复: 你好,不会的。这门课程的定位是给所有专业背景同学看的区块链通识课,提代码的话就有些偏科了。 但我后面会提到推荐的联盟链实现

    2021-08-06
    2
  • YouuX
    请问下老师2个问题 1、A和B两个节点同时生成了区块并广播了出去,那产生区块的奖励应该给A还是B呢? 2、C节点收到A和B广播的区块,又应该以谁的区块为主呢?

    作者回复: 这得看具体的设计。以比特币为例,就是依据最长链机制。AB两个节点的链因区块不同产生了分叉,形成了两个链,c可能收到了这两条链,此时他不会立即以某条链为准,而是同时维系两条链,一般看谁先领先到n+6个区块,n为出现分叉的节点。领先的即为最长链,其奖励才是有效的。

    2022-06-23
    1
  • 全麦小面包
    那PoA用的共识算法是哪一类呢?说激励,有点不太准确,因为根本没有挖矿奖励呀?

    作者回复: PoA可以认为是工作量证明算法,只不过他的工作量并不是挖矿,而是因身份担保产生"服务费"

    2023-03-12归属地:上海
  • Geek_3d623d
    比特币网络允许有多条区块链存在,但只认同节点能接收到的最长的那条区块链是全网络共识的链,其余短的区块链都是无效链。 有没有可能存在两条长度相同但区块不同的链?这以那个为准?

    作者回复: 可能存在的,但总有一个时刻会有一个链胜出

    2023-02-21归属地:北京
  • jiangchuan
    "节点当前所累积的最长链可能并不是最终的结果,在某个时刻它可能收到比节点本地存储更长的链,此时节点就应该切换区块链", 这里的"切换区块链" 如何理解 ? 是指节点用收到的新的更长的链来替换自己本地数据库中的区块链吗?

    作者回复: 是的,区块都是有编号的,一旦发现比当前自己节点上的区块链中最高的区块编号还高的区块,但是并不是同一条哈希链上的。就会把两条链的数据都保留,随着时间的推移,会有一个时刻某一条链的区块胜出,就可以替换。文中的说法更简略

    2021-08-13
  • Joeswooddd
    老师,我对51%算力攻击有些疑问,我的理解是通过累计大量的算力形成矿池,51%的算力能更快的产生区块,篡改者产生区块的速度大于其他人的速度,通过自己产生的长链在节点广播中代替其他节点中的短链,是这样的吗?

    作者回复: 对的,是这样的。

    2021-08-08
  • 三儿
    原文中“而这个条件就是利用哈希算法计算区块哈希,使得区块哈希以 N 个 0 开头,N 的多少取决于当前网络区块增长的速度,是一个动态调整的值。这样一来,PoW 就限制了一段时间内网络中区块提案的个数” 是不是像区块链POW本身的调节机制,像TCP/IP协议栈中的拥塞控制?

    作者回复: 你好,这个确实是可以这么类比看的。主要就是为了保证出块速度的绝对时间间隔,防止比特币挖矿奖励在很短的时间内被挖出,因为这样从长远看不利于生态的发展。

    2021-08-07
  • 高鹏0409
    为什么规定最长的哪个链是共识的呢?如果本来是分支的链很短,后来追上来了呢?

    作者回复: 为什么要规定:这是为了约束共识的一致性。就是要让参与者知道什么情况算是达成共识。就比如摇骰子,规定大数赢,那相比5,6是赢的。但是如果规定小数赢,那5就赢。类似的道理吧。 短链追上:这就是我后面提到的了,节点当前所累积的最长链可能并不是最终的结果,在某个时刻它可能收到比节点本地存储更长的链,此时节点就应该切换区块链。

    2021-08-06
    3
  • 二两
    区块链三大特征:去中心、防篡改、可溯源 四种技术:点对点、密码学、区块存储、共识机制 区块链通过点对点的网络形式实现去中心化的特性,点对点让网络中每个成员节点有相同的能力与义务。 如果存在恶意节点,就可能让区块链不可信,不可信则不可用,为了避免这种情况,区块链基于密码学的方式连接每个区块(前置哈希)且通过对称+非对称的方式对区块数据进行签名从而实现防恶意篡改的出现,而点对点结构带来的数据扩散问题,区块链提出了交易数据使用区块存储以及共识机制这2种结局方案。 如果网络中单独扩散交易数据,会让扩散混乱,而使用区块的方式,将多个交易数据通过默克尔树结构构件,再扩散,通过区块序号来确保先后顺序的形式避免混乱,此外,为了避免恶意节点的作恶,共识机制让所有节点最终都保存一直性,共识分拜占庭共识与激励共识,分别使用在联盟链与公链。
    2021-08-20
    9
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部