一文详解 区块链为什么需要共识机制

首先,交易发起方构造交易,加上数字签名,广播到区块链P2P网络之中。然后,
区块链网络中的“矿工”节点陆续收到这笔交易。然后,所有矿工都会把交易打包到自己构建的备选区块之中,然后将自己的备选区块广播。这时候,全网根据”共识机制“来决定哪个矿工负责写入这个区块。然后这个矿工将会负责把这个区块添加到区块链上,完成该区块中的所有交易。最后交易完成,交易参与方可以查询到交易执行结果。那么,
“共识机制”是从什么时候出现的?1982年,
Lamport首次发表了关于拜占庭将军问题解决方案的论文,后来获得了计算机界的最高奖:图灵奖。1999年,Jakobsson发表了关于PoW的论文。2008年11月,中本聪发表了比特币的论文,并用了PoW作为共识机制。2012年,PeerCoin项目开始采用PoS作为共识机制。2016年,Tendermint项目开始采用PBFT作为公示机制。2018年,以太坊项目提出在2.0版本中,通过Casper方法采用PoS作为共识机制。实际上,V神今天正在欧洲介绍这方面的最新进展。共识机制的基本要求和不可能三角这里需要提的是,任何分布式系统(包括比特币甚至货币),都存在一个不可能三角形:性能、可扩展性和去中心化。譬如人民币,性能和可扩展性很高(每天无数人用它来交易),但是去中心化低(央行想印多少就印多少)。对于比特币,去中心化程度高,可扩展性也高,但是性能低。所以在设计、选择共识机制时候,我们必须记住这三点:我们应该优化哪一方面,牺牲哪一方面,因为你不可能同时达到这三点。另外,所有的共识算法必须具备三个基本要求:1.一致性
(safety):所有参与共识的诚实的节点,得到的计算结果是相同的,而且是符合共识协议的。2.
终局性
(liveness):所有参与共识的诚实的节点,最终可以达成一致性结果。3.
容错性 (fault
tolerance):在共识算法的成功执行过程中,可以容许参与共识的节点发生一些错误。

本届的互联网大会上,区块链已成为绝对热点,在任何行业,要想先于别人一步掘到金,首先必须要做的便是了解这个行业,玖財交易所小编今天给大家分享一下什么是共识机制以及挖矿的原理!

共识机制是什么?

新萄京娱乐网址2492777 1

区块链是伴随比特币诞生的,是比特币的基础技术架构。可以将区块链理解为一个基于互联网的去中心化记账系统。

由于加密货币多数采用去中心化的区块链设计,节点是各处分散且平行的,所以必须设计一套制度,来维护系统的运作顺序与公平性。

类似比特币这样的去中心化数字货币系统,要求在没有中心节点的情况下保证各个诚实节点记账的一致性,就需要区块链来完成。

1.什么是共识机制

所以区块链技术的核心是在没有中心控制的情况下,在互相没有信任基础的个体之间就交易的合法性等达成共识的共识机制。

统一区块链的版本,并奖励提供资源、维护区块链的使用者,以及惩罚恶意的危害者。这样的制度,必须依赖某种方式来证明,是由谁取得了一个区块链的打包权,并且可以获取打包这一个区块的奖励,又或者是谁意图进行危害,就会获得一定的惩罚,这就是共识机制。

区块链为什么需要共识机制?

简单来说,我们要一种机制来选择哪个矿工来把交易写入区块链。比如今天听课的同学有100人,我们分成50组打乒乓球,那么我们有50组比分要记录。

分布式系统中,多个主机通过异步通信方式组成网络集群。在这样的一个异步系统中,需要主机之间进行状态复制,以保证每个主机达成一致的状态共识。

2.分布式记账及“挖矿”

异步系统中,可能出现无法通信的故障主机,而主机的性能可能下降,网络可能拥塞,这些可能导致错误信息在系统内传播。因此需要在默认不可靠的异步网络中定义容错协议,以确保各主机达成安全可靠的状态共识。

传统的中心式记账,意味着我们需要一个组委会来记录比分。这样就可能会出现徇私舞弊的情况,所以需要我们采用去中心化的方法。这意味着,这50桌每组都要记录比分。不光自己的,还要记录别人的。这就是分布式或者说去中心化的记账方法。

利用区块链构造基于互联网的去中心化账本,需要解决的首要问题是如何实现不同账本节点上的账本数据的一致性和正确性。

但是,这样做效率太低。大家必须要花大量的时间做这件事情。所以区块链的设计是,我们找一些矿工来记录比分。对于这些矿工,我们会给予奖励,从而鼓励他们为大家记录比分,记录完了以后再给每一桌复制一份。

这就需要借鉴已有的在分布式系统中实现状态共识的算法,确定网络中选择记账节点的机制,以及如何保障账本数据在全网中形成正确、一致的共识。

这个奖励,在比特币系统里面就是比特币的由来。交易本身并不产生新的货币,矿工记录比分才生成货币,也就是说,代币的目的是为了奖励付出努力的人,这就是”挖矿“的原理。

算法的假设条件

新萄京娱乐网址2492777,既然有奖励,那么现在问题来了。譬如比特币,每次记账可以产生12.5个比特币(现在,过去是50个),按照今天的价格,就是50万人民币。那么肯定有很多矿工都抢着给大家计分,来获取这个报酬。

在实际情况下,根据不同的假设条件,有很多不同的共识算法被设计出来。这些算法各有优势和局限。算法的假设条件有以下几种情况:

那么应该怎么选择一个矿工出来?这就需要用到“共识机制”,也就是说,大家都根据某种规则,同意让我们今天的某一位同学来记录大家的比分,记录完毕的奖励都给他。

1)故障模型:非拜占庭故障/拜占庭故障。

当然,例子比较简单,不过本质上就是这回事。这个乒乓球比赛,就可以理解为一笔交易。比分,就是记账。记录比分的人,就是矿工。奖励的钱,就是比特币或者代币。

2)通信类型:同步/异步。

二、共识机制的工作原理和重要性

3)通信网络连接:节点间直连数。

首先,交易发起方构造交易,加上数字签名,广播到区块链P2P网络之中。然后,
区块链网络中的“矿工”节点陆续收到这笔交易。然后,所有矿工都会把交易打包到自己构建的备选区块之中,然后将自己的备选区块广播。

4)信息发送者身份:实名/匿名。

这时候,全网根据”共识机制“来决定哪个矿工负责写入这个区块。然后这个矿工将会负责把这个区块添加到区块链上,完成该区块中的所有交易。最后交易完成,交易参与方可以查询到交易执行结果。

5)通信通道稳定性:通道可靠/不可靠。

三、共识机制的基本要求和不可能三角

6)消息认证性:认证消息/非认证消息。

这里需要提的是,任何分布式系统(包括比特币甚至货币),都存在一个不可能三角形:性能、可扩展性和去中心化。

在区块链网络中,由于应用场景的不同,所设计的目标各异,不同的区块链系统采用了不同的共识算法。

譬如人民币,性能和可扩展性很高(每天无数人用它来交易),但是去中心化低(央行想印多少就印多少)。对于比特币,去中心化程度高,可扩展性也高,但是性能低。

一般来说,在私有链和联盟链情况下,对一致性、正确性有很强的要求。一般来说要采用强一致性的共识算法。而在公有链情况下,对一致性和正确性通常没法做到百分之百,通常采用最终一致性(Eventual
Consistency)的共识算法。

所以在设计、选择共识机制时候,我们必须记住这三点:我们应该优化哪一方面,牺牲哪一方面,因为你不可能同时达到这三点。另外,所有的共识算法必须具备三个基本要求:

区块链的共识机制目前主要有4类:PoW、PoS、DPoS、分布式一致性算法

1.一致性
:所有参与共识的诚实的节点,得到的计算结果是相同的,而且是符合共识协议的。

(1)PoW

  1. 终局性 :所有参与共识的诚实的节点,最终可以达成一致性结果。

  2. 容错性 (fault
    tolerance):在共识算法的成功执行过程中,可以容许参与共识的节点发生一些错误。

PoW(工作量证明),也就是像比特币的挖矿机制,矿工通过把网络尚未记录的现有交易打包到一个区块,然后不断遍历尝试来寻找一个随机数,使得新区块加上随机数的哈希值满足一定的难度条件,例如前面10位是零。

四、共识机制的种类

找到满足条件的随机数,就相当于确定了区块链最新的一个区块,也相当于获得了区块链的本轮记账权。

1.POW

矿工把满足挖矿难度条件的区块在网络中广播出去,全网其他节点在验证该区块满足挖矿难度条件,同时区块里的交易数据符合协议规范后,将各自把该区块链接到自己版本的区块链上,从而在全网形成对当前网络状态的共识。

如上所述,为了鼓励人们主动记账,中本聪决定给记账的人发奖励,这就是“比特币”的由来。而记账的人就是“矿工”。

比特币和以太坊都是基于PoW的共识机制。

由于不同的“矿工”都希望获得记账权,为了给每个区块选择一个全网认可的“矿工”,就需要
“矿工”给出一个证明,就是所谓“工作量证明”,
选出的矿工可以获得12.5个比特币作为奖励。

优点:1.完全去中心化,节点自由进出,避免了建立和维护中心化信用机构的成本。

奖励以每四年减一半的速度递减,矿工的收益的另一部分来自于每笔交易产生的手续费,到2140年无币可奖励的时候,矿工的奖励将全部来自于交易的手续费。

2.只要网络破坏者的算力不超过网络总算力的50%,网络的交易状态就能达成一致。

现在关键来了,工作量证明是什么意思?

缺点:1.目前比特币挖矿造成大量的资源浪费;

还是以乒乓球比赛为例。如果有一个人来计分,我们会希望他们不能太慢,但是也不能太快。太慢的话,会积累很多比分要记录,最后大家都要等他们。太快的话,会干扰我们的正常比赛。大家比赛中间要停下来,跟他们谈话,这个效率很低。

2.挖矿的激励机制也造成矿池算力的高度集中,背离了当初去中心化设计的初衷。

为了保证节点之间的同步,新区块的添加速度不能太快。区块链的发明者中本聪故意让添加新区块变得很困难。只有通过极其大量的计算,才能找到一个随机值,使得区块的哈希值符合一定的条件。这个过程就叫做挖矿。

3.更大的问题是PoW机制的共识达成的周期较长,每秒只能最多做7笔交易,不适合商业应用。

“矿工”
的工作其实就是猜出这个随机项的值,使得区块的哈希值可以小于目标值,从而能够写入区块链。这个随机项的值,必须通过穷举计算来获得,也就是说,所有的矿工必须反复不停地尝试从0开始的所有整数,直到他们找到这个随机值。找到了,他们就发财了。

(2)PoS

举个简单的比喻,“挖矿” 的过程其实类似于打麻将,
四方最后有一方凑出了胡牌的牌型,就当与生成了一个达到要求的区块哈希值,胡牌的人就成了
“矿工”,得到相应的奖赏。胡完一牌,就是一个区块生成,所以当前交易记录在内。

PoS权益证明,要求节点提供拥有一定数量的代币证明来获取竞争区块链记账权的一种分布式共识机制。

然后大家接着下一局,继续凑胡牌牌型。如果一局没有人胡牌,也就是大家花了时间,但是没有生成区块,就重新开局。如果投入的时间/资源,小于获得的奖赏,这个矿工就亏了。但是,如果有人摸了两把就胡牌了,相当于很快就找到了这个哈希值,
这个矿工就大赚了。

如果单纯依靠代币余额来决定记账者必然使得富有者胜出,导致记账权的中心化,降低共识的公正性,因此不同的PoS机制在权益证明的基础上,采用不同方式来增加记账权的随机性来避免中心化。

这样,全世界成千上万台“矿机”们,都在不眠不休地计算中本聪出的这道数学题,为获得奖励的比特币而“废寝忘食”,这就是工作量证明的原理。

例如点点币(PeerCoin)PoS机制中,拥有最多链龄长的比特币获得记账权的几率就越大。NXT和Blackcoin则采用一个公式来预测下一个记账的节点。拥有多的代币被选为记账节点的概率就会大。

具体来说,工作量证明
或者说挖矿算法,目的就是寻找一个特殊的数字,使得哈希值(即SHA256
函数)的输出字符串的前n位是零。

以太坊将会从目前的PoW机制转换到PoS机制,从目前看到的资料看,以太坊的PoS机制将采用节点下赌注来赌下一个区块,赌中者有额外以太币奖,赌不中者会被扣以太币的方式来达成下一区块的共识。

所以,通过POW,我们可以找到一个矿工。但是网络上有那么多的节点,怎么确保所有节点都使用同一个区块链呢?

优点:在一定程度上缩短了共识达成的时间,降低了PoW机制的资源浪费。

中本聪为此提出了著名的一致性判别方法:如果一个节点的区块链与另外一个节点的不同,这就意味着冲突。解决这个问题的办法就是,“最长的有效的链”应当获得认可。换句话说,网络上最长的链就是事实上的标准链。

缺点:1.破坏者对网络攻击的成本低,网络的安全性有待验证。

利用这种算法,我们可以在我们网络中的所有节点中达成共识。PoW的本质,是选择计算量最大的链条最为主链条。这样,即使有人恶意破坏,也要付出大量的经济成本,达到不可承受的程度。

2.拥有代币数量大的节点获得记账权的几率更大,会使得网络的共识受少数富裕账户支配,从而失去公正性。

举个例子,如果你去一个医院柜台排队,有好几条队,你应该选择哪一条?按照中本聪的规则,你应该派最长的那条队,因为里面的人排得最久,所以最不容易被保安驱散。

(3)DPoS

也就是说,这套机制会找出最长的一条队伍是合法的,奖励其中排得久的人,并让不合法的分叉队伍重新排队。只要大部分人不傻,就会自觉在最长的队伍上排队。

DPoS(股份授权证明)机制,类似于董事会投票。

PoW的优点

比特股(bitshares)和steem采用的DPoS机制是持股者投票选出一定数量的见证人,每个见证人按序有两秒的权限时间生成区块,若见证人在给定的时间片不能生成区块,区块生成权限交给下一个时间片对应的见证人。

  1. 架构清晰,有效可靠。

持股人可以随时通过投票更换这些见证人。DPoS的这种设计使得区块的生成更为快速,也更加节能。

2.
要获得多数节点的认可,攻击者必须投入超过51%的计算量,才能保证篡改结果。

优点:大幅缩小参与验证和记账节点的数量,可以达到秒级的共识验证。

3.公平:这种机制类似于多劳多得,干的多,收获也多。

缺点:1.选举固定数量的见证人作为记账候选人有可能不适合于完全去中心化的场景。

PoW的缺点

2.在网络节点数少的场景,选举的见证人的代表性也不强。

  1. 数据冗余:所有数据都要在所有节点备份一遍。

以上三种算法多用于共有链。

2.
消耗能源:现在挖矿占到了全球0.13%的电力消耗。挖掘一枚比特币,相当于一辆汽车驾驶20万公里的碳排放量。

(4)分布式一致性算法

3.
信息网络延迟:区块链,每10分钟才能生成一个区块,完成其中的交易,以太坊略有提高,每秒交易在几百笔以内,相比之下,阿里巴巴双11的交易速度是31.5万笔/秒。

分布式一致性算法是基于传统的分布式一致性技术。其中有分为解决拜占庭将军问题的拜占庭容错算法,如PBFT。

4.
算力垄断:有些拥有大量算力的公司,实际上已经拥有了某些公链或者dApp超过51%的算力,可以篡改结果,这样就与加密货币或者中本聪的去中心化背道而驰。

另外解决非拜占庭问题的分布式一致性算法(Pasox、Raft),该类算法目前是联盟链和私有链链场景中常用的共识机制。

2.POS

优点:实现秒级的快速共识机制,保证一致性。

PoS即权益证明,最早由Sunny
King于2012年创立的PPC采用,它可以解决上面提到的浪费算力的问题。

缺点:去中心化程度不如公有链上的共识机制;更适合多方参与的多中心商业模式。

简单来说,它选举矿工的规则是:谁有钱谁更有可能获得挖矿权。也就是说,挖矿成功的概率与矿工持有的代币数量成正比。

上述内容是根据《区块链技术指南》整理出来的共识机制的基础内容。

回到乒乓球比赛的例子,也就是谁比分最高,让谁来记,这样鼓励积极比赛的人。

共识机制是区块链的核心技术,而PoW和DPoS这两种共识机制的优点在于依靠审核、匿名性较好、流动相对自由,这两种机制是目前在数字货币领域应用较为广泛的。

这样的好处:

那么区块链的技术大牛V神和BM对这两种共识机制的探讨是怎样的呢?下一篇,我将会继续展开探讨这两种共识机制。

  1. 不需要算题,所以节约能源。

  2. 攻击者需要更高的成本,因为他需要购买大量的代币才能获得51%的篡改权。

缺点是:

1.
因为持有量越多的人获得的奖励越多,变成了资源垄断,富者越富,穷者越穷。

2.
因为挖矿权跟持有的货币成正比,所以就类似于利息高的情况下,大家就不愿意花钱,而把钱都存银行一样,这样会变成所谓的”屯币“,降低代币的流通性。

采用PoS机制的项目目前来说,主要是以太坊2.0、PIVX和NAVCOIN这几个项目。

总结:按照《经济学人》杂志的说法,区块链是一个信任机器。信任由共识产生,而具体的共识机制包括PoW、PoS、DPoS、PBFT等等。具体选择哪一种方法,与项目和应用有关,不应一概而论。

网站地图xml地图