专栏首页洞链区块链中常用共识算法总结
原创

区块链中常用共识算法总结

1. POW(Proof Of Work)


  • 一句话介绍:劳动致富,多劳者多得!
  • 描述:POW中文翻译是工作量证明。采用此共识的数字货币有比特币、莱特币等。工作量证明系统(或者说协议、函数),是一种应对拒绝服务攻击和其他服务滥用的经济对策。它要求发起者进行一定量的运算,也就意味着需要消耗计算机一定的时间。这种系统要求得到证明的过程是低效且漫长的,可是校验则是高效且迅速,概括起来就是求解难,验证容易。 比特币是第一个区块链应用,同时也是最著名的应用之一,它所使用的共识机制就是POW。那么具体是怎么实现的呢? 在比特币中,使用了SHA256这种哈希函数作为求解手段。SHA256有以下特征:
  1. 是一种散列函数,即相邻的x1和x2,求得的f(x1)和f(x2)差别极大。
  2. 不可逆推,给定了f(x)的值,推断不出输入值。
  3. 不存在比穷举更好的方法,可以使f(x)落在特定的范围。

实际使用过程中,每个节点需要打包的交易数据相同,再从尾部加一个随机数(节点自己选)作为整体输入来求输出值,把结果和当前的挖矿难度对比(要求输出值前x位为0),满足条件则向附近节点广播;不满足则更换随机数继续求解。最快求得解的节点,则可以视为挖矿胜出,取得其他节点的共识。

目前比特币已经吸引了全球大部分的运算能力,其他再使用PoW共识机制的区块链应用很难获得相同的计算能力来保障自身的安全,从而无法复制比特币的辉煌;同时由于挖矿造成大量的资源被浪费,共识达成的周期很长,导致了比特币的TPS(transaction per second,每秒执行事务数量)极低,只有个位数。

  • 优点: 算法简单,容易实现; 节点间无需交换额外的信息即可达成共识; 破坏系统需要投入极大的成本;
  • 缺点: 浪费能源; 区块的确认时间难以缩短; 新的区块链必须找到一种不同的散列算法,否则就会面临算力攻击; 容易产生分叉,需要等待多个确认; 永远没有最终性,需要检查点机制来弥补最终性;

2. POS( Proof of Stake)


  • 一句话介绍:持有越多,获得越多。
  • 提出目的:解决POW51%攻击
  • 描述:

不同的旷工计算不同的数学难题,这个数学难题和你的拥有币的时间/币的多少持反比例。拥有币时间越长,难度越低。持有币数量越多,难度越低。

POS通过区块链系统内部的虚拟资产来管理安全性,根据节点持有的通证数量或者时长来决定节点享有的权利大小。区块链系统的参与者锁定他们在该区块链上持有的虚拟资产(Coin或Token),他们会签署消息以达成一致意见。只有那些已经成为系统一部分的参与者才能够决定下一个区块的内容。

PoW共识算法从经济角度,可以自然做到防止区块链分叉(区块链分叉的本质就是网络各节点对区块链的生成产生分歧,无法达成共识)。但是PoS则需要精心设计好相应的规则来防止分叉,例如PoS可以设定惩罚机制,参与挖矿的矿工被要求锁定一定数量的虚拟资产。如果他们被侦测到了存在不当的行为,则系统会没收全部或部分被锁定的虚拟资产。

  • 优点: 在一定程度上缩短了共识达成的时间; 不再需要大量消耗能源挖矿。
  • 缺点: 还是需要挖矿,本质上没有解决商业应用的痛点; 所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。例如,以太坊的DAO攻击事件造成以太坊硬分叉,而ETC由此事件出现,事实上证明了此次硬分叉的失败。

3. DPOS(Delegated Proof of Stake)


  • 一句话介绍:POS的升级版
  • 提出目的:POW/POS浪费巨量算力。
  • 描述: DPoS机制,中文名叫做股份授权证明机制(又称受托人机制),代表数字货币是EOS。它的原理是让每一个通证的节点进行投票,选出集中多数票的节点,例如100个,然后这些节点会行使类似POS的权力。 DPOS利用利益相关方批准投票的权力以公平和民主的方式解决共识问题,所有网络参数,从费用估算到块间隔和交易规模,都可以通过选定的代表进行调整。从某种角度来看,DPOS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。
  • 优点: 大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证; 更加去中心化的机制; 拥有更高的处理效率
  • 缺点: 整个共识机制还是依赖于token,很多商业应用是不需要token存在的。

4. PBFT(Practical Byzantine Fault Tolerance)


  • 一句话介绍:解决一切出现的故障
  • 描述:拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决的问题要求的规范。

PBFT算法的核心理论是n>=3f+1 n是系统中的总节点数,f是允许出现故障的节点数。换句话说,如果这个系统允许出现f个故障,那么这个系统必须包括n个节点,才能解决故障。

  • 优点:PBFT在很多场景都有应用,在区块链场景中,一般适合于对强一致性有要求的私有链和联盟链场景。(Hyperledger Fabric 在 0.6 版中应用了 PBFT,而在 1.0 版中放弃了 PBFT,转而采用效率更高的 Kafka,支持单点和集群两种方式,由 Kafka 直接给交易排序和出块)

参考文档


https://www.jianshu.com/p/b56ab577222d

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • BMAN几篇文章的要点摘抄

    最近把BMAN公众号上的文章系统地读了一遍,整个公众号发的文章并不多,但对区块链的理解相当有深度,单单摘抄一遍都会有不一样的收获。

    申龙斌
  • 关于区块链和加密数字货币—来自达沃斯世界经济论坛年会的声音

    今年的世界经济论坛(WEF)年会已经结束,现在是时候回顾一下亮点了。本次论坛-在瑞士达沃斯举行,按照传统是从1月22日至25日。

    点滴科技资讯
  • 用NBitcoin进行区块链开发(6):交易签名

    比特币交易的签名过程是所有环节中最复杂的步骤之一,下面两篇文章对这个过程有详细的描述。

    申龙斌
  • 用NBitcoin进行区块链开发(7):助记词

    比特币的私钥是256位的二进制数字,占32个字节,比如: 3243F6A8885A308D313198A2E03707344A4093822299F31D008...

    申龙斌
  • Ledger Nano S开箱实测2 -- 添加数字资产

    熊市买了一个Ledger Nano S硬钱包进行定投囤币,昨天文章《Ledger Nano S开箱实测1 -- 初始化设备》介绍了如何初始化设备,注意备份好助记...

    申龙斌
  • 为什么说稳定币才是诺奖得主哈耶克想要的非国家货币?

    营长的朋友圈瞬间被刷屏,各种各样的解读更是铺天盖地。不过,真正促使营长向更深处思考的确是大摩自己的这条 QA:

    区块链大本营
  • 五分钟入门tendermint区块链开发

    区块链应用已经从单纯电子现金发展到去中心化投票等更多的领域,但是区块链这样的分布式系统的开发还存在一些困难的问题:安全、可靠性、敏捷度、以及一致性保证等等。Te...

    用户1408045
  • 匿名货币 2.0 SERO

    最近 Grin 和 Beam 引起了广泛地关注,匿名货币好似迎来又一个春天,然而本文介绍的 SERO,看似不温不火,实则潜力巨大。

    robinwen
  • 江卓尔说春节见底,难道牛要提前来了?

    2019年1月18日,白话区块链联合创始人采访了莱比特矿池创始人江卓尔,原文《2019春节见底,最佳策略是”轻判断重风控”》很长,亮点不少,我把自己的粗浅理解也...

    申龙斌
  • 区块链测试基础

    为了确保信任,软件测试人员必须确保区块链的所有组件都可以正常工作,并且区块链所有应用程序都以可信任的机制进行交互。

    苦叶子

扫码关注云+社区

领取腾讯云代金券