很多接触或者了解区块链过区块链的人,对“共识”两个字一定不陌生。今天,便借一个系列的分享,和大家一起学习“共识”算法的一些点滴。可能不全,但希望对大家有所帮助。首先,先通过这篇分享,帮助我们理清共识算法 一些理论概念。


什么是共识

所谓共识,就是指处在分布式系统中的众多节点就某一个决策或行为达成一致。但是达成共识并不是一件简单的事,整个系统中的节点可能会出现各种无法预知的问题,比如说节点宕机、通讯故障或者被恶意攻击了等。

在分布式系统领域,存在着一个FLP不可能定理,F、L、P是其三位提出者的姓名首字母。FLP不可能定理:在一个异步通讯网络中,只要存在一个故障节点,就不存在一种完美的共识算法可以正确的终止。只有在同步网络中,才存在这样的共识算法。

值得注意的是,同步网络中的共识模型使得整个系统在一个可控可预估的时间内到达某一个状态。而异步网络中的共识模型不存在这种可预估的可能,因为其中节点的通讯延迟是无上界的,节点的处理速度也是未知的。可以看出,这种异步模型更贴近我们真实的网络世界。我们上面也提到了,想要在异步环境下设计出这样的一种共识模型或共识算法是不可能的,而同步算法由于其需要等待所有的节点完成某一个动作,性能较为低下,所以,便产生了两者的中间产物:部分同步模型(Partial Synchrony Model)

部分同步模型,顾名思义,同步了但没完全同步。该模型会设置一个全局稳定时间(Global Stabilization Time,GST)作为该模型异步和同步之间的分界线。在GST到达之前,整个系统保持为异步状态,而到GST到达之后,整个系统恢复为同步状态。

但无论是同步网络还是异步网络,一个正确的共识算法必须满足以下三点:

  1. 一致性(Agreement):所有的节点都统一某个结果。
  2. 有效性(Validity):最终的结果必须是网络中某个节点提出来的。
  3. 终止性(Termination):所有节点最终都能到达某个结果。比如前面提到的部分同步模型中,GST后系统切换成同步状态就是为了保证节点能满足终止性。

共识算法有哪些

其实共识算法不是什么新鲜的东西,很久前它名为分布式一致性算法。随着区块链的出现,共识算法便专门被默认为是区块链中的分布式一致性算法。适用于区块链的共识算法按照不同的需要被分为不同的类别。

分类标准可以大致总结为以下这三种,随表进行举例:

  • 按照是否能够容忍拜占庭错误,即是否能够容许节点进行恶意的行为分类。公有链环境存在的节点无法监管和控制,必须使用拜占庭容错算法,而联盟链因为存在一定的信任基础,可以视情况选择非拜占庭容错算法。
  • 按照算法确定性类别分类,即分为确定性共识算法和概率性共识算法。确定性共识算法即一旦共识结果出来了,便不可能再出现更改的可能。而概率性共识算法则可能出现更改的情况,比如bitcoin中的分叉攻击,可能使得链上一部分已经达成的共识作废。
  • 按照选择矿工的方式进行分类。大致可以分为以下两种:选举类和证明类。选举类即通过选举决定谁作为出块节点。而证明类则通过设置某种证明方式,节点通过完成规定的证明过程,获得出块的权力。
共识算法 拜占庭容错 算法确定性 是否需要证明
PBFT ×
PoW ×
PoS ×
Paxos × ×
Raft × ×

未完待续

下一小节将和大家分享一些常见的共识算法。咕咕咕咕咕。

区块链知识拼图:共识算法(简介)相关推荐

  1. 视频教程-区块链基础:共识算法-区块链

    区块链基础:共识算法 多年互联网从业经验: 有丰富的的企业网站.手游.APP开发经验: 曾担任上海益盟软件技术股份有限公司项目经理及产品经理: 参与项目有益盟私募工厂.睿妙影音家庭物联网设备.手游东方 ...

  2. 万字长文:解读区块链7类共识算法

    摘要:本文将对区块链中常见的七类共识算法进行介绍,希望对读者探索区块链有所帮助. 区块链技术起源于比特币,最初是比特币等数字货币的一种底层技术,区块链融合了密码学.组网技术.共识算法.智能合约等多种技 ...

  3. 区块链知识系列 - PBFT 共识

    了解 BFT 拜占庭容错(Byzantine Fault Tolerance), 是算法的属性 共识协议要解决的核心问题是在网络中有节点作恶时如何能够达成共识. 要解决这个困难,首先需要了解" ...

  4. 区块链中的共识机制以及共识算法

    什么是共识 共识,从字面上来看,是在某方面达成一致.打个比方,一个部门最近来了几位新同事,部门主管为了欢迎新同事的加入,以能让新同事融入到新环境,提议下班后聚个餐,对于聚餐了,大伙对此举双手赞成,毕竟 ...

  5. 区块链知识系列 - App 与 DApp 的区别

    App vs DApp App = frontend + server DApp = frontend + contracts App DApp 入口 电脑浏览器/手机 Dweb浏览器/数字钱包 协议 ...

  6. 区块链知识之 VRF: 可验证随机函数

    区块链知识之 VRF: 可验证随机函数 介绍 可验证随机函数(Verifiable Random Function,简写 VRF)是一种将输入映射为可验证的伪随机输出的加密方案.该方案是由 Mical ...

  7. 区块链安全—详谈共识攻击(三)

    一.前言 我们在前面进行了两讲共识机制,在前文的讲述中,我们讲解了部分共识的具体流程以及优缺点.本文中,我们补充剩下的共识理念并分析其对应的优缺点.除此之外,我们针对相关的共识漏洞进行分析,为安全爱好 ...

  8. 区块链知识系列 - BTC和ETH的区别

    Bitcoin的出块时间 Bitcoin的区块平均产生时间是10分钟,每个区块的大小限制在1M左右 一个事务有了6个确认,我们就认为这个事务已经确定了,所以一个事务要1小时左右才能保证成功(最快),不 ...

  9. 区块链知识系列 - 系统学习EVM(二)-存储与安全

    区块链知识系列 - 系统学习EVM(一) 特点 EVM出于所谓运算速度和效率方面考虑,采用了非主流的256bit整数. 不支持浮点数 缺乏标准库支持,例如字符串拼接.切割.查找等等都需要开发者自己实现 ...

最新文章

  1. 计算机平均数的函数,Excel2010
  2. 一文盘点5种聚类算法,数据科学家必备!
  3. [OI]Noip 2018 题解总结(普及)
  4. 如何解决安装瑞星后用FoxMail收发邮件速度慢的问题。
  5. 机器学习--最基础的最常用的聚类算法
  6. 列表、元组、字典、集合的定义、操作与综合练习
  7. 【转】ABP源码分析四:Configuration
  8. ROS 教程之 navigation : 用 move_base 控制自己的机器人(1)
  9. LCD1602液晶显示
  10. matlab使用load指令,科学网—matlab常用方法 - 陈超的博文
  11. Ionic3在ts中获取html中值的方法
  12. ENVI辐射定标出现Calibration requires gain and offset for each band错误提示
  13. TCPUDP测试工具的使用
  14. CDP营销方案 不仅仅是数据整合
  15. 七、项目进度管理(二)【题】
  16. SystemVerilog芯片验证 SV语言部分(一)
  17. 一个简单的连续变焦红外镜头的从零开始的设计过程(zemax)(二)进一步优化,公差分析
  18. 常用数学符号英文名字
  19. 手把手教你进行微信小程序开发案例1---计算器
  20. win10 3D viewer

热门文章

  1. 解决SQLSever配置管理器不见了
  2. java dateformat gmt_如何将java.util.Date转换为GMT格式
  3. python利用try except进行展示异常报错信息
  4. 【代码随想录】栈和队列
  5. 《把信送给加西亚》--[美]阿尔伯特·哈伯德
  6. 科技疆域不断扩大 物联网本质逃不出这六点
  7. 80%头部企业都在用的威胁情报“最强大脑”是什么?
  8. TJamie-阅读作业2
  9. Xiaoxia[PG] Python可变参数与标准输出的重定位
  10. 迅雷:下载时提示“文件创建失败,无法继续下载”的解决办法