区块链共识(关于共识机制,你知道多少?)

  区块链共识(关于共识机制,你知道多少?)

所谓的“共识机制”,就是一套方法论来让参与者能形成共同认识。比如在线下生活中,美国通过投票来选总统,整个投票选举的过程和方法论集合,就是一种共识机制,让整体美国人对谁来当总统达成一个共识。而“共识机制”又会被称为“共识算法”。

  

区块链的共识机制有很多,但是没有一种共识机制是完美无缺的,这也意味着没有一种共识机制适合所有应用场景,各共识机制都有其优缺点,有些共识机制也是为解决一些特定的问题而生。以下是几个主要的共识机制说明!

  

一、PoW( Proof of Work)工作量证明

  

干的越多,收的越多。PoW引入了对一个特定值的计算工作,比特币采用的共识算法就是PoW,矿工们在挖一个新的区块时,必须对SHA-256密码散列函数进行运算,区块中的随机散列值以一个或多个0开始。

  

随着0数目的上升,找到这个解,所需要的工作量将呈指数增长,矿工通过反复尝试找到这个解,在这其中,如果想要对已出现的区块信息进行修改,攻击者必须完成该区块外加之后所有区块的工作量,并最终赶上和超越诚实节点的工作量。

  

目前PoW依赖机器进行数学运算来获取记账权,资源消耗相比其他共识机制高、可监管性弱,同时每次达成共识需要全网共同参与运算,性能效率比较低,容错性方面允许全网50%节点出错。

  

PoW优点就是,算法简单,容易实现,节点间也无需交换额外的信息即可达成共识。当然缺点也很明显:浪费能源,区块的确认时间难以缩短,新的区块链必须找到一种不同的散列算法,否则就会面临比特币的算力攻击。容易产生分叉,需要等待多个确认,永远没有最终性,需要检查点机制来弥补最终性。

  

二、PoS ( Proof of Stake)权益证明

  

持有越多,获得越多。主要思想是节点记账权的获得难度与节点持有的权益成反比。PoS试图解决PoW机制中大量资源被浪费的情况,通过计算你持有占总币数的百分比,包括你占有币数的时间来决定记账权。

  

在POW机制中,由于想要找到符合条件的nonce值往往需要大量的电力和时间成本,为了避免这种浪费,PoS机制采用更快速的算法:SHA256(SHA256(Bprev),A ,t)≤balance(A)m,在这其中,H为某个哈希函数,t为UTC时间戳,Bprev指的是上个区块,balance(A)代表账户A额余额。

  

唯一可以不断调整得到参数是t,等式右边m是某个固定的实数,因此,当balance(A)越大,找到合理t的概率越大。网络中,普遍对t的范围有所限制,如可以尝试的时间不能超过标准时间戳1小时,也就是一个节点可以尝试7200次,来找到一个符合条件的t。因此在PoS中,一个账户的余额越多,在同等算力下,就越容易发现下一个区块。

  

举个例子:

  

假设你们公司决定将员工的行为记录在一个大家公用的账本(区块链)上,同事们用这个公用的账本进行记录,并且有一种专门用来支付这个账本上大家记录的、需要支付的代币,暂且把它叫做S币,这些币可以兑换成钱。你们公司的公共账本不是一个大本子,而是由很多个小本子中间连接一条线组合成的。

  

你们可以自己花钱购买这个S币,然后把它作为押金放进PoS机制中,根据你持有币的多少和时间长短给你发利息。而币龄(每个币每天产生1币龄)越高的人和持币越多的人越有机会得到启用你们公司小本子和帮别人记账的权利,记账又可以得到奖励。

  

在年末的时候持有更多币的人会有更多的奖励,所以同事们都很勤奋地去争夺记账权。

  

假设你们公司S币的年利率是5%(不同的币的年利率不一样)现在你们公司的A员工拥有的币最多,在PoS机制下,每个币每天产生1币龄,A员工拥有100个S币,他已经持有这100个币30天,此时A员工的币龄为30✖100=3000。每产生一个区块,币龄就会被清空为0,每被清空365个币龄,就会从区块中获得0。05个币的利息。A员工拥有3000币龄,他通过计算启用了一个小本子,他得到的利息就是=3000✖️5%➗365=0。41个S币。

  

通过持有币的数量和时间长短来决定记账的节点,这样就省略了竞争记账造成的资源浪费。如果在PoS机制中想要发起攻击,必须要收集全部币量的50%以上,不仅成本会非常大,并且执行难度非常高。

  

PoS的优点是在一定程度上缩短了共识达成的时间;不再需要大量消耗能源挖矿。缺点是:还是需要挖矿,本质上没有解决商业应用的痛点。所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响。

  

例如,以太坊的DAO攻击事件造成以太坊硬分叉,而ETC由此事件出现,事实上证明了此次硬分叉的失败。

  

三、DPoS(Delegated Proof of Stake)委托权益证明

  

DPoS与PoS原理相同,只是选了一些“人大代表”。DPoS机制首先是由BitShares社区先提出了的,与PoS的主要区别在于节点选举若干代理人,由代理人验证和记账,其合规监管、性能、资源消耗和容错性与PoS相似。

  

类似于公司董事会制度,在DPoS共识制度下,会选出一定数量的代表,来负责生产区块。那这些代表是怎么被选出来的呢?是每一位持币人,根据手中的持有的代币投票选出来的。

  

被选出来的代表管他叫节点,这些节点生产区块,是可以获得区块中的代币奖励,就如公司董事会成员干活也是有收益,不是白白干活的。如果节点不履行它生产区块的职责,那么它就会被干掉,换其他人上,有利益在,就会有人来做,排队等着上的人很多。

  

DPoS是在PoW和PoS的基础上发展起来的,解决PoW能耗高,避免PoS权益分配下可能的“信任天平”偏颇,但DPoS相对不够去中心化,但是去中心化只是手段,不是目的。在DPoS共识下,选出来的节点,除了生产区块,还要求系统做三件事:

  

● 随机制定生产者的顺序;

  

● 不按顺序生产区块无效;

  

● 一个周期洗牌一次,打乱原有顺序。

  

DPoS设计背后的逻辑,简单来说,利益最大化、成本最小化,即:

  

● 持币人投票选举生产区块节点;

  

● 最大化持币人的盈利;

  

● 最小化维护网络安全的费用;

  

● 最大化网络的效能;

  

● 最小化运行网络的成本。

  

DPoS的优点是:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。缺点是:整个共识机制还是依赖于代币,很多商业应用是不需要代币存在的。

  

四、PBFT(Practical Byzantine Fault Toleranc)实用拜占庭容错

  

在保证活性和安全性(liveness &; safety)的前提下提供了(n-1)/3的容错性。在分布式计算上,不同的计算机透过讯息交换,尝试达成共识;但有时候,系统上协调计算机(Coordinator / Commander)或成员计算机 (Member /Lieutanent)可能因系统错误并交换错的讯息,导致影响最终的系统一致性。

  

拜占庭将军问题就根据错误计算机的数量,寻找可能的解决办法,这无法找到一个绝对的答案,但只可以用来验证一个机制的有效程度。

  

而拜占庭问题的可能解决方法为:在 N ≥ 3F + 1 的情况下一致性是可能解决。其中,N为计算机总数,F为有问题计算机总数。信息在计算机间互相交换后,各计算机列出所有得到的信息,以大多数的结果作为解决办法。

  

PBFT的优点是:系统运转可以脱离币的存在,PBFT算法共识各节点由业务的参与方或者监管方组成,安全性与稳定性由业务相关方保证。共识的时延大约在2~5秒钟,基本达到商用实时处理的要求。共识效率高,可满足高频交易量的需求。

  

缺点是:当有1/3或以上记账人停止工作后,系统将无法提供服务;当有1/3或以上记账人联合作恶,且其它所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据;

  

五、、dBFT(delegated BFT )授权拜占庭容错算法

  

小蚁采用的dBFT机制,是由权益来选出记账人,然后记账人之间通过拜占庭容错算法来达成共识,此算法在PBFT基础上进行了以下改进:

  

● 将C/S架构的请求响应模式,改进为适合P2P网络的对等节点模式;

  

  

● 将静态的共识参与节点改进为可动态进入、退出的动态共识参与节点;

  

● 为共识参与节点的产生设计了一套基于持有权益比例的投票机制,通过投票决定共识参与节点(记账节点);

  

● 在区块链中引入数字证书,解决了投票中对记账节点真实身份的认证问题。

  

dBFT的优点是:专业化的记账人,可以容忍任何类型的错误,记账由多人协同完成,每一个区块都有最终性,比特币走势不会分叉,算法的可靠性有严格的数学证明。

  

以上总结来说,dBFT机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。

  
","content_hash"!"c33f2af3

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

评论