精华内容
下载资源
问答
  • 区块链共识机制

    千次阅读 2019-01-13 16:50:45
    更多关于区块链技术和投资的文章,请关注...什么是共识机制 共识机制的起源 共识机制的原理  POW  POS  DPOS  BFT 共识机制总结  共识机制的评价指标  共识机制对比  共识机制展望   什么是共...

    更多关于区块链技术和投资的文章,请关注公众号“币梭”

    https://mp.weixin.qq.com/s/RkdSrkzBDWmpL9iUNCyBlg

     

    什么是共识机制

    共识机制的起源

    共识机制的原理

        POW

        POS

        DPOS

        BFT

    共识机制总结

        共识机制的评价指标

        共识机制对比

        共识机制展望

     

    什么是共识机制

        

        区块链技术是去中心化分布式的P2P系统,节点是各处分散且平行的,所以必须设计一套制度,来维护系统的运作的顺序和公平性,统一区块链的版本,并奖励提供资源维护区块链的使用者,以及惩罚恶意的危害者,这个制度就是共识机制。

     

    共识机制的起源

     

        共识机制起源于拜占庭将军问题,拜占庭将军问题大概如下:

        拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。

        在拜占庭问题里,各邻国最重要的事情是:所有将军如何能过达成共识去攻打拜占庭帝国。每个城邦向其他九个城邦派出九名信使,那么任何时间总计有90次信息传输,并且每个城市分别收到9条信息,可能每一条都写着不同的进攻时间,除此之外,信息传递的过程中,如果叛徒想破坏原有的进攻时间,就会自己修改相关信息,然后发给其他城邦亿混淆视听,这样结果是,部分城市收到结果后,会遵循一个或多个城市已经修改了的进攻时间,然后他们又会把错误的信息广播给其他城市,这样整个信息链中就充满了错误的信息,变成了一个相互矛盾的纠结体。

        针对这个问题,人们提出了两种解决方法

     

    方案一:口头信息

    口头信息即使将军们派人用口信传达消息,口头传达消息隐含了下面前提条件:

    • 每个被发送的消息都能够被正确投递

    • 信息接受者知道消息是谁发的

    • 沉默(不发消息)可以被检测

        口头协议的算法很简单,如果其中一个节点,比如1发布消息出去,其他九个节点接受到1的消息,然后分别转告给其他的节点,每个节点都是信息的转达者,一轮下来,每个节点手上都会有10个信息(进攻或者撤退),有叛徒的话,那信息可能有进攻或者不进攻的不一致消息。每个人相当于手里有一本消息的账本,该怎么决策呢?如果有一半以上的人说进攻,那么采取进攻行动就是能成功的,所以这时即便有叛徒,只要听大部分人的,少数服从多数来行动即是有利的。

     

    举例:四位将军A、B、C、D,其中一位是叛徒

    1)D是叛徒。

    • 信息有A发送出去,A是忠诚将军,发送都是正确的信息v

    • B接收到A信息后,B是忠诚将军,转发正确信息v给C

    • D接收到D信息后,D是叛徒,转发错误信息x给C

    • C接受的信息集为{v, v, x},因为正确信息占大多数,所以会选择正确信息v作为执行的行动

    同理,B也是选择正确信息v作为执行的行动

     

    2)A是叛徒

    • A是叛徒,为了防止B、C、D三位达成一致,分别发送了信息x、y、z

    • B、C、D都是忠诚的将军,互相转发信息

    • B、C、D最终信息集都是{x, y, z}。因为信息集是一样的,所以B、C、D三位的执行的动作也是一致的。

    这种口头协议的算法也存在明显的缺点:口头协议并不会告知消息的上一个来源是谁,也就是消息不可追根溯源,出现信息不一致也很难找到叛徒在哪。

     

    方案二:书面协议

    书面协议相比口头协议,实际添加了下面两个隐含条件:

    • 将军们能够使用签名技术,签名不可伪造,一旦篡改即可发现。

    • 同时任何人都可以验证签名的可靠性。

    书面协议相比口头协议,所有的消息都是有记录的,解决了追根溯源的问题。

     

    方案三:比特币

        区块链技术是去中心化分布式的P2P网络系统,同样也存在拜占庭将军问题,比特币作为第一个区块链项目,通过过下面几个措施,完美解决拜占庭将军问题。

        措施一,发送信息成本。如果10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致谁都可以发起进攻的信息,为此,中本聪巧妙地在个系统加入了工作量证明法,工作量证明法需要花费计算机的算力去寻找合适的哈希值,谁是第一个寻找到哈希值,谁就可以传播消息,一段时间内只有一个节点可以传播信息。这样就解决信息混乱无序的问题。

        措施二,时间戳。如果不同的将军先后解出了题,各自先后向这个网络发布消息,于是各个节点都会收到来自不同节点发起的进攻或者不进攻的消息。中本聪设计了时间戳,为每个将军在解好题的时间盖上时间印章。最早解出题目的信息才是有效的。

        措施三,奖励机制。将军们凭什么要一起做工作量证明呢?中本聪设置一个奖励机制,谁是第一个计算出哈希值的,就奖励一定了比特币给谁,同样,拜占庭将军问题的奖励机制可以是瓜分拜占庭获得的利益。

        措施四,加密技术。对于信息的加密,中本聪引用了非对称加密。非对称加密算法的加密和解密使用来"公开密钥"和"私有密钥"两个密钥,这两个密钥成对出现,如果消息使用公钥加密,那么需要该公钥对应的私钥才能解密; 同样,如果消息使用私钥加密,那么需要该私钥对应的公钥才能解密.比如,将军A想给将军B发送消息,为防止消息泄露,将军A只需要使用B的公钥对信息加密,而B的公钥是公开的,B只需要用只有他自己只的私钥解密即可。非对称加密技术完美解决消息传送的私密性、身份确认和签名的不可伪造、篡改等问题。

        措施五,共同账本。如果其中有叛徒了,怎么办呢?在这个分布式网络里,每个将军都有一份实时与其他将军同步的消息账本,账本里有每个将军的签名都是可以验证身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些将军,尽管有消息不一致的,只要超过半数同意进攻,少数服从多数,共识达成。

        由此,在一个分布式的系统中,尽管有坏人,坏人可以做任意事情,比如不响应、发送错误信息、对不同节点发送不同决定、不同错误节点联合起来干坏事等等。但是,只要大多数人是好人,就完全有可能去中心化地实现共识。比特币因此完美解决了拜占庭将军问题。

     

    共识机制的原理

     

    下图是目前共识机制,本文只介绍POW、POS、DPOS和BFT共识机制

     

    POW

        POW,Proof Of Work,即工作量证明。最初是由中本聪提出来用于比特币系统,其核心思想是通过算力竞争来保证数据一致性和共识的安全性。比特币系统中,各节点(即矿工)基于各自的计算机算力相互竞争来公共同求解一个复杂但容易验证的SHA256数学难题,最快解决该难题的节点获得区块的记账权和系统自动生成的比特币奖励。

     

    比特币交易记账过程

          在比特币平台中,中本聪就是运用的pow工作量证明来使全网节点达到51%及以上的共识记账,以下将介绍pow工作量证明共识是如何记账的

    • 客户端产生新的交易,向全网广播

    • 每个节点收到请求,将交易纳入区块中

    • 每个进行POW共识算法,寻找合适的目标哈希值

    • 当某个节点找到了合适的目标哈希值,向全网广播

    • 当且仅当该区块的交易是有效的且在之前中未存在的,其他节点才认同该区块的有效性

    • 接受该区块且在该区块的末尾制造新的区块

     

    pow三要素

     1)工作量证明函数

         在比特币中使用的是SHA256算法函数,是密码哈希函数家族中输出值为256位的哈希算法。

      2)区块

        比特币的区块结构

    3)难度值

    关于难度值,如公式:

    • 新难度值=旧难度值*(过去2016个区块花费时长/20160分钟)

    • 目标值=最大目标值/难度值

            新难度值,撇开旧难度值,按比特币理想情况每10分钟出块的速度,过去2016个块的总花费接近20160分钟,这样,这个值永远趋近于1。

        目标值,最大目标值为一个固定数,若过去2016个区块花费时长少于20160分,那么这个系数会小,目标值将会被调大些,反之,目标值会被调小,因此,比特币的难度和出块速度将成反比例适当调整出块速度。

     

    pow算法流程

        从流程图中看出,pow工作量证明的流程主要经历三步:

    1)生成Merkle根哈希

        节点自己生成一笔交易,并且与其他所有即将打包的交易通过Merkle树算法生成Merkle根哈希

    2)组装区块头

        区块头将被作为计算出工作量证明输出的一个输入参数,因此第一步计算出来的Merkle根哈希和区块头的其他组成部分组装成区块头

    3)计算出工作量证明的输出

               i. 工作量证明的输出=SHA256(SHA256(区块头))

               ii. if(工作量证明的输出<目标值),证明工作量完成

               iii.if(工作量证明的输出>=目标值),变更随机数,递归i的逻辑,继续与目标值比对。

     

    优点

    完全去中心化,节点自由进出,避免建立和维护中心机构的成本

     

    缺点

    POW共识机制会导致大量资源浪费,并且挖矿的矿池出现高度集中趋势,有违去中心化的初心。更大的问题是POW共识达成时间比较长,比特币每秒最多只能7笔,不适合商用。

     

    POS

        POS,Proof Of Stake,即权益证明。2012年,PPCoin最先运用权益证明共识机制于区块链中。以太坊前三阶段均采用pow共识机制。第四阶段开始以太坊将采取权益证明机制。

        由于工作量证明消耗大量资源且计算资源越来越中心化,权益证明日益受到重视。如果工作量证明是将计算机的算力作为投票的份额,那么权益证明就是将与系统相关的权益作为投票的份额。PPCoin采用的POS的权益因子是币龄,所谓的币龄,就是根据钱包里面代币的数量和代币的时间来合成,比如你持有一百个币,总共持有了30天。那么此时你的币龄为3000。根据币龄计算挖矿难度,币龄越高,获得记账权的概率就越大。如果你发布了一个POS区块,你的币龄就会被清空。假如每被清空365个币龄,你将会从区块中获得0:05个币的。那么你将获得3000×5%÷365等于0.41个币作为奖励。

        假设网络同步性较高,系统以轮作为单位运行,每一轮开始,节点验证自己是否可以通过权益证明被选为代表,只有代表可以提出新的区块。代表在收到的最长的有效区块链后,提出新的待定区块,并将自己生成的新的区块广播出去,等待确认。下一轮开始时,重新选取代表,对上一轮的结果进行确认。诚实的代表会在最长的有效的区块链后面继续工作。如此循环,共同维护区块链。

     

    优缺点

        POS权益证明机制在一定程度上解决了工作量证明机制消耗能量大的问题,缩短了共识达成的时间,提高系统的效率。权益证明每一轮产生多个通过验证的代表,也就是产生多个区块,在网络同步性很差的时候,系统很容易产生分叉,影响一致性。若恶意节点成为代表,就会通过控制网络通信,形成网络分区。向不同的网络分区发送不同待定区块,就造成了网络分叉,从而可进行二次支付攻击,严重影响系统安全。恶意敌手也可以通过对诚实代表进行贿赂,破坏一致性。权益证明的关键在于如何选择恰当的权益,构造相应的算法,以保证系统的一致性和公平性,不当的权益会影响系统公平性。比如,PPCoin,采用币龄作为权益因子,若部分节点在进入系统初期就保持一部分小额交易不用支付,则币龄足够大,该节点更容易被选为代表,影响系统公平性。

        POS容易遭受无利害攻击。假设系统中出现两个分链,那么对于持有币的“挖矿者”来讲,矿工的最佳策略就是同时在两个分支上进行挖矿,这样无论哪个分支胜出,对于持币者来讲,都会获得利益,而不会有利益损失,这导致的问题是,只要系统存在分叉,"矿工们"都会同时在这几个分支上挖矿;因此在某种情况下,发起攻击的分叉链极可能成功,因为所有也也可能都在这个分叉链上形成了共识,而且甚至不用持有51%的权益,就可以成功发起分叉攻击。

     

    改良

        PoSV,针对PoS的币龄是时间的线性函数这一问题进行改进,致力于消除货币持有者的囤币现象。PoSV将POS中时间线性函数改为指数式的衰减函数,也就是,币龄的增长率随时间逐渐减少最后趋于零,因此新币的币龄比老币的币龄增长更快,直到达到上限阈值,这样在一定程度上缓和了货币持有者囤币现象。

        POA意为行动证明,也是POS的一种改良方案。它的本质是通过奖励参与度高的货币持有者而不是惩罚消极参与者来维护系统安全。主要思想是将挖矿生成币一部分以抽奖的方式分发给所有活跃节点,而节点拥有的股份与抽中的的概率成正比。

        Casper,是以太方后期使用权益证明共识机制,有来两个候选方案,分别是FFG和CBC。

        FFG,又名“Vitalik's Casper” ,是一种混合 PoW/PoS 的共识机制,它是以太坊第一个 PoS 权益证明的候选方法。具体地说,FFG 在工作量证明(如以太的 ethash PoW 链)的基础上,使用了权益证明。块链继续用 ethash PoW 算法增加区块,但是每50个块有一个 PoS “检查点”,通过网络验证者来评估区块的最终有效性。

        CBC,又称“Vlad's Casper”,与传统协议设计的方式不同:协议在开始阶段是部分确定的,其余部分 协议以证明能够满足所需/必需属性的方式得到。在这种情况下,得出完整协议的一种方法是实现所预计的安全性 (一个理想的对手) ,或者提出合理估计的错误的例外,或列举潜在的未来错误估计。更具体地说,Vlad 的工作侧重于设计协议,扩展单个节点对安全性估计的局限视角,以实现共识安全性。

     

    DPOS

        为了进一步加快交易速度,同时解决PoS中节点离线也能累积币龄的安全问题,Daniel Larimer于2014月提出DPoS。

        股份授权证明(DPoS)共识机制的基本思路类似“董事会决策”,即系统中每个股东节点可以将其持有的股份权益作为选票授予一个代表,获得票数最多且愿意为代表的前101个节点将进入“董事会”,按照既定的时间表轮流对交易进行打包结算并且签署(即生产)一个新区块,每个区块被签署之前必须缴纳一定量的保证金,其金额相当于生产一个区块的收入的100倍,授权代表节点必须对其他股东节点负责,如果其错过了签署相对应的区块,股东将会收回选票,从而将该节点“投出”董事会,因此授权节点通常必须保证99%以上的在线时间以实现盈利目标。

        DPOS目前用的项目有 BTS、EOS和ASCH,其中EOS的比较典型有名气。EOS系统中共有21个超级节点和100设备节点,超级节点和备用节点由EOS权益持有者选举产生。区块的生产按照21个区块为一轮。在每轮开始的时候会选出21个区块生产者,前20名区块生产者由系统根据网络持币用户的投票数自动生成,最后一名区块生产者根据其得票数概率生成。所选择的生产者会根据从区块时间导出伪随机数轮流生产区块。

     

    DPOS安全证明

        假设有3个区块生产者A、B、C。分六种场景证明DPOS的安全性。

    1)天下太平的正常情况:生产者按系统排序生产区块。

    2)少数人的小分叉。

        由于生产者顺位由系统安排,所以少数人在出块速度上注定比多数人慢,恶意的少数节点产一个块时,正常的多数节点至少产两个。于是,诚实的2/3多数节点产的链永远比少数节点长。

    3)断网:网络碎片化

        断网会导致任何分叉上都没有绝对多数的生成者。此时,最长的链将倒向最大的那个少数群体。但当网络恢复时,较小的少数群体会切换到最长的那条链,以恢复并修正共识。

        可能存在这样三个分叉:其中两个最长的分叉长度相同。在这种情况下,第3个(较小)分叉的块生产者重新加入网络时会打破平局。只要块生产者总数为奇数,不可能长时间保持平局。另外,生产者的顺位会被系统“洗牌”,这使得出块顺序随机化,从而确保即使是生产者数目相同的两个分叉也会以不同的步长增长,最终导致一个分叉超过另一个。

    4)双重生产:少数人多产两个块

        少数节点B在其时间段内产生了两个或更多可供选择的块。下一个计划生产者C可以选择跟在B产生的任何一个区块后构建链条。一旦如此,这个选择就成为最长的链,而所有选择B1的节点都将切换分叉。所以,少数恶意节点企图广播再多的替代块也无关紧要,它们当最长链的光景永远不会超过一轮。

    5)最后不可逆的区块

        在网络碎片化的情况下,多个分叉都可能持续变长。长远来看,最长的链终将获胜,但观察者需要一种确切的手段来判定一个块是否绝对处于增长最快的那条链。DPOS告诉观察者,应该视2/3多数块生产者的确认来决定。下图中,区块B已被C和A所确认,这代表了2/3多数确认,由此我们可以断定,只要恶意节点数量低于1/3,A-B-C-A这条链始终最长。

        这一规则类似于比特币的6块确认。但是,一些聪明人总能搞点事情出来,使得两个交易出现在不同的、且最后不可逆的区块上。这种边缘攻击要求攻击者能完全控制通信延迟,并且在几分钟内两次使用该控制。但即便这真的发生,那么“最长链胜出”的长期规则依然适用。所以,这种攻击的可能性无限接近0,并且经济后果无关紧要。

    6)多数生产者舞弊

        多数生产者一旦腐败,他们就可以产生无限数量的分叉,每个分叉都看起来以2/3多数确认向前走,最后不可逆块算法蜕变为最长链算法。最长链就是为最大多数所批准的那条链,而这将由少数剩下的诚实节点决定。但这种行为不会持续,因为利益相关方最终会投票替换生产者。

    所以,不管分叉多凌乱,只要利益相关方出手投票,链总能保持诚实。

     

    优点

    1)能耗更低:DPoS机制将节点数量进一步减少,在保证网络安全的前提下,整个网络的能耗进一步降低,网络运行成本最低。

    2)更快的确认速度:每个区块的时间为10秒,一笔交易(在得到6-10个确认后)大概1分钟。

     

    缺点

    1)投票的积极性并不高:绝大多数持股人从未参与投票。这是因为投票需要时间、精力以及技能,而这恰恰是大多数投资者所缺乏的。

    2)垄断性高:PoW下几乎没有门槛,任何人都可以投入算力,通过竞争获得区块奖励。而DPoS延续了PoS的弊端,只有持币者才可以获得区块链奖励,其实这就带来了一种制度性门槛,最终导致DPoS币的流动性大大减少,穷者越穷,富者越富。

    3)牺牲了中心化的概念,选举固定数量的见证人作为记账候选人有可能不适合完全去中心化概念。

     

    风险

    1、对于坏节点的处理存在诸多困难:社区选举不能及时有效的阻止一些破坏节点的出现,给网络造成安全隐患。

    2、超级节点易遭破坏:如果被选举出的超级节点没有强大的算力保护自身,很容易被DDOS(分布式拒绝服务攻击),这将会严重影响网络稳定。

     

    BFT

        拜占庭将军问题提出以后,有很多算法提出来用于解决这个问题,下面主要介绍区块链中使用的PBFT和DBFT两种算法。

     

    PBFT

        实用拜占庭容错算法PBFT是比较常用的解决拜占庭将军问题的算法,该算法主要是用来解决原来拜占庭算法效率不高的问题,将算法的复杂度从节点的指数级别降到节点的平方级别,是拜占庭算法在实际的应用中可行。

    PBFT算法主要用于节点比较少的联盟链,或者像DPOS这样具有代理机制的公链中,比如EOS,只有21个超级节点,就可以使用PBFT。超级账本就是使用PBFT算法

     

    PBFT的算法流程

        PBFT算法流程主要分为五个阶段:request、pre-prepare、prepare、commit和reply

        PBFT算法前提,采用密码学算法保证节点之间的消息传送是不可篡改的,PBFT容忍无效或者恶意节点数:f,为了保障整个系统可以正常运转,需要有2f+1个正常节点,系统的总节点数为:|R| = 3f + 1。也就是说,PBFT算法可以容忍小于1/3个无效或者恶意节点。

    PBFT是一种状态机副本复制算法,所有的副本在一个视图(view)轮换的过程中操作,主节点通过视图编号以及节点数集合来确定,即:主节点 p = v mod |R|。v:视图编号,|R|节点个数,p:主节点编号。

    PBFT算法主体实现流程图如下:

    1) REQUEST:

        客户端c向主节点p发送<REQUEST, o, t, c>请求。o: 请求的具体操作,t: 请求时客户端追加的时间戳,c:客户端标识。REQUEST: 包含消息内容m,以及消息摘要d(m)。客户端对请求进行签名。

    2)PRE-PREPARE:

        主节点收到客户端的请求,需要进行以下交验:

    • 客户端请求消息签名是否正确。

    非法请求丢弃。正确请求,分配一个编号n,编号n主要用于对客户端的请求进行排序。然后广播一条<<PRE-PREPARE, v, n, d>,  m>消息给其他副本节点。v:视图编号,d客户端消息摘要,m消息内容。<PRE-PREPARE, v, n, d>进行主节点签名。n是要在某一个范围区间内的[h, H]。

    3)PREPARE:

    副本节点i收到主节点的PRE-PREPARE消息,需要进行以下交验:

    • 主节点PRE-PREPARE消息签名是否正确。

    • 当前副本节点是否已经收到了一条在同一v下并且编号也是n,但是签名不同的PRE-PREPARE信息。

    • d与m的摘要是否一致。

    • n是否在区间[h, H]内。

    非法请求丢弃。正确请求,副本节点i向其他节点包括主节点发送一条<PREPARE, v, n, d, i>消息, v, n, d, m与上述PRE-PREPARE消息内容相同,i是当前副本节点编号。<PREPARE, v, n, d, i>进行副本节点i的签名。记录PRE-PREPARE和PREPARE消息到log中,用于View Change过程中恢复未完成的请求操作。

    4)COMMIT:

    主节点和副本节点收到PREPARE消息,需要进行以下交验:

    • 副本节点PREPARE消息签名是否正确。

    • 当前副本节点是否已经收到了同一视图v下的n。

    • n是否在区间[h, H]内。

    • d是否和当前已收到PRE-PPREPARE中的d相同

    非法请求丢弃。如果副本节点i收到了2f+1个验证通过的PREPARE消息,则向其他节点包括主节点发送一条<COMMIT, v, n, d, i>消息,v, n, d,  i与上述PREPARE消息内容相同。<COMMIT, v, n, d, i>进行副本节点i的签名。记录COMMIT消息到日志中,用于View Change过程中恢复未完成的请求操作。记录其他副本节点发送的PREPARE消息到log中。

    5)REPLY:

    主节点和副本节点收到COMMIT消息,需要进行以下交验:

    • 副本节点COMMIT消息签名是否正确。

    • 当前副本节点是否已经收到了同一视图v下的n。

    • d与m的摘要是否一致。

    • n是否在区间[h, H]内。

    非法请求丢弃。如果副本节点i收到了2f+1个验证通过的COMMIT消息,说明当前网络中的大部分节点已经达成共识,运行客户端的请求操作o,并返回<REPLY, v, t, c, i, r>给客户端,r:是请求操作结果,客户端如果收到f+1个相同的REPLY消息,说明客户端发起的请求已经达成全网共识,否则客户端需要判断是否重新发送请求给主节点。记录其他副本节点发送的COMMIT消息到log中。

    PBFT的View Change协议

        如果主节点作恶,它可能会给不同的请求编上相同的序号,或者不去分配序号,或者让相邻的序号不连续。备份节点应当有职责来主动检查这些序号的合法性。如果主节点掉线或者作恶不广播客户端的请求,客户端设置超时机制,超时的话,向所有副本节点广播请求消息。副本节点检测出主节点作恶或者下线,发起View Change协议。

        副本节点向其他节点广播<VIEW-CHANGE, v+1, n, C, P, i>消息。n是最新的stable checkpoint的编号,C是2f+1验证过的CheckPoint消息集合,P是当前副本节点未完成的请求的PRE-PREPARE和PREPARE消息集合。

        当主节点p = v + 1 mod |R|收到2f个有效的VIEW-CHANGE消息后,向其他节点广播<NEW-VIEW, v+1, V, O>消息。V是有效的VIEW-CHANGE消息集合。O是主节点重新发起的未经完成的PRE-PREPARE消息集合。PRE-PREPARE消息集合的选取规则:

    • 选取V中最小的stable checkpoint编号min-s,选取V中prepare消息的最大编号max-s。

    • 在min-s和max-s之间,如果存在P消息集合,则创建<<PRE-PREPARE, v+1, n, d>, m>消息。否则创建一个空的PRE-PREPARE消息,即:<<PRE-PREPARE, v+1, n, d(null)>, m(null)>, m(null)空消息,d(null)空消息摘要。

        副本节点收到主节点的NEW-VIEW消息,验证有效性,有效的话,进入v+1状态,并且开始O中的PRE-PREPARE消息处理流程。

     

    DBFT

        PBF主要用于联盟链,并不能单独使用于公链中,NEO改进了PBFT共识算法,提出代理拜占庭容错算法DBFT。它和EOS的DPos共识机制一样,由权益持有者投票选举代理人记账人,又代理人验证和产生区块。

    为了便于在区块链开放系统中应用,NEO的DBFT将PBFT的C/S构架的请求响应模式,改进为适合P2P网络的对等节点模式,并将静态的共识参与节点改为可动态进入、退出的动态共识参与节点,使其适合区块链的开放节点环境。

        DBFT的算法中,参与记账的是超级节点,普通节点可以 看到共识过程,并同步账本信息,但不参与记账。总共n个超级节点,分为一个议长和n-1个议员,议长会轮流当选。每次记账时,先有议长发起区块提案,一旦至少(2n+1)/3个记账节点同意这个提案,那么这个提案就成为最终发布的区块,并且该区块是不可逆的,所有里面的交易都是百分之百确认的,区块不会分叉。

     

    共识机制总结

    共识机制的评价指标

        区块链上采用不同的共识机制,在满足区块链数据一致性和有效性的同时会对系统整体性能产生不同的影响。综合考虑各个共识机制的特点,可以从一下5个维度作为共识机制的选择标准。

    安全性

        指共识机制防攻击、防欺诈的能力,即是否可以防止双重支付(即双花)、自私挖矿等攻击,是否有良好的容错能力。以金融交易为驱动的区块链系统在实现一致性的过程中,最主要的安全问题就是如何防止和检测双重支付行为。另外,自私挖矿通过采用适当的策略发布自己的区块,可以获得更高的相对收益,也是一种威胁比特币系统安全和公平性的攻击方法

    扩展性

        指区块链是否支持网络节点扩展,扩展性是区块链设计要考虑的关键因素之一。根据对象不同,扩展性又分为系统成员数量的增加和待确认交易数量增加两部分。扩展性主要考虑当系统成员数量、待确认交易数量增加时,随之带来的系统负载和网络通信量的变化。

    性能效率

        指区块链交易达成共识被确认的效率。即从交易达成共识被区块链中至被最终确认的时间延迟,也可以理解为系统每秒处理确认的交易数量。

    资源消耗

        指达成共识的过程中,系统所要耗费的资源大小,包括共识过程中耗费的CPU、网络输入输出、存储等计算机资源。区块链共识机制借助计算机资源或者网络通信资源达成共识,以比特币系统为例,基于工作量证明的共识机制需要消耗大量计算资源进行挖矿来提供信任证明完成共识

    共识机制对比

        巴比特创始人提出了区块链“不可能三角”理念:去中心化、安全、环保构成一个不可能三角形,设计一个符合其中特别特性的数字货币,则必然会使得第三个特性无法达成。

        对于共识机制而言,去中心化、效率与降低能耗和安全性三个方面,也不可能面面俱到,想要完全去中心化,则会牺牲一定的效率与降低能耗和性能,想要达到很高的可扩展,也必然面临着去中心化的危险,在这两者之外,还要权衡系统的安全性,就目前的共识机制来看,都无法完美实现三者的融合。如下图所示:

        上图常见4种共识机制PoW、PoS和PBFT,在去中心化、安全性和效能与降低能耗上面都有自己的不足。

        比如比特币和以太坊采用的POW共识算法,造成大量资源浪费,同时PoW共识算法的网络性能太低,需要等待多个确认,容易产生分叉,区块的确认共识达成的周期较长,现在每秒交易量的上限是7笔,不适合商用

        比如PoS虽然在效率和去中心化达到了较好的效果,但是在安全性上偏弱。主要是PoS容易遭受无利害关系攻击和远程攻击等。

        比如EOS采用DPOS共识算法,虽然在可扩展性、效率等方面大大提高,但是这是以牺牲去中心化作为前提的。

     

    共识机制展望

        共识机制作为区块链技术中至关重要的一个组成部分,备受学术界和企业界关注。良好的共识机制有益于区块链技术在理论和实践上的推广。

        在达成一致性的前提下,平衡去中心化、效率和资源是共识机制的痛点。比特币采用完全区中心,但是效率低下,EOS效率提高了,但是却牺牲了去中心化,未来应该在因地制宜,结合实际应用场景,设计最佳共识机制。另外可以借鉴各个共识机制的优缺点,尝试将不同的共识机制结合起来,形成一种新的共识机制,比如将PoW和PoS结合,将PoS和BFT结合。

        对于现存区块链的一些问题,要结合加密算法和底层存储技术的改进,共识机制才能发挥最大效果,比如零知识证明、环签名、闪电网络、DAG、HashGraph。随着全球对区块链的关注,越来越多人投入其中研究开发,未来会有更多工作高效设计巧妙的共识机制被设计出来。

        目前区块链的匿名性与弱中心化架构,与现有的监管体系存在某种程度的天然冲突,所以,比特币才会被用于暗网黑市交易、跨国境洗钱等场景。未来,区块链技术最终必然演化为"监管融入技术"的模式。区块链的难以篡改、共享账本、分布式的特性,更易与监管的接入,获得更加全面实时的监管数据。让监管机构本身也参与到技术中去,通过技术本身实现对技术的监管,将最终化解区块链与监管的冲突。

     

    更多关于区块链技术和投资的文章,请关注公众号“币梭”

    展开全文
  • 上文深入比特币、以太坊源码带你解读POW共识机制我们学习探讨了POW共识机制,看完得童鞋们应该就知道POW是有几大缺点的:出块慢,共识时间长、开销大等等,那么有没有其它的共识机制能够解决这些问题呢?答案当然是...

    序言

            上文深入比特币、以太坊源码带你解读POW共识机制我们学习探讨了POW共识机制,看完得童鞋们应该就知道POW是有几大缺点的:出块慢,共识时间长、开销大等等,那么有没有其它的共识机制能够解决这些问题呢?答案当然是:有,它就是POS共识机制。下面我们一起来看看它是怎么做到的。

    概念

           全称为Proof Of Stake,又叫权益证明。POS是指矿工节点通过自己持有的代币,竞争区块签名机会,持有的代币越多,签名成功出块的概率就越高。出块成功之后,根据各个矿工签名时的代币数量进行奖励分配,简单来说就是付出成本越高,收益越高。

    原理

    讲原理之前,先给大家普及两个概念:难度值、nonce和币龄

    难度值和nonce

            难度值和nonce在上文深入比特币、以太坊源码带你解读POW共识机制有对该名词的详细解释,这里就不再赘述了。

    币龄(coinage)

            币龄,顾名思义,就是代币的年龄。那么它是怎么计算出来的呢?它有什么用呢?我们先看下它是怎么计算出来的:
    coinage = 币的个数*持有时间
            看到这大家应该就懂了,币龄就是你持有可用币的时间,你的币越多,或者你持有时间越长,你拥有的币龄就越大。你的币龄越大,参与签名出块成功率就越高,因为更容易达到51%嘛。值得一提的是,当你使用币参与签名出块,无论你出块成功还是失败,你此次使用的币龄都将被清空,需要重新从0开始累计。

    币龄举例

            比如你有10个币,持有了10天未发生签名投票出块,那么产生的币龄就是100;如果这时候你这10个币参与了签名投票出块,那么你拥有的这100个币龄就被花掉了,你的币数量虽然还是10个,但是币龄要被重置,变更为0。币龄在数据链上就可以取到,任何人都可以验证。

    币龄/收益转换

    收益计算公式:
    收益 = 币龄 * 年利率 / 365
            打个比方说,你如果拥有3650的币龄,持币利率为1%,那么可获得的收益为 3650*0.01/365 = 0.1。说明该矿工此次挖矿成功可获得0.1的代币奖励。

    原理

    我们先看下它的有效hash计算方式:
    hash (block_header) < target * coinage
            其实POS的原理和POW比较类似,系统设定好挖矿目标值target,然后矿工开始工作出块,矿工每次出块都是nonce从1开始递增进行寻找可用的nonce值,直到找到符合规则、可用的hash为止,最先找到的矿工可获得挖矿奖励。
            但是,从上面的就可以看出,coinage这个变量会造成每个矿工获得有效hash的集合大小不一样,矿工的币龄越大,也就意味着它获得有效hash越容易。且矿工参与签名的币越多,就越容易满足51%的成功出块条件,更容易获得奖励。

    举例

    例如当前target是4369,完整的哈希长度假设是16位.
      A矿工的币龄是15,那么A矿工的目标值为65535,换算成十六进制就是0x000000000000FFFF。即
    hash( block_header ) < 0x000000000000FFFF
      而B矿工比较有钱,他的币龄是240,那么B矿工的目标值就是1,048,560,换算成十六进制就是0x00000000000FFFFF。即:
    hash( block_header ) < 0x00000000000FFFFF
      B矿工的可用hash集合更大,所以B矿工获得记账权的概率肯定要比A高。

    优点

    破解了51%攻击
            如果挖矿者发起51%攻击,就需要拥有全网51%的币或币龄,这几乎不可能办到,即使你成功地实施了51%攻击,那么也意味着作为全网最大的持币大户的你,损失也会最大。
    相比POW,效率更高
            可用更快的达成共识,出块更快。
    能耗低
            挖矿不依赖于大量资源的消耗。通过持币利息进行通胀。
    安全性
            规则上限制了必须持币30天以上才能参与区块签名,加大了作恶成本。

    缺点

    趋于中心化
            POS基于权益证明机制,若代币趋向集中的化,去中心化也变相的趋向于中心化了
    效率不高
            虽然相比于POW,POS的效率有显著的提升,但是还是无法满足用户的需求。

    思考

    币发行问题
            我们从pos的实现算法公式去看,币龄的计算公式中,假如一开始挖矿,只有创始区块中有币,也就是说其他矿机是没法参与挖矿的,因为币的个数这个值对他们来说永远是零,这也就是pos机制的缺陷之一币无法发行的问题。
    币龄积攒问题
             同样是从pos的实现算法公式可以分析到,币龄其实就是时间,一旦挖矿者囤积一定的币,很久很久之后发起攻击,这样他也将很容易拿到记账权,所以我们得给每个币设计一个时间上限。
    弱流通性
            设计时间上限后,虽然解决掉了部分挖矿者囤积币的缺陷,从公式中仍然看到还会面临一个问题,也就是币的数量这个因素还是会影响我们拿到记账权,很多挖矿者还会囤积代币,持币者长期不参与出块,想着长时间持币获得利息,给代币造成流通上的缺陷。目前有些平台引入币龄按时间衰弱的方案来解决这一缺陷(例如:瑞迪币)。
    矿工离线攻击
            接下来让我们来看看pos共识机制还有哪方面的不足,即使上面的各种缺陷都多少有些解决方案,但例如挖矿者挖一段时间后离线,此时,时间将不纳入币龄减弱计算,这样,挖矿者通过离线时间长来囤积挖矿,同样面临灾难。
    Nothing at Stake
            Nothing at Stake,又叫无成本利益问题。意思在PoS系统中做任何事几乎没有成本,比如在PoS系统上挖矿几乎没有成本,这也就意味着分叉非常方便。方便到什么程度呢,每个诚实矿工在产生孤块的时候都可以继续挖下去,反正也没什么成本,反正分叉链和主链都可以同时挖,也就是任何持币较少的用户都可以尝试分叉,并且把分叉链广播出去。这个时候如果其他诚实矿工看到了,第一反应也是没有成本,那么咱们也来挖吧,说不定什么时候就值钱了,意思就是说任何逐利的矿工并不会使这个系统变得更强壮稳定,而是更加的混乱,可能会出现分叉链长度超过主链长度

    POS我们就介绍到这里了,大家有什么不同的见解欢迎留言讨论哦

    展开全文
  • POS共识机制

    千次阅读 2018-08-29 16:14:17
    POS共识机制   在上篇文章中,我大概介绍了一下整个区块链的共识机制的重要性以及工作原理,用简单的一句话来概括总结,其实共识机制,就是现实生活的国家法律,在区块链的世界中用代码的形式做到了整个区块链...

    POS共识机制

     

    在上篇文章中,我大概介绍了一下整个区块链的共识机制的重要性以及工作原理,用简单的一句话来概括总结,其实共识机制,就是现实生活的国家法律,在区块链的世界中用代码的形式做到了整个区块链网络的“法律法规”,因此说共识机制是区块链网络中的灵魂,在我眼中看来是毫不为过的。紧接着,我又介绍了现阶段最常用以及最稳定的POW共识算法,虽然他很暴力,利用计算机的算力来保证了区块链网络的一致性,但是不得不说,他的确是最有效的手段之一。

     

    但是我们也知道POW在计算资源的浪费上的确有很多的问题,同时对于矿机的计算应能要求也太高,因此顺应而生的就是今天要讲的算法,叫做POS,可能很多人对于这个算法都并不陌生,他的全称即为Proof of Stake,翻译过来其实就叫做股权证明,这是什么意思呢,简单的来说其实就是说,你将资产存在银行,每个月都会获得相应的利息,而在区块链的数字世界中,即就是将你的数字货币以及你存放在数字货币的时间时间来决定你的获得的利息。

     

     

    在POS的世界中,还有一个概念叫做币龄,我先来讲一下他的计算方法,举个例子,比如说你在你的区块链节点中存放了100个币,这100个币的存放时间已经有10天,这样的话,你的币龄就等于100*10=1000。而这个币龄有什么用呢,其实就是在产生区块的时候,比如说你发现了一个区块,这样的话,你的币龄就会被清空,而你每没空365个币龄,你相应的就可以获得0.05个币,当然不同的区块链网络可以不一样,这样的话在我刚刚的举例中,加入拥有1000币龄的节点发现的一个区块,他可以获得1000*0.05/365=0.137个币,这样其实就相当于现实生活中的银行一样,只要你有钱便会有利息。而且在这种机制中,显而易见,只有节点拥有的币越多,他的收益也就越大。

     

    这有几个好处,大家可以想一下:

     

    首先,我们都知道,比特币以太坊现在的挖矿难度在不断的提升,随着难度的增大,可想而知的是,大家因为收益减少,挖矿的动力也在一点点消失,自然而然的是矿工也会不断的减少,整个区块链的P2P网络的活跃度自然也在不断的降低,这正是大家最不想看到的结果,而POS是这样的,如果说你想挖矿,你必须得保持这你的轻节点钱包在先,这样你才会在POS的区块中收到利息,这样反而促进了网络中轻钱包节点的活跃度增加,间接保证了整个P2P网络的良心发展。

     

    其次,伴随挖矿难度增加,矿工人数的下降,比特币很有可能被一些高算力的人、或团队、或矿池,进行51%攻击,导致整个比特币网络崩溃。将能伪造比特币网络的任何数据,这样你的钱包里的数字货币可能不复存在。而在POS的网络中,他得控制50%的数字货币也有可能,而POS的算法会使整个区块链p2p网络不断的健壮,这样也一定程度上的防止了51%的攻击。

     

    接着,虽然我们知道比特币是一个定量的数字货币,但是比特币其实是一个通货紧缩的体系。因为当我们遗失或者忘记了钱包密钥时,我们会永远无法再拿回钱包里的钱,这意味着,每年都会有一些比特币随着钱包的丢失而永远被找不回来,这就形成了实质上的通货紧缩,或者几年后比特只有几百万个,甚至更少,从这个角度来看,我十分赞同比特币或许会成为数字时代的一个收藏品,而收藏品的价值,我们现在也无法估计。而在POS中,提供一定的年利率,尽可能保证既不通货膨胀,也不通货紧缩。

     

    因此我觉得,POS其实是在POW的基础上建立起来的全新的体系,POS+POW的共存的共识机制或许也是一个很不错的选择,在我看来,也是有着非常优秀的技术见解以及技术未来。

     

    免手续费的数字货币场外交易所:币汇

    展开全文
  • 由于区块链是去中心化分散网络,所以必须设计一套维护系统的运作顺序和公平性的机制,即共识机制,用来决定谁取得区块链的记账权并获得系统新币奖励。比特币的POW共识机制是一种多劳多得的模式,其优点是算法简单,...

    前言

    由于区块链是去中心化分散网络,所以必须设计一套维护系统的运作顺序和公平性的机制,即共识机制,用来决定谁取得区块链的记账权并获得系统新币奖励。比特币的POW共识机制是一种多劳多得的模式,其优点是算法简单,容易实现,破坏系统的话需要投入巨大的成本,能够有一定的安全保障。不过该算法的缺点也比较明显,就是需要耗费大量电力,对交易的处理效率较低,像比特币系统就是每秒7笔交易的处理能力。因此,人们不断去琢磨新的共识机制,以便更好地运作区块链系统。

    上一节,我们介绍了POW共识机制,本章将对区块链另外的一些共识机制做介绍,它就是POS共识机制。POS全称为proof of stake,中文翻译为权益证明,其最早使用在点点币中,它主要是解决POW中资源浪费的问题。

    对于PoW,由于矿场的出现及挖矿设备性能的不断提升,算力开始集中,节点数和算力值渐渐不适配,同时PoW太浪费了,旷工持续挖矿进行的重复性Hash计算没有任何实际或者科学价值,而且还有一个更大的问题,作恶是没有成本的,旷工的恶意攻击并不会对旷工下次记账并获取相关权益(比特币)产生任何影响,鉴于此,人们提出了PoS。

    PoS算法是针对PoW算法的缺点的改进。PoS由Quantum Mechanic2011年在bitcointalk首先提出,后经Peercoin和NXT以不同思路实现。PoS不像PoW那样,无论什么人,买了矿机,下载了软件,就可以参与。PoS要求参与者预先放一些代币(利益)在区块链上,类似将财产存储在银行,这种模式会根据你持有数字货币的量和时间,分配给你相应的利息。用户只有将一些利益放进链里,相当于押金,用户才会更关注,做出的决定才会更理性。同时也可以引入奖惩机制,使节点的运行更可控,同时更好地防止攻击。

    一、PoS的实现原理及公式

    要理解pos的实现原理,我认为从pos的实现算法公式来理解是最为直观的,其公式为:

    hash(block_header) =<target * coinage
    
    币龄的计算:coinage = 币的个数*币的剩余使用时间
    

    其中,coinage表示币龄,这将意味着,币龄越大,越容易得到答案。而其中币龄的计算是通过挖矿者拥有的币乘以每个币的剩下使用时间得到,这也将意味着拥有的币越多,也越容易得到答案。这样,pos解决了pow中浪费资源的问题,同时挖矿者不可能拥有全网51%的币,所以也解决了51%攻击的问题。

    PoS(Proof of Stake):股权证明,与PoW相比,不需要证明你在记账前做了某项工作,而是证明你拥有某些财产。股权决定一起,谁的股权大,谁记账的概率就越大。由于PoS是BitCoin出现后提出的共识算法,目前还有得到实际的验证,并且,PoS不是一个,而是一类共识算法。最先使用PoS的是Peer Coin,不过是一种朴素的PoS,目前呼声很高的是ETH Casper,但还没有投产(拭目以待吧),所以关于PoS的描述基于Peer Coin。

    工作机制
    开始竞争出块记账前,拥有权益的节点将自己的权益放入PoS机制中,同时身份变为验证者,PoS机制根据验证者下注的多少,采用随机的方式选出一个记账者进行出块记账。这个随机并不是真正的随机,一般跟下注的权益成正比,谁的权益多,谁获取记账权的概率就越大。如果选出的记账者在一段时间内没有记账,PoS机制重新选择记账节点,当出块完成,开始进入下一轮的记账。

    我们以Peer Coin来举例说明PoS的工作机制。Peer Coin是最先采用PoS共识机制的数字货币。在Peer Coin中,引入了币龄和币天的概念。所谓币天,就是你持有货币的时间,币龄=币的数量比天。比如你有100个币,总共持有30天(Peer Coin中未使用至少30天的币可以参与竞争下一区块),那么你的币龄就是10030=3000,你作为币的持有者,参与下一轮竞争,过程如下:

    1. 在竞争开始前,你将3000币龄作为筹码下注,并成为记账验证者,
    2. PoW机制会随机的选出一个记账者,刚好是你 你开始记账并完成
    3. 你的3000币龄被清0
    4. 你获得利息=3000 * 5% / 365 = 0.41个币(每被清空365币龄,你将会从区块中获得0.05个币的利息)

    理解随机:选我、选我、选我?PoS在选择记账者时一般有两种做法,一种是挑选下注多(权益大)的进行轮流记账;还有一种是跟PoW结合,在PoW中,决定旷工能否出块的一个重要因素是出块的难度,PoS将出块难度和权益挂钩,权益越大,难度越小,出块概率越大。

    二、PoS的优缺点

    通过上面的描述和PoS的特点,PoS优点为:

    1. 节能环保,不需要无用计算;
    2. 性能高;
    3. 更加安全;
    4. 人人可挖矿(获得利息),不用担心算力集中导致中心化出现;
    5. 避免货币紧缩

    为什么PoS更加安全?
    在指定时间内,在POS体系中,即使你拥有了全球51%的算力,也未必能够进行51%攻击,因为,有一部分的货币并不是挖矿产生的,而是由利息产生(利息存放在POS区块中),这要求攻击者还需要持有全球超过51%的货币量。这大大提高了51%攻击的难度。
    在PoS机制下,持有币越多,越容易获得记账权,接近于赢家通吃的感觉,但持有的币越多,越接近于一个诚实的节点,因为破坏整个网络带来的损失也越大,即假设富人不会做恶,毕竟做恶的目标是钱,若你富有,自然就没有做恶的动力。

    pos的缺陷:

    从pos的实现原理和实现算法公式上分析,pos很完美的解决了pow的算力以及51%攻击问题,那么,pos是不是真的就很完美了呢?

    缺陷一:

    我们再从pos的实现算法公式去看,币龄的计算公式中,假如一开始挖矿,只有创始区块中有币,也就是说其他矿机是没法参与挖矿的,因为币的个数这个值对他们来说永远是零,这也就是pos机制的缺陷之一币无法发行的问题。

    缺陷二:

    同样是从pos的实现算法公式可以分析到,币龄其实就是时间,一旦挖矿者囤积一定的币,很久很久之后发起攻击,这样他也将很容易拿到记账权,所以我们得给每个币设计一个时间上限。

    缺陷三:

    设计时间上限后,虽然解决掉了部分挖矿者囤积币的缺陷,从公式中仍然看到还会面临一个问题,也就是币的数量这个因素还是会影响我们拿到记账权,很多挖矿者还会囤积代币,给代币造成流通上的缺陷。目前有些平台引入币龄按时间衰弱的方案来解决这一缺陷(例如:瑞迪币)。

    缺陷四:

    接下来让我们来看看pos共识机制还有哪方面的不足,即使上面的各种缺陷都多少有些解决方案,但例如挖矿者挖一段时间后离线,此时,时间将不纳入币龄减弱计算,这样,挖矿者通过离线时间长来囤积挖矿,同样面临灾难。

    三、PoS特点及分类

    PoS 特点

    1. PoS需要一定量的权益作为出块的竞争资本
    2. PoS不需要进行大量的“无用”Hash计算
    3. PoS偏向“权利”集中制,但又做了均衡(出块清0)
    4. PoS通过股权质押对作恶者进行惩罚
    5. PoS提供激励机制

    PoS 分类
    先说三个问题:
    链分叉问题:PoW从经济角度,可以自然做到防止链分叉,但PoS需要精心审计,即nothing at stake问题。PoS可以采用一定的惩罚机制。

    远程攻击问题:即如旷工在撤回被定的虚拟资产后,再发起之前发生的例行区块的分叉。

    卡特尔形成问题:即区块链的寡头垄断,由于PoS共识算法是谁“富有”,谁就有更大的话语权,这样少数富有旷工之间的“协调”将导致寡头龙蛋的形成。

    目前业内PoS共识算法的实现主要分为两类:

    简单的的PoS系统。这类PoS很少甚至没有从算法的设计上来解决上述问题,一般是比较早期的PoS尝试。比较典型的例子是Peer Coin(点点币,PPC)、新星币(Nova Coin,NVC)、黑币(Black Coin,BLK)、NextCoin(未来币,NXT)等等。

    精心设计的PoS系统,相对来说比较新。基于不同的实现方式,精心设计的PoS系统可以分为两种。一种是基于拜占庭容错的权益证明(BFT based PoS),比如Tendermint,另一种是基于链的权益证明(Chain based PoS),比如ETH Casper和ADA的Ouroboros。

    第一类PoS系统安全性不够。第二类PoS系统目前还不够成熟,有一些处于早期运行阶段,有一些还处理讨论和测试阶段。

    四、pos的发展历程

    由于pos存在以上四大缺陷,所以pos的发展历程经历了三个版本,即pos1.0、pos2.0以及pos3.0,其中pos2.0在算法公式中使用的是币的数量,这样,上述缺陷二到四就不再是问题,可这样以后却导致了pos共识机制面临了无成本利益的问题(即 nothing at stake),这也将意味着很容易产生分叉。

    五、casper协议

    第四章节我们说到pos的发展历程时,提到其为了解决其中4个缺陷,引出很多版本,也就是使用了pos2.0,也会无法避免的引发无成本利益导致很容易分叉的问题,而以太坊的共识机制就是使用的pos共识机制,那么我们来看看以太坊是如何解决这个问题的?

    1.什么是无成本利益关系问题

    在解决无成本利益关系这个问题前,我们先来看看什么是无成本利益关系问题,因此,我们可以先模拟下这种场景,如下图所示:
    在这里插入图片描述
    假设我们处在上面的这种情况下,有一条蓝色的主链和一条红色的从主链中分出来的链条,如何禁止一个恶意的矿工在红色区块上挖矿然后推动一次硬分叉(Hard Fork)呢?

    在一个工作量证明系统上,这一风险是可以被减轻的。

    假设恶意矿工想在红色链上挖矿。即便她投入了她所有的哈希算力,也不会有任何矿工加入她在新链上挖矿。每个其他人都将继续在蓝色链上挖矿,因为在最长的链上挖矿收益更可观,而且没有风险。

    记住,工作量证明在资源方面是非常昂贵的。对一个矿工来说,花费许多资源在一个将会被网络拒绝的区块上是没有任何意义的。因此,链分裂在一个工作量证明系统中是被避免了的,因为攻击者将不得不付出大量金钱。

    但是,当你把这种情形放到到权益证明下的时候,事情看起来就有些不一样了。如果你是一个验证者,你可以简单地把钱投到红蓝两条链上,完全无需担心间接的不良后果。不管发生什么事,你都总是可以赢,不会失去任何东西,不管你的行为有多恶意。

    这就是所谓的“无成本利益关系(Nothing at Stake)”问题,也是以太坊必须解决的问题。他们需要一种协议,可以实行权益证明,同时减少“无成本利益关系”问题。

    2.引入casper协议解决无成本利益关系问题

    Csaper是以太坊选择实行的PoS协议,既然有人恶意去使得我们的区块链产生分叉,那么我们想方设法去对恶意制造者加以惩罚,这样不就可以解决我们说的无成本利益关系问题了吗?Csaper协议正式奔着这样的做法去实现的,那我们来看看Csaper是如何去做的呢?

    1. 验证者押下一定比例的他们拥有的以太币作为保证金。
    2. 然后,他们将开始验证区块。也就是说,当他们发现一个可以他们认为可以被加到链上的区块的时候,他们将以通过押下赌注来验证它。
    3. 如果该区块被加到链上,然后验证者们将得到一个跟他们的赌注成比例的奖励。
    4. 但是,如果一个验证者采用一种恶意的方式行动、试图做“无利害关系”的事,他们将立即遭到惩罚,他们所有的权益都会被砍掉。

    正是利用了这样的对赌协议,帮我们对恶意制造者加以了惩罚,使得我们的区块链尽量保障不会产生分叉。

    3.PoS运作的机制大致如下:

    1. 加入PoS机制的都是持币人,成为验证者( validator);
    2. PoS算法在这些验证者里挑一个给予权利生成新的区块。挑选顺序依据持币的多少;
    3. 如果在一定时间内,没有生成区块,PoS则挑选下一个验证者,给予生成新区块的权利,
    4. 以此类推,以区块链中最长的链为准。
    展开全文
  • 共识机制

    2020-01-19 17:07:15
    共识与一致性的区别: 共识(Consensus),很多时候会见到与一致性(Consistency)术语放在一起讨论。严谨地讲,两者的含义并不完全相同。 一致性的含义比共识宽泛,在不同场景(基于事务的数据库、分布式系统等)...
  • 区块链之共识机制

    2020-04-03 23:25:01
    网络中节点之间的共识,机器与机器之间的共识。...共识机制 解决存储数据的问题和通过数据的问题 各个节点达成一致的策略和方法。区块链的核心。 不同的共识机制适用于不同的场景 常见的共识机制 pow p...
  • 委托权益证明,是由POS改进的一种共识机制,类似由股东选取出一个董事会,只有董事会的成员才有权进行代理记账,普通股东无权进行记账。但是普通股东有选举董事会的成员,如果看董事会某成员不顺眼(比如这货侵犯了...
  • 浅谈POW共识机制

    千次阅读 2018-10-30 09:34:09
    浅谈POW共识机制 前言 近些年炒得极其火热的比特币,由于采用了POW共识机制,越来越多的人采取投资购买矿机来形成矿池,进而以此来寻找新的块,通过这种途径来获取找到新的块的比特币的奖励,以及拥有块的记账权...
  • 共识机制

    万次阅读 2019-05-14 09:13:33
    实现并执行共识是加密货币得以存在的核心。那么共识是什么,又是如何实现的呢?让我们从字典上的定义开始。 共识:名词,指普遍认可的协议。 这看起来很简单。我们可以将共识理解为普遍的或全局的协议。达成共识...
  • Fabric共识机制

    千次阅读 2019-12-22 21:50:41
      在介绍共识机制前,本文会先介绍网络节点架构,了解背书节点等基本概念。 1. 网络节点架构   节点是区块链的通信主体,是一个逻辑概念。多个不同类型的节点可以运行在同一物理服务器上。 1.1 客户端节点   ...
  • POC共识机制详解

    千次阅读 2019-06-05 22:58:28
    POC共识机制详解 原文链接:https://niels.wang/2019/06/02/POC/#more 什么是POC共识 首先什么是区块链中的共识机制?能够确保分布式节点维护数据一致性的机制就是共识机制。比较成熟的共识机制有POW、POS、DPOS、...
  • 从比特币诞生以来,POW的设计理念成为数字货币和区块链的主流共识机制,但是由于其对能源的消耗巨大,2013年点点币(Peercoin)系统中提出并实现了另一种共识机制——权益证明。目前点点币和量子链等都采用POS共识...
  • 区块链共识机制简述

    2019-04-24 10:28:38
    共识机制是分布式系统的核心,在P2P系统中,互相不信任的节点通过预设机制最终达到数据的一致性称为共识。共识机制也就是为了达成这种共识所要采用的方法。共识机制的目标: 一致性:所有诚实节点所保存的区块链前缀...
  • AIMERSION的共识机制

    2019-12-13 15:57:44
    在区块链的世界里,“共识机制”是一个非常重要的概念。从PoW,到PoS、DPoS,再到PoRS人类在不断的尝试解决和优化“去中心化”中的“信任”问题,而到底是什么原理?为什么要用“账本”的概念?“信任”问题究竟该...
  • 区块链共识机制有哪些?

    千次阅读 2018-05-16 18:07:16
    共识机制作为区块链技术的核心,很大程度上决定了整个区块链系统节点间的相互信任,是不是很多小伙伴对于区块链技术有哪些共识机制还不是很了解呢,下面就将区块链共识机制为大家做了整理。POW机制POW的全称为Proof ...
  • 区块链共识机制浅谈

    千次阅读 2018-02-28 08:56:34
    前言本文对区块链中常见的共识机制做了一些介绍和自己的看法,欢迎指教。区块链解决了在不可信信道上传输可信信息、价值转移的问题,而共识机制解决了区块链如何在分布式场景下达成一致性的问题。所以我认为区块链的...
  • DPOS(委托权益证明)共识机制区块链去中心化的生命之源:“DPOS(委托权益证明)共识机制”引语:媳妇,说好的民主呢!吃过晚饭,来福紧张的对媳妇说:“媳妇,为什么每次都是我洗碗,我想要民主。”媳妇考虑了一下...
  • PoW共识机制的理解

    2019-12-22 15:31:01
    PoW工作量证明(Proof of Work),其概念在比特币出现之前已经有了,比特币的设计区块链的共识机制就参考了POW工作量证明。在比特币中,HASH运算的复杂度进行CPU运算实现工作量确定。 那区块链的PoW共识机制是怎么...
  • 06.工作量证明共识机制 pow

    千次阅读 2019-11-28 00:05:55
    什么是共识机制 区块链作为一个去中心化的分布式账本系统,然而在实际运行中,怎么解决因为去中心化后,保证整个系统能有效运行,各个节点诚实记账,在没有所谓的中心的情况下,互相不信任的个体之间就交易的合法性...
  • 区块链的共识机制

    2019-05-18 21:04:26
    前几周我们详细介绍了区块链技术目前所运用到的主流的四种共识机制算法。所谓共识机制,就是通过特殊节点的投票,在很短的时间内完成对交易的验证和确认;对一笔交易,如果利益不相干的若干个节点能够达成共识,我们...
  • 3. 区块链共识机制

    2018-05-03 15:01:25
    区块链发展至今,已经形成了各种不同类型的共识机制,在今天的文章中,我们就展开聊一聊区块链共识机制到底是什么,以及区块链的共识过程到底是怎样的。 分布式系统的经典问题: 拜占庭将军问...
  • 在学习区块链的过程中我们必然会碰到共识机制这个概念的,但是区块链的共识机制你知道多少呢? 在区块链中主流的共识机制有Pow、Pos、DPos。 而区块链,通俗地说,是一个去中心化的账本。只是这个账本与传统账本...
  • 区块链共识机制分类

    2018-02-13 10:58:00
    区块链共识机制分类 什么是共识机制 区块链要成为一个难以攻破的、公开的、不可篡改数据记录的去中心化诚实可信系统,需要在尽可能短的时间内做到分布式数据记录的安全、明确及不可逆,提供一个最坚实...
  • POW共识机制原理及优缺点

    千次阅读 2018-10-27 22:56:58
    PoW共识机制 POW工作量证明(英文全称为Proof of Work)在比特币之前就已经出现,中本聪在设计区块链的共识机制的时候就是借鉴了POW工作量证明。常见的是利用HASH运算的复杂度进行CPU运算实现工作量确定。 定义 ...
  • 关于共识机制的一些想法

    万次阅读 2019-04-01 09:33:07
    接触以太坊社区之后,看到了共识机制概念。当时就感觉这两者之间一定有什么联系。 刚好没几天,就在知乎上看到有一个Lock-Free的问题,下面张德力回答里面提到了: 无锁算法 (lock-free algorithm) 和 无等待...
  • 5.6 小蚁共识机制

    2018-09-30 14:43:43
    小蚁共识机制使得运行小蚁协议的各节点能够对当前区块链状态达成一致意见。通过股权持有人投票选举,来决定记账人及其数量;被选出的记账人完成每个区块内容的共识,决定其中所应包含的交易。小蚁的记...
  • 以太坊的共识机制

    千次阅读 2018-08-13 14:50:49
    第一个概念是哈希。简单理解,哈希是一个函数。它的作用是将任意长度的数据作为输入,转变为固定长度的一个字符串作为输出。这个函数有两个主要特点: 过程不可逆 对输入做微小改动,输出就会完全不一样。 哈希...
  • 区块链共识机制的思考 有人说人工智能是生产力的变革,让机器思考更多,干更多的活,让人少做点;那么区块链是一种解放生产关系的技术,区块链是在互联网的基础上发展而来,互联网让信息的传播突破了空间和时间的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,226
精华内容 7,690
热门标签
关键字:

共识机制的概念