区块链共识机制

 

阅读大概需要6分钟

前言

在前两篇文章中已经大概谈了一下区块链的行业动态、基本概念和架构,以及不同区块链版本的区别,相信大家对整个区块链技术已经有了整体认识。接下来的文章中我将跟大家谈一下共识机制,什么是共识机制?共识机制在区块链技术中起到什么样的作用?它的原理是什么?如果大家对招聘网站关于“区块链技术开发”的招聘职位有关注的话,细心就会发现基本上每个企业的岗位需求都会有提到以下的内容的第三点。

因此共识机制是区块链技术的核心之一。

在一个区块链系统中,共识机制设计得好与坏直接决定了系统的运行效率、工作成本、以及它的安全性,也直接决定了这个区块链系统存在的价值,所以共识机制的设计不容忽视。

什么是共识机制?

  • 从字眼上理解

“共识” 是指在一定的组织群体中相互之间对某一件事物的看法、认知、价值取向是一致的。

“机制” 是指一个组织群体为促成某一笔交易所采用的一种规则。

  • 现实中理解

举个例子:现企业需要选举出新的领导班子成员,目前有两种不同的选举方案:1,允许全公司所有员工参与,每人实名投票;2,只允许公司所有组长以上的管理人员参与投票;前者参与度100%,这代表着参与度越高,达成共识就越分散,其效率就越低,但满意度越高;后者参与度只有百分之几,参与度越低,达成共识就越集中,效率也就越高,但容易出现独裁和不公平现象。这两种方案就是共识的理解,至于选择那个方案,那就是共识机制的采纳。

  • 从区块链技术中理解

区块链中的共识机制:区块链是基于去中心化、分布式储存、点对点网络的系统结构,每个获得记账权的节点需要在很短的时间内完成对交易的验证和确认,并且每个节点需要共同来维护同一份账本,以确保账本的完整性,这中间就得需要考虑账本数据的同步性问题,那个节点允许写入?那个时间点才能写?其它节点如何同步新交易的数据?如何确保不被其它节点同时被更改?这就是区块链技术中需要定义的共识机制。区块链中的共识机制需要解决两个问题:1. (记账权问题)允许谁能获得记账权,且每次只允许一个人来记账,2. (账本一致性问题)如何确保各个节点之间账本的一致性,以及数据的同步性。

区块链常用的共识机制

下面主要谈一下目前最常用的几种共识机制及它的优缺点。

  • 工作量证明(PoW)

PoW(Proof of Work)工作量证明: 也称为挖矿,它是需要完成一定的工作量(Hash计算)来证明获取记账权。它是最早应用在区块链技术上的共识机制,也是区块链应用领域使用最为广泛、最为成熟的共识机制。比特币区块链系统就是使用PoW共识机制。

工作原理:

基于PoW构建的区块链网络,首先确定一个工作量的难度系数(简单来说其实就是Hash数值中前面0的个数)(如下图所示),然后由各个节点通过循环递增Nonce(随机数)+ block_header(区块头信息)来计算Hash数值,直到计算得到的Hash数值满足工作量的难度系数后才证明该节点是否获得本次交易区块打包的记账权,这计算的过程需要花费一定的时间和算力,反映了该节点的运算能力,运算力强的节点获得记账权的概率也就越高。 目前在比特币系统中工作难度大概是以每 10 分钟出 1 个新块。

简单理解四步曲:

Looping (循环){

  1. 准备数据

  2. 通过SHA256 对数据进行Hash

  3. 将Hash转成大整数(big.Int)

  4. 将大整数与难度系数目标值比较。

}

公式表达: 

SHA256 ( Nonce + block_header ) <  Max_Difficult_value

优点:1, 完全去中心化;2, 节点自由进出,有利于节点网络扩大;3, 用户的参与度与信任度高,对于用户来说实现真正的公平,公正竞争。

缺点:最大缺点就是造成的资源浪费,为了争夺记账权需要不停地循环计算哈希值,而且达成共识的周期过长,导致产生新区块效率比较低,大概每10分钟才产生一个新区块,这不适于商业应用。

  • 权益证明机制(PoS)

PoS(Proof of Stake)权益证明机制:在2012年,由加密货币点点币(Peercoin)的创始人Sunny King 为了解决PoW中资源浪费的缺点而提出的新的共识概念,他在基于比特币PoW的框架基础上实现了新的共识机制PoS,并最初被应用在点点币区块链系统上。

工作原理:

PoW是通过计算工作量来获得记账权,而在PoS中即转变为资本证明,它根据每个节点所拥有代币数量的比例和持币时间来通过算法按等比例地降低节点的挖矿难度,从而提高了寻找满足难度随机数的效率,缩短达成共识所需的时间,因此拥有的币的时间越久和数量越多,它获得的记账的概率就越大。类似于企业的股东制,占有股份多的,它拥有的决策权就越重。

PoS仍然需要网络中的节点进行PoW挖矿运算,因此,PoS机制并没有从根本上解决PoW机制难以应用于商业领域的问题。

公式表达: 

SHA256 ( Nonce + block_header ) <  Max_Difficult_value * CoinAge(CoinNum)

优点:比起PoW减少大量算力和电费,同时大大缩减了达成共识的时间。

缺点:由于持币时间长,数据多的节点容易获得记账权,相当于降低了节点的参与度,达成共识就越集中,虽然效率提高了,但也容易出现部分独裁现象,显失公平性。另外其实它本质上也是需要通过节点进行挖矿运算。

  • 授权股权证明机制 (DPoS)

DPoS(Delegated Proof of stake):由BM(GitHub称 ByteMaster)真名为Daniel Larimer 提出的并应用在比特股区块链系统上,接着也被应用在最新的Steemit、EOS公链项目中,目前来讲是比较流行的一种共识机制。DPoS它是PoS的一个扩展机制,它是主要是为了解决PoW机制和PoS机制存在的问题,目的是为了提高性能,降低交易的时间。

工作原理

DPoS共识算法中的记账权节点将原来自由进出、人人可参与的记账方式转化为指定某一部分节点来进行。首先由全网节点投票产生见证人,见证人也是记账节点的实际控制人,至于允许多少节点有参与记账权,这取决于系统的设计,当记账节点完成打包交易的同时也可以获取区块的gas 奖励和交易的手续费,并且也可以执行社区投票提案,所以DPoS不只是一种共识算法,它也包含了协作治理关系的共识机制。DPoS为了提高交易的效率,过滤无效交易,一般情况下,所有记账节点轮流每3秒就产生一个区块,当轮到某个记账节点出块时,必须在2秒内提交区块。

举个例子:假设一个班(区块链系统)有50人,一开始从50人中投票选出5位班干部(小红,小青,小白,小黑,小黄)来行使记账权力,然后在记账过程中,按顺序每位班干部有两秒的时间来做记账,如果在规定的时间内某位班干记账失败,即直接把记账权交到下一位班干部手中,因此在整个班上所有记账都只能在这5位班干部中开展,其它人成员无法参与记账。

优点:大幅缩减了参与验证和记账的数量,提高交易吞吐量,减少交易验证达成共识时间。

缺点:记账权被掌握在少数被指定的节点上,参与度太低,缺乏一定的代表性,显失公平。

  • 拜占庭容错(PBFT)

PBFT(Byzantine failures)是由莱斯利·兰伯特提出的点对点通信中的基本问题,分布式系统共同维护一个状态,各节点采取的行动一致,各节点消息响应要一致。目前主要应用于Hyperledgle Fabirc 区块链系统中。

拜占庭将军问题,要满足以下两个条件:

  1. 每个忠诚的将军必须收到相同的命令值vi(vi是第i个将军的命令)。

  2. 如果第i个将军是忠诚的,那么他发送的命令和每个忠诚将军收到的vi相同。

因此拜占庭容错系统是一个拥有n台节点的系统,整个系统对于每一个请求,满足以下条件:

  1. 所有非拜占庭节点使用相同的输入信息,产生同样的结果;

  2. 如果输入的信息正确,那么所有非拜占庭节点必须接收这个信息,并计算相应的结果,只要有一个节点计算机不正确,都不能达成共识。

算法流程

请求 ---> 序号分配 —> 交互 —> 响应 

  1. 客户端发出请求;

  2. 主节点收到请求后,启动协议向各节点发出广播,然后执行序号分配、交互消息、序号确认并响应广播消息;

  3. 客户端收到来自不同节点的响应,如果m+1的节点响应消息相同,即达成共识。

对比以上几种最常用的共识算法,各有利弊,但它们的诞生都围绕着这几个维度考虑:安全性、扩展性、性能效率、资源消耗。

小结

本篇主要讲了共识机制的概念和它的作用,以及它的运行原理,还介绍了当前最常见的几种共识机制以及它们的优缺点。

猜你喜欢

转载自blog.csdn.net/to_cm/article/details/82765861