Login
欢迎来到未来世界

您现在的位置是: 首页 > 计算机 > 区块链

区块链

《科普》共识机制的演变及发展过程(《科普》共识机制的演变及发展思维导图怎么画)

区块链 加入收藏
共识机制的演变及发展加密货币都是去中心化的,去中心化的基础就是P2P节点众多,那么如何吸引用户加入网络成为节点,有那些激励机制?同时,开发的重点是让多个节点维护一个数据库,那么如何决定哪个节点写入?何


共识机制的演变及发展
加密货币都是去中心化的,去中心化的基础就是P2P节点众多,那么如何吸引用户加入网络成为节点,有那些激励机制?同时,开发的重点是让多个节点维护一个数据库,那么如何决定哪个节点写入?何时写入?一旦写入,又怎么保证不被其他的节点更改(不可逆)?回答这些问题的答案,就是共识机制。
共识机制,可编程的利益转移规则。传统商业场景下,我们尝试过很多方法,试图通过某种激励手段提高用户粘性,把用户留住。比如常见的积分机制、用户等级等,但是,没有任何一种方式,能与加密货币的共识机制相提并论。每一个区块链产品,本身就是一个小小的社会,一个由网络节点组成的自适应组织,这个组织的运行,要由共识机制来规范。
PoW工作量证明

POW是最早的共识机制,其代表当然是比特币。中本聪设计POW的初衷,大概是希望每个人都有平等获得比特币的权利,完成的最大限度的民主和去中心化,虽然其中依据人性的逐利性设计了挖矿和记账的奖励机制,但是他也远远未曾想到,水能载舟亦能覆舟,逐利的本性一旦被激发,将一发不可收拾,为了获得更大的收益,人们开始建立日趋中心化的矿池、矿场采取联合挖矿的方式来获取收益,某种程度上背离了比特币的初衷。另外,中心化的矿场也意味着更加容易受到监管者和政府机构的控制。
挖矿,就是帮助比特币网络记录数据的动作;矿机的发展历史经历了CPU/GPU/ASIC芯片时代。这一系列的迭代,无非是为了更加高效地挖出比特币。
CPU(中央处理单元)是计算机的主要执行器件,根据程序代码来控制其他所有元件的运作,CPU能进行所有种类的数学运算,同样非常适于快速的任务切换与逻辑判断。
最初中本聪的构想是一CPU一算力,因为个人电脑的普及,绝大多数人都可以参与到挖矿的行列中,帮助维护一个共同的账本。
GPU(图形处理单元)是计算机视频渲染系统的一部分。GPU类似于劳工,GPU虽然也能做数学运算,但是它最主要的设计用途是进行视觉图形处理而不是执行者的角色。图形处理是大量的重复任务,因为它被安排对屏幕上大量的像素进行处理,为了更有效率的运算,图形处理器的巨大优势在于执行大量重复劳动,而不是快速的任务切换。
后来人们还是不满足于GPU的算力,开始投入更多的人力、物力、财力,投入到一场”军备竞赛“中。ASIC芯片上场了,它是一种为专门目的而设计的集成电路。相当于一支训练精良的特种部队,每个环节都经过精心的设计,只为追求最大的产出效能。
挖矿收益,分为两种类型:
区块奖励
区块奖励,是指对矿工记录一个新区块的奖励。只有实际记账的矿工才能获得奖励,但是谁有记账权呢?
这要根据算力而定,计算能力越强,越有机会在十分钟一次的“相扑”比赛中拔得头筹,获得记账权。每挖21万个区块(约4年)后奖励减半,从2009年的创世区块到今天,区块奖励已经从50个降到12.5个(2013年第一次减半,2017年第二次减半)。
记账手续费
针对现已存在的比特币,其每一笔交易,都需要消耗一定数量的比特币作为GAS(燃料费),这笔燃料费就是发给矿工的小费,感谢他们辛勤的劳作,维护账本。
每一种共识机制的产生都有其特定的历史环境和特定的需求,POW是共识机制的鼻祖,在2008年全球金融危机的背景下应运而生,致力于解决中央银行不可避免地滥用权力,造成法币超发,和通货膨胀的问题。但是历经九年的发展,我们也看到了POW机制下的弊病:
需要消耗大量的电能
摩根士丹利分析师此前在报告中表示,虚拟货币挖矿在2018年可能会消耗140太瓦时的电力,约占全球电力需求的0.6%。看起来可能不是很多,但这意味着比特币挖矿所使用的电量已经超过了世界上至少159个国家的年度用电了。
中国曾占全网算力资源的80%,很大一部分原因在于,中国拥有价格低廉的电力资源,甚至早年间一些矿场会偷电来挖矿。国内的矿场,大多分布在新疆、内蒙、山西、四川一带,那里有价格低廉的火电和水电。随着国家监管的趋紧,国内大量矿工远走他乡,开始在加拿大、冰岛、俄罗斯等地开始设立矿场。
处理效率
TPS也称——Transaction Per Second,每秒事务处理量,假如TPS每秒并发太低,很容易造成网络拥堵严重,从而使得区块链在高价值的高并发业务领域无法落地。
比特币的TPS=7,也就是每秒钟只能处理7笔交易。另外,比特币是每十分钟生成一个区块,也就是一次转帐的确认时间要花十分钟。而一般连续生成 6 个区块,也就是大概 1 个小时的时间,我们才认为你的这次转账已经在链上比较稳定,不太容易被篡改了。十分钟的时间,如果是跨国支付,这相比于传统 T+2、 T+3 的到账时间已经大大缩短了。但是如果做一些面向消费者的应用,则远远无法满足高频消费的需求。当然目前在比特币上也有很多像微支付通道、闪电网络、隔离见证这样的技术去改善比特币的吞吐量和交易确认时间的问题。
愈发中心化
比特币是解决”拜占庭将军“问题很好的解决方案,但是在POW的共识机制中,有一个前提条件,那就是大部分的节点,至少是51%的节点应该是”好人“。否则会出现51%的算力攻击。事实上,现在已经存在了这样的风险,btc.COM、Antpool、ViaBTC前三大矿池,已经占到了全网52.4%的算力水平。如果他们想联合起来,篡改数据或者对比特币进行分叉,则会影响到比特币系统的稳定性。
权益证明(POS)

权益证明(Proof of Stake,简称PoS)由Quantum Mechanic2011年在比特币论坛讲座上首先提出,后经Peercoin(点点币)和NXT(未来币)以不同思路实现。
PoS的主要理念是节点记账权的获得难度与节点持有的权益成反比,相比PoW,其在一定程度上减少了数学运算带来的资源消耗,性能也得到了相应的提升,但依然是基于哈希运算,竞争获取记账权的方式,可监管性弱。该共识机制的容错性和PoW相同。它是PoW的一种升级,根据每个节点所占代币的比例和时间,等比例地降低挖矿难度,从而加快找到随机数的速度。
在PoW中,一个用户可能拿1000美元来购买计算机,并加入网络来挖矿以此产生新区块,从而得到奖励。而在PoS中,用户可以拿1000美元购买等价的代币,并把这些代币当作押金放入PoS机制中,这样用户就有机会产生新区块而得到奖励。
总体而言,这个系统中存在一个持币人的集合,他们把手中的代币放入PoS机制中,这样他们就变成验证者。比如对区块链最前面的一个区块而言,PoS算法在验证者中随机选择一个(选择验证者的权重依据他们投入的代币量,比如一个投入押金为1W代币的验证者被选择的概率是一个投入1K代币验证者的10倍),给他权利产生下一个区块。如果在一定时间内,这个验证者没有产生一个区块,则选出第二个验证者代替产生新区块。与PoW一样,PoS以最长的链为准。
随着规模经济(指扩大生产规模引起经济效益增加的现象)的消失,中心化所带来的风险减小了。价值1000万美元的代币带来的回报不多不少,是价值100万美元代币的10倍,不会有人因为负担得起大规模生产工具而得不到成比例的额外回报。
PoS的优点:在一定程度上缩短了共识达成的时间;不再需要大量消耗能源去挖矿。
PoS的缺点:还是需要挖矿,本质上没有解决商业应用的痛点;所有的确认都只是一个概率上的表达,而不是一个确定性的事情,理论上有可能存在其他攻击影响,例如以太坊的DAO攻击事件造成以太坊硬分叉,而ETC随之出现,事实上证明了此次硬分叉的失败。
股份授权证明(DPOS)

BitShares(比特股)社区首先提出了股份授权证明(简称DPoS)机制,它与PoS的主要区别在于节点选举若干代理人,由代理人验证和记账,但其合规监管、性能、资源消耗和容错性与PoS相似。类似于董事会投票,持币者投出一定数量的节点,进行代理验证和记账。
DPoS的工作原理如下:每个股东按其持股比例拥有相应的影响力,51%股东投票的结果将是不可逆且有约束力的,其挑战是通过及时而高效的方法达到“51%批准”;
为了达到这个目标,每个股东可以将其投票授予一名代表。获票数最多的前100位代表按既定时间表轮流产生区块。每位代表分配到一个时间段来生产区块。
所有的代表将收到等同于一个平均水平的区块所含交易费的10%作为报酬。如果一个平均水平的区块用100股作为交易费,一位代表将获得一股作为报酬。
网络延迟有可能使某些代表没能及时广播他们的区块,而这将导致区块链分叉。然而,这不太可能发生,因为制造该区块的代表可以与制造该区块前后的区块的代表建立直接连接。建立这种与你之后的代表(也许也包括其后的那名代表)的直接连接是为了确保你能得到报酬。
DPoS的投票模式可以每30秒产生一个新区块,并且在正常的网络条件下,区块链分叉的可能性极其小,即使发生也可以在几分钟内得到解决。执行该模式的基本步骤如下:
成为代表.成为一位代表,你必须在网络上注册你的公钥,并获得一个32位的特有标识符。该标识符会被每笔交易数据的“头部”引用。
授权投票.每个钱包有一个参数设置窗口,在该窗口里用户可以选择一位或更多的代表,并将其分级。一经设定,用户所做的每笔交易将把选票从“输入代表”转移至“输出代表”。一般情况下,用户不会创建专门以投票为目的的交易,因为那将耗费他们一笔交易费。但是在紧急情况下,某些用户可能觉得通过支付费用这一更积极的方式来改变他们的投票是值得的。
保持代表忠诚.每个钱包将显示一个状态指示器,让用户知道他们的代表表现如何。如果他们错过了太多的区块,那么系统将会推荐用户更换一位新的代表。如果任何代表被发现签发了一个无效的区块,那么所有标准钱包将在每个钱包进行更多交易前要求选出一位新代表。
抵抗攻击.在抵抗攻击上,前100位代表所获得的权利是相同的,即每位代表都有一项平等的投票权,因此,无法通过获得超过1%的选票而将权利集中到单一代表上。由于只有100位代表,不难想象一个攻击者可以对每位轮到其生产区块的代表依次进行拒绝服务攻击。幸运的是,由于每位代表的标识是其公钥而非IP地址,这种特定攻击的威胁很容易被减轻。这将使确定DDoS(分布式拒绝服务)攻击目标更为困难。而代表之间的潜在连接将使妨碍他们生产区块变得更为困难。
DPoS的优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。
DPoS的缺点:整个共识机制还是依赖于代币,而很多商业应用是不需要代币的。
BFT-DPOS共识机制

在最早的EOS技术白皮书中,EOS主要采用上述的DPoS机制每3秒来产生一个区块,而在最新版的EOS Dwan 3.0中为使区块链系统有更快的出块速度,EOS 采用了BFT-DPoS共识机制从而达到了500毫秒的出块间隔。该机制的具体过程是:EOS的持有者通过投票系统对各个超级节点竞选者进行投票,选出21个节点为超级节点。然后这21个超级节点以自身的网络资源状况商议出一个出块权拥有顺序,在每个超级节点拥有出块权时,以间隔为500毫秒(500毫秒是EOS团队通过大量实验测试得出的当前网络状态下可达到的最小的稳定状态下的出块间隔)连续产生12个新区块,然后切换到下一个超级节点连续产生之后的12个区块。
该方式可以保证一个超级节点可以连续以500毫秒的间隔产生区块,因为在同一超级节点产生新区块时不受当前网络状况的影响,但由于网络的延迟很难使得其他节点对已经产生的区块进行确认,使其成为不可逆区块。因此EOS引入了 BFT协议,当超级节点A产生第一个新区块后,A将该区块进行签名并广播给其他超级节点,其他超级节点对该区块进行验证后对其进行签名并返回给A节点,当A节点收到来自14个不同节点签名的区块后,该区块就成为不可逆区块串联到之前的区块链中(以500毫秒产生新区块的过程和对区块进行BFT协议共识的过程在超级节点中是同时进行的,即确认过程不影响超级节点产生新的区块)。EOS团队通过大量实验测试,在当前的网络状况下,一个超级节点广播一个新区块并确认的过程可在1秒的时间内完成。因此,每个新区块的产生到成为不可逆区块最多需要1.5秒的时间,这就使得跨链通信的时延大大缩小。因为一个区块链在引入另一条区块链的交易状态时必须等待其成为不可逆交易,所以两个基于EOS的区块链在3秒钟以内就可以进行一次来回的通信,而以太坊进行类似的通信需要9分钟,比特币需要3小时以上。
上述过程虽然可以保证同一超级节点产生新区块时可以达到500毫秒的间隔,但当切换超级节点产生区块时,由于网络延迟使得上一节点产生的最后几个新区块有可能被该超级节点忽略。为解决此问题,EOS选用了确定顺序的超级节点轮流出块,比如以纽约(美国东海岸)、芝加哥(美国中部)、洛杉矶(美国西海岸)、日本东京、中国上海这样的顺序,该顺序使得上一节点产生的最后区块传播到下一节点时有最小的延迟,从而避免下一个超级节点忽略上一节点产生的区块。如果是随机定义出块权的超级节点,那么在现有的网络条件下,出块间隔只有控制在3 秒时才可保证下一节点较大概率上不会忽略上一节点产生的区块。
使用上述BFT-DPoS协议就可以使得EOS的出块间隔从原来的3秒降低到500毫秒,这也使得跨链通信的时延大大缩短,单位时间内可确认的交易数量大大提升。笔者相信如果这样的机制在EOSIO1.0的正式版本中成功实现,那无疑是区块链技术向支持百万级别用户的目标迈出的巨大一步。
投注共识

投注共识是以太坊下一代的共识机制Casper(鬼马小精灵)引入的一个全新概念,属于PoS。Casper的共识是按区块达成的,而不像PoS那样按链达成。
为了防止验证人在不同的世界中提供不同的投注,我们还有一个简单严格的条款:如果你两次的投注序号一样,或者说你提交了一个无法让Casper依照合约处理的投注,你将失去所有保证金。从这一点我们可以看出,Casper与传统的PoS不同的是,Casper有惩罚机制,这样非法节点通过恶意攻击网络不仅得不到交易费,而且还面临着保证金被没收的风险。
Casper协议下的验证人需要完成出块和投注两个活动。具体如下:
出块是一个独立于其他所有时间而发生的过程,验证人收集交易,当轮到他们的出块时间时,他们就制造一个区块,并签名,然后发送到网络上。投注的过程更为复杂一些,目前Casper默认的验证人策略被设计为模仿传统的拜占庭容错共识:观察其他的验证人如何投注,取33%处的值,向0或1进一步移动。
而客户端确认当前状态的过程是这样的:一开始先下载所有的区块和投注,然后用上面的算法来形成自己的意见,但是不公布意见;它只是简单地按顺序在每个高度进行观察,如果一个区块的概率高于0.5就处理它,否则就跳过它。在处理所有的区块之后,所得到的状态就可以显示为区块链的“当前状态”。客户端还可以给出对于“最终确定”的主观看法:如果高度k之前的每个区块形成的意见高于99.999%或者低于0.001%,那么客户端可以认为前k个区块已经最终确定。
瑞波共识机制(Ripple Consensus)

瑞波共识算法使一组节点能够基于特殊节点列表形成共识。初始特殊节点列表就像一个俱乐部,要接纳一个新成员,必须由该俱乐部51%的会员投票通过。共识遵循这些核心成员的“51%权利”,外部人员则没有影响力。由于该俱乐部由中心化开始,它将一直是中心化的,而如果它开始腐化,股东们什么也做不了。与比特币及Peercoin一样,瑞波系统将股东们与其投票权隔开,因此,它比其他系统更中心化。
Pool验证池

由布比区块链提出并应用。基于传统的分布式一致性技术以及数据验证机制,Pool(联营)验证池是目前行业内大范围使用的共识机制。它的优缺点如下:
优点:不需要代币也可以工作,在成熟的分布式一致性算法(Paxos、Raft)的基础上,实现秒级共识验证。
缺点:去中心化程度不如比特币,更适合多方参与的多中心商业模式。
实用拜占庭容错

在分布式计算上,不同的计算机通过信息交换尝试达成共识,但有时候,系统中的协调计算机或者成员计算机可能因系统错误,而交换错误信息,以致影响最终的系统一致性。对于拜占庭将军问题,若根据错误计算机的数量,寻找可能的解决办法,这其实无法找到一个绝对的答案,只可以用来验证一个机制的有效程度。
而拜占庭将军问题的可能解决方法为:在N≥3F+1的情况下,一致性是可能实现的(N为计算机总数,F为有问题的计算机总数)。信息在计算机间互相交换后,各计算机列出所有得到的信息,以大多数的结果作为解决办法。
最早由卡斯特罗和利斯科夫在1999年提出的使用拜占庭容错(PBFT)是第一个得到广泛应用的拜占庭算法。只要系统中有2/3的节点是正常工作的,就可以保证一致性。
使用拜占庭容错机制是一种采用“许可投票、少数服从多数”来选举领导者并进行记账的共识机制,该共识机制允许拜占庭容错,允许强监督节点参与,具备权限分级能力,性能更高,耗能更低,而且每轮记账都会由全网节点共同选举领导者,允许33%的节点作恶,容错率为33%。
由于特别适合联盟链的应用场景,实用拜占庭容错机制及其改进算法为目前使用最多的联盟链共识算法,其改进算法为目前使用最多的联盟链共识算法,其改进算法在以下方面进行了调整:修改底层网络拓扑的要求,使用P2P网络;可以动态地调整节点数量;减少协议使用的消息数量。
授权拜占庭容错

2016年4月,小蚁公司发布共识算法白皮书,描述了一种通用共识机制——授权拜占庭容错,提出了一种改进的拜占庭容错算法,使其能够适用于区块链系统。
拜占庭将军问题由来已久,其核心描述的就是在有可能存在叛徒的军队中,依然要保证一致的进攻或撤退行为。在现实生活中,每当我们需要对投票的正确性和一致性做出判定的时候,这个问题就会出现;同样,在区块链网络当中,如果存在可能造成网络瘫痪或者不能正常工作的节点时,系统就很难保证达成正确的共识,从而导致故障。
dBFT共识机制是众多为了解决这一问题中的一种方案。在这个机制当中,存在两个参与者,一个是专业记账的“记账节点”,一个是系统当中的普通用户。普通用户基于持有权益的比例来投票决定记账节点,当需要通过一项共识时,在这些记账节点中随机推选出一名发言人拟定方案,然后由其他记账节点根据拜占庭容错算法,即少数服从多数的原则进行表态,如果超过66%的节点表示同意发言人方案,则共识达成;否则,重新推选发言人,重复投票过程。
授权拜占庭容错机制的优点:专业化的记账人;可以容忍任何类型的错误;记账由多人协同完成;每一个区块都有最终性,不会分叉;算法的可靠性有严格的数字证明。
授权拜占庭容错机制的缺点:当1/3及以上的记账人停止工作后,系统将无法提供服务;当1/3及以上的记账人联合作恶,且其他所有的记账人被恰好分割为两个网络孤岛时,恶意记账人可以使系统出现分叉,但是会留下密码学证据。
总而言之,授权拜占庭容错机制最核心的一点,就是最大限度地确保系统的最终性,使区块链能够适用于真正的金融应用场景。
Paxos算法

这是一种传统的分布式一致性算法,是一种基于选举领导者的共识机制。领导者节点拥有绝对权限,并允许强监督节点参与,其性能高,资源消耗低。所有节点一般有线下准入机制,但选举过程中不允许有作恶节点,不具备容错性。
图集详情底部广告位