• PBFT性能会下降? 各种算法的对比。


    PBFT协议在超过100个节点的时候性能会下降
    作者:maxdeath
    链接:https://www.zhihu.com/question/60058591/answer/173970031

    首先要搞清为什么PBFT,乃至所有的BFT都没法应用于超过100个节点。原因的关键在于O(N2)的消息复杂度。这是什么意思呢?点对点的消息传输需要发一个消息就够了,这是O(1)的消息复杂度,要是广播一个消息,需要把消息发给网络里所有人一人一份,就是O(N)的消息复杂度,而想要可靠地,在有拜占庭节点(恶意节点)存在的网络里广播一条消息的话,至少需要O(N2)的消息复杂度,也就是说,如果网络有100个节点,如果你想让确认网络里的其他人都确实地收到你的消息,你至少要发10000条消息。这性能一看就好不了。于是才有了比特币,它把可靠的那部分用奖励,挖矿和最长链解决了,于是再大的网络也只是O(N)的消息复杂度,这就scalable了。但是另一个问题就出现了——大网络里传输效率和延迟有瓶颈,而这种瓶颈会制约可靠性。也就是说你广播的东西太大的话,比特币的那套奖励,挖矿和最长链的东西就不是那么好使了。于是,目前所有的提高scalability的方法基本上就是结合两者,也就是分层。无论是叫分层也好,委员会选举也好,差不多想法就是我们把某一部分的可靠性用比特币的方法解决,剩下的部分用BFT。这其实和代议制民主很像——所有人一起讨论事情太难了,那么我们让所有人选代表,然后选出来几个代表讨论事情就高效多了。但接下来的问题是这两部分怎么对接?两个方法对于恶意节点的数量要求不一样(BFT必须严格少于1/3,比特币的话是算力小于1/4),要不要奖励(自私挖矿算不算恶意呢?),共识类型不一样(BFT是最终共识,比特币是最长链共识,也就是允许分叉),是许可还是非许可。这些都是处理起来很让人头疼的问题,基本上,所有的分层算法都得要给出这些东西。而我目前为止还没有看到一个完全找不出漏洞的算法。就拿你说的sharding的那篇文章说吧。这个Elastico,或者叫SCP,我很惊讶这个竟然能发表,他们对于无穷小量的处理太随意了。我不是说他们结果一定不对,但是他们的证明是有问题的。他们分层非常的幼稚,他的方法就是简单的随机选,而随机选的时候,他们就是简单的说如果我们的随机方法是公平的,那么当这个小组的人数很大的时候,这个小组恶意节点超过1/3的可能无穷小。

    异步拜占庭容错(aBFT),以加快实现不可逆转性。 aBFT算法在1秒内提供100%的不可逆性确认。

    POW
    POW机制是依赖机器算力进行数学运算来获取记账权,资源消耗相比其他共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错。POW机制最早出现在比特币中,这也是区块链里出现的较早的共识机制。
    缺点:
    浪费能源;
    区块的确认时间难以缩短;
    新的区块链必须找到一种不同的散列算法,否则就会面临算力攻击;
    容易产生分叉,需要等待多个确认;
    永远没有最终性,需要检查点机制来弥补最终性;

    POS( Proof of Stake)权益证明

    DPOS(Delegated Proof of Stake)股份授权证明机制
    DPOS与POS原理相同,只是选了一些“人大代表”。BTS社区最先提出了DPOS机制。最近较热的EOS也是采用了DPOS机制。
    核心思想:百分之五十一的矿工具有不可逆转的权利。
    优点:该模式可以每30秒产生一个新区块,并且在正常的网络条件下区块链分叉的可能性极其小,即使发生也可以在几分钟内得到解决。
    缺点:整个共识机制还是依赖于token,很多商业应用是不需要token存在的。

    POOL验证池
    一句话介绍:基于传统的分布式一致性技术,加上数据验证机制。
    优点:
    不需要token也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证。
    缺点:
    去中心化程度不如Bitcoin;
    更适合多方参与的多中心商业模式。

    一致性算法(BFT-DPOS)
    EOS.IO软件能够精确的每0.5秒生成一个块,并且只有一个生产者有权在任何给定的时间点生成一个块。如果在预定时间没有生成块,则跳过该时间段的块。当跳过一个或多个块时,区块链中会出现0.5秒或更多秒的间隔。

  • 相关阅读:
    HTML5 jQuery图片上传前预览
    html5中form表单新增属性以及改良的input标签元素的种类
    PHP邮箱的正则表达式
    PHP手机号码正则表达式
    CSS中设置div垂直居中
    Linux服务器查看内存占用命令
    linux压缩解压文件
    网页是静态还是伪静态?
    帝国cms内容批量替换
    帝国CMS【操作类型】说明详解
  • 原文地址:https://www.cnblogs.com/xiaocongcong888/p/9487816.html
Copyright © 2020-2023  润新知