当前位置:主页 > 查看内容

区块链技术第3次学习总结--区块链共识机制综述

发布时间:2021-10-13 00:00| 位朋友查看

简介:? ? ? 通过前面的学习我们知道区块链技术是一些技术的精妙组合。换言之,区块链可以被看作是一种使用已有技术的创新性整合应用。 我们可以认为智能合约是区块链原创的但其实智能合约概念早在1995年就由Nick Szabo首次提出了只不过到区块链才真正实现。 ? ? ?……

? ? ? 通过前面的学习我们知道,区块链技术是一些技术的精妙组合。换言之,区块链可以被看作是一种使用已有技术的创新性整合应用。

我们可以认为智能合约是区块链原创的,但其实智能合约概念早在1995年就由Nick Szabo首次提出了,只不过到区块链才真正实现。

? ? ? ?有人说区块链有四大核心技术,分别是:分布式存储,共识机制,智能合约和密码学。还有一种说法,区块链有八大核心技术:区块+链,

Hash函数,共识机制,智能合约,P2P,Merkle树,加密算法,发行和激励机制。

? ? ?无论是哪一种说法,业界公认共识机制是区块链的核心技术,是区块链的技术基石。区块链是一个分布式账本,其显著特征是去中心化。

(注意:有些区块链系统是弱中心化,就是有弱中心结点。)区块链的去中心化就是靠共识机制来实现的。

? ? ? 密码学是区块链的骨架,而共识机制是区块链的灵魂。可以毫不夸张的讲,学习区块链就必须掌握共识机制。

? ? 简单一点说:在数据处理和统筹结点时,都需要共识机制来保障系统的正确运行。


? ?共识机制解决了如下问题:

? ? ? ? ?1.维护系统的运作顺序与公平性

? ? ? ? ?2.通过奖惩维护系统的稳定运行

?

下面,我们就从零开始,来学习区块链的共识机制。

我们通过回答以下问题,来从浅入深地了解共识机制的本质和原理。

1.什么是共识?

2.为什么区块链系统需要共识?

3.由谁来达成共识?

4.什么时候需要共识?

5.什么是共识机制?它和共识算法有什么区别和联系?

6.如何达成共识?

7.有哪些主要的共识机制?

8.共识机制如何分类?

9.各种共识机制的对比与评价

10.区块链开发者如何选择共识机制?

?我们逐一寻找这些问题的答案。

? ? ?1. 什么是共识?

? ? ? ? ?一般来说,所谓共识就是一个问题或一件事务的所有或者大多数参与者达成的统一意见与看法。? 比如一个公司召集董事开董事会,某个提案通过了,叫达成共识。

如果意见不统一,对某提案的投票没有超过一定数量,无法通过某个提案,这就叫无法达成共识。国家与国家之间就某个问题进行的双边谈判也一样,可能形成共识,也

可能无法达成共识。

? ? ?有一种对共识的误解,就是认为共识等同于"同意","肯定"。这样理解是错误的,不准确的。对某事务形成统一意见就叫达成共识,比如对某一提案,所有人都说Yes,这是

达成共识,所有人都说No, 这也叫“达成共识”。? 大多数情况下,达成共识不需要所有参与方都统一意见,往往是大多数(达到一定比例)参与者意见一致就认为达成共识了。

这个比例不是统一的也不是固定的。

2.为什么区块链系统需要共识

? ? 为什么分布式区块链系统需要共识机制,而传统的C/S或B/S架构的中心服务器系统不需要共识机制?这就好比现实世界中,如果一个组织有一个最高领导人,那么一切的决策

由这个最高领导者决定,下属去执行就可以了,这个时候是最容易达成共识的,因为领导的决策就是共识。把中心服务器安装在机房的那种传统的软件系统,数据增删改查由系统

管理员和超级用户决定,普通用户基本上无权决定什么,也就不需要共识机制了。

? ?但是,在区块链这种分布式系统中,所有结点都是平等的,都有话语权。例如,在需要WaKuang的区块链中,任何一个矿工结点都有权打包发布一个区块,那么问题就来了,该把打包

权授予给谁?究竟系统认为谁挖出的区块是合法的?哪个矿工可以得到奖励?Alice转给Bob的某笔交易是否是合法有效的?这些都需要参与运行的结点之间达成共识。否则,

各执一词,就会争执不休,系统就没办法正常工作了。

3.由谁来达成共识

? ?前面我们举了几个例子,都是参与会谈的人或者组织机构达成共识。我们可能会看到这样的描述:......Kuang工之间需要达成共识....。其实,在区块链系统里面,通过共识机制,让所有结点

通过算法达成共识,而不是参与区块链的人之间达成“共识”。这就通过机制保证了共识的真实姓。注意:是由机器(结点)达成共识,不是人达成共识。

4.什么时候需要共识?

? ??

  • Kuang工打包记账的时候
  • 分叉的时候
  • 奖励 惩罚的时候
  • 总之:任何改变区块链状态的时候都需要共识

5.什么是共识机制?它和共识算法有什么区别和联系

? ? 区块链中的共识机制是所有结点都必须遵守的规则,就好像现实世界的“法律”。如果还不能理解,就把区块链中的共识机制和网络中的协议做个类比,把它理解成区块链中的一种“协议”。

??

?

? ??

所有的共识算法必须具备三个基本要求:

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

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

3. 容错性 (fault tolerance):在共识算法

注意:共识机制不等于共识算法。共识机制由共识算法来实现。比如:PoW共识机制由PoW共识算法来实现。

一个共识机制可能由一到多个算法来实现它。目前我们看到的共识机制大部分都由一种共识算法来实现。

6.如何达成共识?

? ? ? ?前面我们看到了,面对面坐在一起协商谈判都很难达成共识,更何况区块链是分布式的,彼此不信任的结点之间要达成共识就更困难。

所以需要借助共识机制在物理上分散的各个彼此互不信任的结点之间达成共识。

7.有哪些主要的共识机制?

? ?7.1?工作量证明(PoW)

?工作量证明(POW,Proof-of-Work)是一个用于阻止拒绝服务攻击和类似垃圾邮件等服务错误问题的协议,它在 1993 年被 Cynthia Dwork 和 Moni Naor 提出,它能够帮助分布式系统达到拜占庭容错。
? 工作量证明可以简单理解为一份证明,用来确认你做了一定量的工作。

在数字货币系统中,工作量证明主要通过计算来猜测一个随机数(nonce),使它拼凑交易数据后的内容的Hash值满足一个规定的上限。由于Hash值在数学上主要采用群举法碰撞所得,需要进行大量的计算,只要能提出满足要求的随机数的矿工就被认为付出了一定的工作量,可以获得这个区块的奖励。

哈希运算是一种最常见的工作量证明机制。该机制主要利用哈希运算的复杂度,通过给定的初始值,进行简单的值递增运算,利用哈希算法求解,直到找到满足条件的碰撞值。不同的哈希算法求得的碰撞值长度不同,所需工作量和安全性能也不同。碰撞值的长度越长,则所需的工作量越大。对于同一个哈希算法,可以设定哈希值前N位为0的个数来调节运算难度。

优点:完全去中心化,安全性高,所有节点可参与,节点自由进出,每个节点是公平的,被攻击成功的可能性小。

缺点:先确认后共识,需要耗费大量的算力,造成能源浪费,交易吞吐量有限,确认时间长。

典型应用项目:比特币,莱特币,以太坊(前两阶段Frontier前言、Homestead家园为POW;第三阶段Metropolis大都会为casper,类似POW+POS;第四阶段Serenity为POS)

注意:中心化和去中心化各有优劣,考虑到比特币的诞生就是反对中心化的,这里我把中心化看做缺点,去中心化看做优点

? 7.2 PoS? ?

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

简单来说,它选举Kuang工的规则是:谁有钱谁更有可能获得记账权。

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

这样的好处:

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

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

?

7.3? 委托权益证明机制(DPoS)

? ? ? ? 请参考其它资料。

7.4 分布式共识算法

? ? 分布式一致性算法有很多,主要是Paxos算法及衍生的Raft算法,由此演化出分布式共识算法。在此只谈谈实用拜占庭容错算法PBFT.

??实用拜占庭容错算法(Practical Byzantine Fault Tolerance)刚开始是在MIT的Miguel?和?Barbara Liskov在1999年的学术论文中提出的,他们的本意是为设计一个低延迟存储系统设计系统,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。

? 可见分布式共识算法并不是区块链出现之后才有的,也不是专门为区块链而设计的,实际上早在区块链技术出现之前就已经有了很多分布式一致性算法的研究成果。所以有人说区块链是建立在已有

技术研究基础之上的一种创新型应用。

要理解实用拜占庭容错算法,就需要先了解什么是拜占庭将军问题.

拜占庭将军问题是图灵奖大牛 Leslie Lamport 为描述分布式系统一致性问题( Distributed Consensus )在论文中抽象出来一个例子.?

一个可靠的计算机系统必须能够应付出现故障的组件给系统的不同部分发送互相冲突的信息的情况。

这种情况可以用一群拜占庭将军围攻一个城市的例子来做个比喻。这些将军驻扎在城市的各个方向,互相之间只能用信使来通信,大家必须达成一个共同的作战计划。但是,这些将军中是有叛徒的,叛徒会传送自相矛盾的信息来迷惑大家。BFT 的目标就是如何让大家最终能够达成共识。

准确的说,所谓 BFT ,也就是拜占庭容错,指的就是在系统上有一些恶意组件不断发送错误信息的情况下让系统依旧正常运行的能力。实现 BFT 有多种算法。其中一种最为常见的叫 PBFT?

? ?

pBFT 模型下,有一个节点会被当做主节点,而其他节点都是备份节点。系统内的所有节点都会相互通信,最终目标是大家能以少数服从多数的原则达成数据的共识。如果主节点出现明显的撒谎迹象,其他的节点也可以联合起来更换主节点。

每一个共识过程分下面这四步:

第一步,客户端发一个请求给主节点去执行某个操作。
第二步,主节点广播这个请求到各个备份节点。
第三步,所有节点执行操作并把结果返回给客户端。
第四步,当客户端收到 f + 1 个来自不同节点的相同的结果后,过程结束。f 代表可能撒谎的节点的最大值。
从第四步也可以看出,只要客户端能保证多数人认可了一个相同的结果,这个结果就是最终的共识了。具体的数学论证我们不展开,但是有这样一个结论:pBFT 模式能够工作的前提是系统上撒谎的节点不能超过总节点数的三分之一。

优点和缺点
PBFT 被用在区块链领域做共识算法,所以我们最后就来讨论一下它跟最常用的 POW 算法对比起来,有哪些优缺点。

先说优点。首先,pBFT 无需等待确认。PBFT 中发一个交易,不需要像比特币的 POW 算法那样,去等待六次确认。如果一个区块通过 pBFT 算法被系统认可了,那么这个区块就是最终区块了,不会被撤销。因为各个节点达成共识是在同一时刻决定的,所以用 pBFT 维护的区块链不会跟 POW 那样分叉,所以也就不用等待确认以保证当前区块所在的链是最长链了。其次,pBFT 不用耗能。因为 PBFT 是无需挖矿的,所以每一次共识过程也就不会像 POW 那样去耗费大量电能了。总之,pBFT 高效而节能。

但是 PBFT 也有明显的缺点。首先,最大的缺点是节点数不能太多。因为要保证各个节点间的频繁的通信,所以整个共识网络不能太大,这样就让整个网络不可能像 POW 那样做到全球范围的去中心化了。其次,PBFT 不能防止女巫攻击。POW 之所以要耗能,很大一个原因就是要防止女巫攻击。女巫攻击指的是,一个恶意用户用各种方法伪造多个账户来进行共识过程。POW 是通过巨大的金钱消耗来增加伪造一个新账户的难度,而 PBFT 就没有这一层保证了。所以 pBFT 比较适合有准入许可的联盟链,不太适合做无准入门槛的公链.??

8.共识机制如何分类?

? ?共识机制的分类有多种分类方式。

  • ? ??根据共识算法解决问题的方式,我们可以大致将其分为两类:

? ? 基于证明是一类,如POW、POS、DPOS;

? ? 基于投票的有PBFT、PAXOS、RAFT;

9.各种共识机制的对比与评价

? ? ?各种共识机制都各有优缺点和适合的场景,下面我们就用表格的形式对现有的一些主流共识机制做一个总结。

? ? ?简单一点说:

POW (工作量证明):安全、去中心化,去信任化;但速度低,共识时间长,耗能大;
POS (权益证明):共识时间短,耗能小;但效率低下,易产生马太效应,带来中心化;
DPOS (委托权益证明):出块时间很短,效率相对更高。
?

10.区块链开发者如何选择共识算法?

? ? 根据前面对各种共识机制优点与缺点的对比分析,可以根据链的类型选择适合的区块链算法,开发者也可以自己创造一种共识机制。下面这张图仅供参考。

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

?

?

;原文链接:https://blog.csdn.net/zsheep/article/details/116118001
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐