转自:http://www.cocoachina.com/cms/wap.php?action=article&id=22240。

一、概述:

1.工作量证明(Proof of Work):
  通过所有节点的工作量竞争来达成一致。竞争的是运算力。

2.权益证明(Proof of Stake):
  通过节点拥有代币数量的多少和时间,确定下一区块的创造者。竞争的是拥有代币的数量和时间。

3.委任权益证明(DPOS):
  通过一定算法选取固定数量的代表投票来达成一致。如果某代表不能履行投票职责,会被除名,重新选择代表加入。

4.实用拜占庭容错共识(PBFT):
  PBFT是一种基于严格数学证明的算法,需要经过三个阶段的信息交互和局部共识来达成最终的一致输出。

二、工作量证明(Proof of Work)

区块链共识算法中最常见的是比特币的工作量证明机制,它主要有两个功能:一是保证区块链的下一区块是唯一正确的块,二是防止强大的敌手干扰区块链系统从而导致区块链分叉。

工作量证明中,矿工通过竞争解决密码学难题来完成下一个块的增加和区块链的扩展,如图1所示为比特币工作量证明的简图;参与挖矿的矿工竞争将前一区块的hash与一个随机的比特串一起来计算出一个hash值,若输出的hash值满足前若干比特为0,即为解出了该难题。第一个解出难题的人获得扩展一个块的机会,并且能够获得一定量新挖出的比特币以及一小笔交易费作为其工作量的奖励。

尽管比特币的工作量证明机制是个非常杰出的共识设计,但并不是完美的。最常见的对工作量证明的质疑有两点:一是消耗算力巨大,不适合大规模系统,并且交易的确认时间需要10-16分钟,不能满足实时性需求;二是大多数挖矿活动集中在电力成本较低的区域,形成了局部中心化的趋势。

比特币的创造者Satoshi Nakamoto让人们初步认识到区块链改变未来世界的巨大潜力,但落实到具体应用,仍需要进一步探索更快速的、更加去中心化以及资源效率更高的共识算法。为此,许多互联网、计算机科学、金融、工业等行业的学者和业界人士进行了不断的探索,并提出了若干代替性的区块链共识方案,其中最有影响力的是权益证明(Proof of Stake)共识算法。

三、权益证明(Proof of Stake)

权益证明共识是代替工作量证明的共识机制中最完善和受到最多关注的,其共识的达成不需要参与者投入昂贵的计算机设备来参与挖矿竞争。相对于以比特币为代表的工作量证明共识系统中的矿工而言,基于权益证明共识的区块链系统中,参与者的角色是验证者Validator,他们只需要投资系统的代币并在特定时间内验证自己是否为下一区块创造者,即可完成下一区块的创建。如图2所示为权益证明的简要示意图。下一区块创造者是以某种确定的方式来选择,被选中的验证者将合适的交易打包成块并发布到区块链上。验证者被选中为下一区块创造者的概率与其所拥有的系统中代币的数量成正比例,简单来说即拥有300个代币的验证者被选中为下一区块创造者的概率是即拥有100个代币验证者的3倍。

由于权益证明中创造区块不需要算力资源等高成本,区块创造者不会获得区块奖励,但可以获得一定数额的交易打包费用。用权益证明共识产生区块和扩展区块链的方式也比比特币中用工作量证明的共识效率提高上千倍,并且大大节约了资源。

权益证明共识中一旦验证者创建了一个块,该块也需要提交到区块链上。不同的权益证明系统对提交过程的处理方式不同。

一个典型的例子是Tendermint,其系统中的每个节点都必须在每一个块上签名(在此过程中的角色称为“签名者”),直至达成了大多数节点对区块验证和记录到链上的共识;在其他一些系统中,选择一组随机的节点进行签名即可达成共识。

权益证明有效率高、节约资源的优点,但同时也面临着一些潜在的现实风险,业内研究者通常将其表述为nothing-at-stake问题,意即区块创造者和区块验证者完成各自的工作所投入的成本都极低,因而违背系统协议作恶的损失也很小。基于理性人的自利假设,参与者难免会出现做恶的情况,例如区块创造者同时创造2个块并收取两笔交易费,或者签名者同时签名2个块以获得2笔工作报酬。这些都与系统协议中同一时间段只能产生一个合法的区块且签名者不可对不合法的区块签名的规范相违背。

在新兴的“加密经济学”领域,区块链工程师们正在探索解决这些问题的方法。其中一个解决方案是要求验证者将其拥有的系统代币锁定在一种虚拟保险库中。如果验证者试图对系统进行双重签名或同时产生多个块进行分叉,那么这些代币就会被全部或部分罚没。类似的改进机制也在不同的采用权益证明的区块链系统被提出并进行了许多实践。

Peercoin是第一个将权益证明实现的代币,其次是blackcoin和NXT。此外,以太坊最早依赖于工作量证明共识,但正计划在2018年初迁移到权益证明,提出Casper试图解决工作量证明和权益证明中的问题。Decred采用的是工作量证明和权益证明的混合共识方案。

四、委任权益证明DPOS

DPOS是权益共识的一种改进版本,共识过程不再需要所有参与节点的大多数通过,而是委托部分代表来进行,这样可以进一步提高共识效率,也能较好地处理系统节点不在线的问题。在比特股(Bitshare)系统中采用的DPOS共识的原理是让每一个持有比特股的人进行投票,由此产生101位代表, 他们彼此的权利完全平等,可以将其理解为101个超级节点或者矿池。

从某种角度来看,DPOS与议会制度或人民代表大会制度有相似之处。如果代表不能履行他们的职责,例如当轮到他们产生区块时没能按时生成,他们会被除名,继而网络会选出新的超级节点来将其取代。采用DPOS共识的系统通常都会采用经济方面的奖励和惩罚机制来达成更稳定的共识。

五、实用拜占庭容错共识PBFT

PBFT是一种基于严格数学证明的算法,需要经过三个阶段的信息交互和局部共识来达成最终的一致输出。可以证明,系统中只要有三分之二以上比例的正常节点,就能保证最终一定可以输出一致的共识结果,尽管达成共识的时间不确定。

实用拜占庭容错协议的缺点在于不适用于大规模的节点共识,因为随着节点规模的增大,达成共识需要的时间大大增加,不符合效率需求。许多相关研究人员在探讨改进拜占庭协议,以解决不同应用场景下的效率问题。

六、总结

共识算法的性能直接影响着分布式系统的性能,例如安全性、鲁棒性、共识成本和效率等。如何在兼顾安全性和鲁棒性的基础上提高效率是一个需要持续讨论和研究的重点。目前关于区块链共识的各种研究也在根据具体应用场景做出多方面的改进,除了技术方案的改进之外,还需要结合经济和社会等因素寻找更加有针对性、更加完善的解决方案。

总的来说,对于区块链共识方案的研究为分布式系统中的一致性问题提供了较好的解决方案,目前已经有一些算法能较好地解决分布式系统中的共识等问题,在EUROCRYPT,ACM, Cryptology ePrint Archive等高水平会议、刊物上也有高质量的文章发表,对于上述问题进行了更深刻和前瞻性的探讨,但该领域仍然由许多问题有待解决,仍有很大的研究价值和发展空间。

六、区块链主流共识算法浅析相关推荐

  1. 投票选举 算法_区块链主流共识算法一文全通

    在每种伟大的加密货币背后,都有着一个伟大的共识算法.没有共识算法是完美的,但是它们各有千秋.在加密世界中,需要共识算法来防止重支付.这是迄今为止一些最流行的共识算法的简要介绍,从区块链到DAG以及介于 ...

  2. 【船长】区块链主流共识算法

    一.POW(Proof Of Work) Proof Of Work,也就是工作量证明.工作量证明系统(或者说协议.函数),是一种应对拒绝服务攻击和其他服务滥用的经济对策.它要求发起者进行一定量的运算 ...

  3. 第十一课 区块链常用共识算法介绍

    上一节课我们学习了共识算法理论基础,今天我们继续深入学习区块链共识算法,通过这节课我们将了解工作量证明.权威证明.权威授权证明.实用拜占庭容错等相关内容. 在学习课程的时候,你也可以领取BaaS平台为 ...

  4. 区块链开发公司:区块链技术共识算法的新玩法

    共识算法是什么? 共识机制就是用来解决分布式系统的一致性问题,其核心为在某个协议(共识算法)保障下,在有限的时间内,使得指定操作在分布式网络中是一致的.被承认的.不可篡改的.在区块链系统中,特定的共识 ...

  5. 区块链常见共识算法总结

    这两年,区块链的技术可以说是非常的火爆,不了解点什么都不好说自己是在互联网混的,有人将区块链称之为互联网2.0,可以说区块链将对现有的互联网技术进行改造升级.那么,就让我们一起来了解下什么是区块链吧. ...

  6. 区块链常见共识算法(consensus)

    什么是共识(consensus)? 共识一词在区块链中尤为重要,并且与更广泛的问题有关在分布式系统中同步状态,使得分布式系统中的不同参与者都(最终)就一个系统范围的状态达成一致,这被称为"达 ...

  7. 区块链新一代共识算法:VRF分布式可验证随机函数

    背景 共识分代 假设一个小岛,没有法币,由101个对等的没有隶属关系的记账人来记录小岛的经济活动(也就是所谓去中心化记账).这样的设计,冗余性应该非常好,某个记账人出问题了不影响整个系统,最大的麻烦是 ...

  8. BC之CM:区块链之共识机制——深入浅出以及国内外当下主流区块链平台共识机制纵向、横向比较相关配图

    BC之CM:区块链之共识机制--深入浅出以及国内外当下主流区块链平台共识机制纵向.横向比较相关配图 目录 区块链共识机制的深入浅出 国内外当下主流区块链平台共识机制纵向.横向比较 区块链共识机制的深入 ...

  9. 区块链主流开源技术体系介绍

    区块链技术如今是非常火热,不仅让金融家和创投家趋之若鹜,如今已经在多个领域遍地播种.作为拥有锐利触角的创业家们,是否也想将区块链集成到你们现有的应用中去,而作为IT技术工程师的你,是否也是跃跃欲试,想 ...

最新文章

  1. java 并发统计_java并发编程|CountDownLatch计数器
  2. Python程序员的“避坑”指南
  3. layui 日历选中日期,自动填充
  4. VB.NET模块的总结(一)精简版
  5. php 的ob start,php ob_start()函数详解
  6. 解答:为什么蚊子咬的包会痒痒
  7. 菜鸟CEO万霖:双11包裹量将继续增长 已建立更高效的物流枢纽
  8. sql server 关联_SQL Server中的关联规则挖掘
  9. Python 如何在csv中定位非数字和字母的符号
  10. 频谱分析仪原理结构框图
  11. 每次打开Word,Excel,弹出Office安装配置进度向导解决办法
  12. Github实用浏览器插件推荐
  13. 清华博士生被开除:告诉孩子,不吃学习的苦,就要吃生活的苦
  14. 转:Spyder 快捷键大全
  15. 解决:uni-app 图片加载不出来
  16. android 遥控器方向,android万能遥控器之一--前言及发射部分的简单实现
  17. Android应用测速组件实现原理,这篇看完还不懂跟我去摆地摊,全网首发
  18. 游戏运营是什么?运营专员需要具备什么能力?
  19. Arduino—舵机控制
  20. vue mysql 电商,Vue电商项目

热门文章

  1. JavaScript中的运算符和语句
  2. js `` 手机不支持
  3. 近指针, 远指针和巨指针
  4. sql多行合成一行的解决方法
  5. 图解JVM的Class文件格式(详细版)
  6. VM虚拟机 安装OS X 错误vcpu-0:VERIFY vmcore/vmm/main/physMem_monitor.c:1123
  7. UVa10006-Carmichael Numbers
  8. Vue快速入门笔记(一)
  9. 安装vs2019导致vs2017打开项目失败
  10. 命令行参数怎么输入_太好用了!谷歌开源的命令行接口工具fire