• 区块链共识机制分类


    什么是共识机制

    区块链要成为一个难以攻破的、公开的、不可篡改数据记录的去中心化诚实可信系统,需要在尽可能短的时间内做到分布式数据记录的安全、明确及不可逆,提供一个最坚实且去中心化的系统。
    
    区块链分布式记账的方式使得每个人手上都有一本完整的账本,全网共有。但是随着节点的不断增多,数据越多,账本也越安全,难以摧毁。除此之外,任意一个或者部分节点的账本被篡改,都不可能被全网认同,除非你能控制51%的节点,即51%攻击,但是这耗能巨大,几乎是不可能的。
    
    同时随着节点不断增加,谁来记账,如何选择合适的人来记账成为一个问题,而制定一个记账人的选择方式以及规定,让大家来遵守这个规定,达成共识,这就是区块链里面的共识机制。
    
    共识机制是区块链节点就区块信息达成全网一致共识的机制,说得更直白一些就是对于如何选择记账人达成共识。共识机制可以保证最新区块被准确添加至区块链、节点存储的区块链信息一致不分叉甚至可以抵御恶意攻击。
    
    比特币作为区块链的第一个应用,它的共识机制PoW共识机制曾经一枝独秀,但是随着区块链技术的不断发展,各类不同的共识机制开始不断涌现,各有千秋,各有拥趸。
    

    共识机制分类

    PoW( Proof of Work)工作量证明——多劳多得

    PoW机制中根据矿工的工作量来执行货币的分配和记账权的确定。算力竞争的胜者将获得相应区块记账权和比特币奖励。因此,矿机芯片的算力越高,挖矿的时间更长,就可以获得更多的数字货币。
    
    优点:算法简单,容易实现;节点间无需交换额外的信息即可达成共识;破坏系统需要投入极大的成本。
    
    缺点:浪费能源;区块的确认时间难以缩短;新的区块链必须找到一种不同的散列算法,否则就会面临比特币的算力攻击;容易产生分叉,需要等待多个确认;永远没有最终性,需要检查点机制来弥补最终性。
    
    目前基于PoW共识机制的数字货币有很多,比特币、莱特币、狗狗币、达士币、门罗币等初期的数字货币大多都是PoW共识机制。
    
    PoS(Proof of Stake)股权证明算法——持有越多,获得越多
    POS 机制采用类似股权证明与投票的机制,选出记帐人,由它来创建区块。持有股权愈多则有较大的特权,且需负担更多的责任来产生区块,同时也获得更多收益的权力。
    
    POS 机制中一般用币龄来计算记账权,每个币持有一天算一个币龄,比如 持有 100 个币,总共持有了 30 天,那么此时的币龄就为 3000。在 POS 机制下,如果记账人发现一个 POS 区块, 他的币龄就会被清空为 0,每被清空 365 币龄,将会从区块中获得 0.05 个币的利息(可理解为年利率 5%)。
    
    优点:在一定程度上缩短了共识达成的时间;不再需要大量消耗能源挖矿。
    
    缺点:还是需要挖矿,本质上没有解决商业应用的痛点;所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。
    
    最先开始运用权益证明共识机制的区块链项目是2012年诞生的PeerCoin,以太坊前三阶段均采用PoW共识机制,在第四阶段开始以太坊将采用权益证明机制,此外,量子链和Blackcoin都采用POS共识机制。
    

    DPOS(Delegated Proof-of-Stake)股份授权证明

    DPOS 是在 POS 基础之上发展起来的。与PoS的主要区别在于持币者投出一定数量的节点,代理他们进行验证和记账。其合规监管、性能、资源消耗和容错性与PoS相似。
    
    DPoS的工作原理为:每个股东按其持股比例拥有影响力,51%股东投票的结果将是不可逆且有约束力的。其挑战是通过及时而高效的方法达到51%批准。为达到这个目标,每个股东可以将其投票权授予一名代表。获票数最多的前100位代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。如果一个平均水平的区块含有100股作为交易费,一名代表将获得1股作为报酬。DPoS的投票模式可以每30秒产生一个新区块。
    
    优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。
    
    缺点:整个共识机制还是依赖于代币,很多商业应用是不需要代币存在的。
    
    比特股(BitShares)社区首先提出了股份授权证明机制,和比特股一父同胞同出于大神BM之手的EOS以及Steem也是基于此共识机制,LBTC、BCX 、Lisk等也都采用了该共识机制,DPoS的支持者众多,影响力广泛,后来者居上。
    

    DAG(Directed acyclic graph)有向无环图——无区块链概念

    DAG最初出现就是为了解决区块链的效率问题。其通过改变区块的链式存储结构,通过DAG的拓扑结构来存储区块。在区块打包时间不变的情况下,网络中可以并行的打包N个区块,网络中的交易就可以容纳N倍。
    
    之后DAG发展成为脱离区块链,提出了blockless无区块的概念。新交易发起时,只需要选择网络中已经存在的并且比较新的交易作为链接确认,这一做法解决了网络宽度问题,大大加快了交易速度。
    
    优点:交易速度快;无需挖矿;极低的手续费。
    
    缺点:网络规模不大,导致极易成为中心化;安全性低于PoW机制。
    
    目前采用这个技术有IOTA、byteball两个币,前段时间国内首个基于DAG的物联网区块链项目ITC万物链币价也取得了不小的涨幅。
    

    PBFT(Practical Byzantine Fault Tolerance)实用拜占庭容错——分布式一致性算法

    实用拜占庭容错在保证活性和安全性(liveness & safety)的前提下提供了(n-1)/3的容错性。在分布式计算上,不同的计算机透过讯息交换,尝试达成共识;但有时候,系统上协调计算机(Coordinator / Commander)或成员计算机 (Member /Lieutanent)可能因系统错误并交换错的讯息,导致影响最终的系统一致性。拜占庭将军问题就根据错误计算机的数量,寻找可能的解决办法,这无法找到一个绝对的答案,但只可以用来验证一个机制的有效程度。而拜占庭问题的可能解决方法为:在 N ≥ 3F + 1 的情况下一致性是可能解决。其中,N为计算机总数,F为有问题计算机总数。信息在计算机间互相交换后,各计算机列出所有得到的信息,以大多数的结果作为解决办法。
    
    优点:系统运转可以脱离币的存在,pbft算法共识各节点由业务的参与方或者监管方组成,安全性与稳定性由业务相关方保证;共识的时延大约在2~5秒钟,基本达到商用实时处理的要求;共识效率高,可满足高频交易量的需求。
    
    缺点:当有1/3或以上记账人停止工作后,系统将无法提供服务;当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据;去中心化程度不如公有链上的共识机制;更适合多方参与的多中心商业模式。
    
    实用拜占庭容错主要应用于央行的数字货币以及布萌区块链。
    

    Pool验证池——私有链专用

    Pool验证池,基于传统的分布式一致性技术,加上数据验证机制;之前曾是行业链大范围在使用的共识机制,但是随着私有链项目的逐渐减少渐渐开始势微。
    
    优点:不需要代币也可以工作,在成熟的分布式一致性算法(Pasox、Raft)基础上,实现秒级共识验证。
    
    缺点:去中心化程度不如bictoin;更适合多方参与的多中心商业模式。
    

    自定义共识机制以及混合共识机制——私人订制

    小蚁——dBFT(delegated BFT)授权拜占庭容错算法
    
    小蚁采用的dBFT机制,是由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识。dBFT和PBFT的关系类似于 PoS和DPoS的关系。
    
    dBFT在PBFT的基础上做出了多出改进:将C/S架构的请求响应模式,改进为适合P2P网络的对等节点模式;将静态的共识参与节点改进为可动态进入、退出的动态共识参与节点;为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点(记账节点);在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。
    
    特点:专业化的记账人;可以容忍任何类型的错误;记账由多人协同完成,每一个区块都有最终性,不会分叉;算法的可靠性有严格的数学证明;当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据。
    

    唯链——PoA(Proof-of-Authority)

    PoA共识机制,这种共识机制能达到的TPS,相较于比特币的PoW和以太坊即将采用的PoS,在TPS上都要高出很多。唯链创世团队曾经披露唯链研发团队测试能达到10000TPS,10000TPS足够满足很长一段时间内的性能要求。
    
    PoA与PoS类似,但是POS是基于持币加时间的模式,所以同样会造成利益分配的不均衡和大节点的产生,在PoA中,验证者不需要在网络中持有股份,但是必须具有已知的和经过验证的身份,这意味着验证者不会有动机为自己的利益行事,由这些验证者来验证和治理DAPP的投票。如此,让PoA的网络变得更加安全和便宜。
    
    除了唯链以外,欧链Oracles采用的也是PoA共识机制。
    

    Ripple——RPCA(Ripple Protocol consensus algorithm)

    瑞波共识机制RPCA是一个类似PBFT的共识机制,属于节点投票的共识机制。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由51%的该俱乐部会员投票通过。共识遵循这核心成员的51%权力,外部人员则没有影响力。由于该俱乐部由“中心化”开始,它将一直是“中心化的”,而如果它开始腐化,股东们什么也做不了。与比特币及点点币一样,瑞波系统将股东们与其投票权隔开,并因此比其他系统更中心化。
    
    Stellar的共识机制SCP(Stellar Consensus Protocol)就是在“Ripple共识算法”的基础上演化而来的。
    

    Hcash——PoW+PoS共识机制

    Hcash采用混合共识机制后,有Hcash的用户与矿工均可以参与到投票中,共同参与Hcash社区的重大决定;Hcash的PoS还为不合格的矿工提供了一个制衡机制;通过PoS+PoW公平的按持币数量与工作量分配投票权重,可以实现社区自治;通过PoW,使得Hcash有挖矿的硬性成本作为币价的保证,又制约了单独PoS机制里数字货币过于集中的问题;PoS让中小投资者着眼于项目的中长期的发展,中小户更倾向于把币放在钱包里进行PoS而不是放在交易所随时准备交易使得Hcash生态更加健康,人们会将注意力更多的放在Hcash技术与落地应用上,而不是仅仅关注短期的价格波动;在安全性上,由于PoW必须通过PoS的验证才可生效,PoW矿工不能自行决定并改变网络规则,这有效的抵挡了51%攻击。
    

    共识机制发展

    迄今为止,没有任何一种共识机制完美地解决了所有问题,每个共识机制都存在各自的短板。数字货币市场在不断扩大,毫无疑问共识机制也在不断地自我更新。
    
    从PoW到PoS,PoS到DPoS,以及DAG的无区块链概念,无疑不是对效率的不断追求。但是共识越集中(参与度越低),效率越高,也越容易出现安全和独裁腐败现象(和去中心化的初衷背道而驰)。只有做到各方面的平衡,通过之后的发展以及不断的更迭,数字货币以及区块链未来可期。
    
  • 相关阅读:
    Roads in the Kingdom CodeForces
    Vasya and Shifts CodeForces
    SOS dp
    Singer House CodeForces
    Codeforces Round #419 (Div. 1) (ABCD)
    在踏踏实实的生活里让自己坚持去做梦
    Replace Delegation with Inheritance
    Replace Inheritance with Delegation
    Replace Parameter with Methods
    Preserve Whole Object
  • 原文地址:https://www.cnblogs.com/liujitao79/p/8446219.html
Copyright © 2020-2023  润新知