1. 首页 > 产业新闻 > 新能源

共识机制研究 | 见出知入,观往知来,加密经济回溯与展望

表1 共识体制分类

来源:袁勇, 倪晓春, 曾帅, 王飞跃,《区块链共识算法的发展现状与展望》

图4 共识算法发展沿革

来源:网络资料整理

共识机制是区块链的重要要素之一,也是分布式账本正常运行的核心规则,主要用于解决人与人之间的信任问题,以及在区块链系统中决定谁负责生成新区块并维护系统的有效统一,因此成为了区块链领域恒久不变的研究热点。

本文从共识机制的概念和作用入手,首先让读者对共识机制整体有一个初步的认识;然后从两军问题和拜占庭将军问题出发,按照共识机制提出时间的先后顺序介绍了共识机制的发展沿革;接着对目前主流的共识机制从概念、工作原理和代表项目三个方面进行了简单的介绍,并对主流共识机制的优势和劣势进行对比;最后对区块链项目讲解选择共识机制给出了建议,并指出了共识机制未来发展的可能性趋势。

一、共识机制的概念和作用1.1 概念:分布式账本正常运行的核心规则

1.2 作用:解决信任问题,决定新区块的生成和维护

1.2.1 用于解决人与人间的信任问题

1.2.2 用于决定在区块链系统中谁负责生成新区块并维护有效统一

1.3 共识算法的主流模型

二、共识机制的缘起

2.1 两军问题与拜占庭将军问题

2.1.1 两军问题

2.1.2 拜占庭将军问题

2.2 共识机制发展史

2.2.1 共识机制分类

2.2.2共识机制发展前沿

三、常见共识体制

四、共识机制的选择与现状总结

4.1 讲解挑选一个适合自己的共识机制

4.1.1 判断最终结果是否很重要

4.1.2 判断申请流程需要有多快

4.1.2 判断应用对去中心化的需求程度

4.1.3 判断系统是否可以终止

4.1.4 优劣权衡后选择适合的共识算法

4.2 共识机制的未来发展

1.1?概念:分布式账本正常运行的核心规则

? ? ? 由于加密货多数采用去中心化的区块链设计,节点是各处分散且平行的,所以必须设计一套制度,来维护系统的运作顺序与公平性,统一区块链的版本,并奖励提供资源维护区块链的使用者,以及惩罚恶意的危害者。这样的制度,必须依赖某种方式来证明,是由谁取得了一个区块链的打包权(或称记帐权),并且可以获取打包这一个区块的奖励;又或者是谁意图进行危害,就会获得一定的惩罚,这就是共识机制。

1.2 作用:解决信任问题,决定新区块的生成和维护 1.2.1 用于解决人与人间的信任问题

共识机制之所以在区块链技术中能够处于核心位置,最大的作用在于它从非对称加密和时间戳等密码学技术的角度制定好一套规则,所有参与者及其参与方式都必须遵守这套规则,且规则透明、无法人为随意修改,因此,无需第三方权威机构的背书,它也能够发动全网的节点去共同监督、去记录所有的交易情况,并以代码的形式公布,有效地实现价值信息转移,解决或者更确切的说是很大程度上改善了两个毫不相干、彼此互不信任的陌生人之间的信任问题,毕竟信任一个客观技术比信任一个主观的人风险更小。

1.2.2?用于决定在区块链系统中谁负责生成新区块并维护有效统一另一方面,在区块链系统中,由于点对点网络下存在较高的网络延迟性,使得各个节点所观察到交易事务的先后顺序出现一定差异,因此共识机制可以在很短一段时间内,对这段时间内发生的交易事务进行先后顺序达成共识,来决定在区块链系统中谁负责生成新区块,以及维护区块链的有效统一。

1.3?共识算法的主流模型区块链系统建立在P2P网络之上, 其全体节点的集合可记为PP, 一般分为生产数据或者交易的普通节点, 以及负责对普通节点生成的数据或者交易进行验证、打包、更新上链等挖矿操作的”矿工”节点集合(记为M), 两类节点可能会有交集;矿工节点通常情况下会全体参与共识竞争过程, 在特定算法中也会选举特定的代表节点、代替它们参加共识过程并竞争记账权, 这些代表节点的集合记为D;D;通过共识过程选定的记账节点记为A.A.共识过程按照轮次重复执行, 每一轮共识过程一般重新选择该轮的记账节点.共识过程的核心是”选主”和”记账”两部分, 在具体操作过程中每一轮可以分为选主(Leader election)、造块(Block generation)、验证(Data validation)和上链(Chain updation, 即记账) 4个阶段.如图 1所示, 共识过程的输入是数据节点生成和验证后的交易或数据, 输出则是封装好的数据区块以及更新后的区块链. 4个阶段循环往复执行, 每执行一轮将会生成一个新区块。

图1 区块链共识过程的基础模型

来源:袁勇, 倪晓春, 曾帅, 王飞跃,《区块链共识算法的发展现状与展望》

第1阶段:选主

选主是共识过程的核心, 即从全体矿工节点集MM中选出记账节点AA的过程:我们可以使用公式f(M)→f(M)→ AA来表示选主过程, 其中函数ff代表共识算法的具体实现方式.一般来说, |A|=1,|A|=1,即最终选择唯一的矿工节点来记账.

第2阶段:造块

第一阶段选出的记账节点根据特定的策略将当前时间段内全体节点PP生成的交易或者数据打包到一个区块中, 并将生成的新区块广播给全体矿工节点MM或其代表节点D.D.这些交易或者数据通常根据区块容量、交易费用、交易等待时间等多种因素综合排序后, 依序打包进新区块.造块策略是区块链系统性能的关键因素, 也是贪婪交易打包、自私挖矿等矿工策略性行为的集中体现.

第3阶段:验证

矿工节点MM或者代表节点DD收到广播的新区块后, 将各自验证区块内封装的交易或者数据的正确性和合理性.如果新区块获得大多数验证/代表节点的认可, 则该区块将作为下一区块更新到区块链.

第4阶段:上链

记账节点将新区块添加到主链, 形成一条从创世区块到最新区块的完整的、更长的链条.如果主链存在多个分叉链, 则需根据共识算法规定的主链判别标准, 来选择其中一条恰当的分支作为主链.

2.1两军问题与拜占庭将军问题 2.1.1 两军问题

图2 两军问题示意图

选自袁勇, 倪晓春, 曾帅, 王飞跃,《区块链共识算法的发展现状与展望》,自动化学报, 2018, 44(11): 2011-2022

如图所示,蓝军分支1、2部分别驻扎两边坡上,不能够远程沟通,而白军恰好驻扎在两军中间必经之路,。假设白军比蓝军两支部队的其中任意一支都要强大,但不如两支蓝军联合起来强大。如果蓝军两支部队需要联合同时进攻,就需要相互通信,但白军处在中间必经之路上,无法确认蓝军信使是否真的将进攻信号送到对面,也暂时不考虑信息是否有被篡改的可能性。在此情况下,由于相互之间没法达到完全确认,最终都不能达成有效共识,形成“两军悖论”。

2.1.2 拜占庭将军问题

图3 拜占庭将军问题示意图

由于当时的拜占庭罗马帝国国土辽阔,为了更好的达到防御的目的,在帝国周围分散驻扎了军队,每个军队都相隔很远,只能靠信使传递消息。在战争期间,所有的将军必须达成一致,或者以大多数一致作为决定,选择是否攻打敌人阵营。但是,由于完全依赖于人,如果存在有将军谋反或传令官传递错误信息的情况,讲解保证忠诚的将军在不受叛徒的影响下达成一致呢?于是有了拜占庭问题。

两军问题和拜占庭将军问题都在阐述一个问题:在信息交互不可靠的情况下,达成共识、协同行动存在很大的困难。而拜占庭将军问题也更像是“两军悖论”的泛化。

从计算机网络的角度来看,两军问题和拜占庭问题都是计算机网络课程的常见内容:网络上的两个节点直接通信存在失败的可能性,因此TCP协议不可能完全保证两个终端网络自始至终百分百保持一致的状态。但是,共识机制可以利用经济激励等其他方式去降低这种不确定性到大部分人可以接受的程度。

正是因为存在两军问题和拜占庭问题这类问题,所以共识机制开始呈现出其发展的必要性。

2.2 共识机制发展史 2.2.1 共识机制分类

由于不同的区块链项目类型对信息记录和区块的生成有不同的要求,以及随着区块链技术的发展对共识机制的不断改善,目前一共约有超过30种共识机制。这些共识机制可以按照其拜占庭容错性能主要分成两类:拜占庭容错系和非拜占庭容错系。

表1 共识机制分类

来源:袁勇, 倪晓春, 曾帅, 王飞跃,《区块链共识算法的发展现状与展望》

2.2.2 共识机制发展沿革

〉共识算法的发展

根据共识算法的提出时间,我们可以相对清晰的看到共识算法的发展。

图4 共识算法发展沿革

来源:网络资料整理

图5 区块链共识算法的历史演进

来源:袁勇, 倪晓春, 曾帅, 王飞跃,《区块链共识算法的发展现状与展望》

共识算法为区块链的共识机制奠定了基础。最初,共识算法的研究主要是计算机科学家和计算机教授用于改善垃圾邮件问题或是学术探讨。

比如13年美国计算机科学家、哈佛大学教授Cynthia Dwork就为了解决垃圾邮件问题,首次提出了工作量证明的思想;17年,英国密码学家Adam Back为了解决垃圾邮件问题,也独立地提出并于2002年正式发表了用于哈希现金的工作量证明机制;19年, Markus Jakobsson正式提出了”工作量证明”的概念,为后续中本聪对比特币共识机制的设计奠定了基础。

?

图6 相对主流的共识机制归纳

来源:Hasib Anwar, “Consensus Algorithms: The Root Of The Blockchain Technology”

上图为一名极客Hasib Anwar归纳的其中14种相对主流的共识机制,包括PoW(工作量证明)、PoS(权益证明)、DPoS(委托权益证明)、LPoS(租用权益证明)、PoET(过去时间证明)、PBFT(实用拜占庭容错)、SBFT(简单拜占庭容错)、DBFT(委托拜占庭容错)、DAG (有向非循环图)、Proof-of-Activity(活动量证明)、Proof-of-Importance(重要性证明)、Proof-of-Capacity(容量证明)、Proof-of-Burn (燃烧证明)、Proof-of-Weight (重量证明)。

下面的,我们主要针对目前区块链最主流的十大共识机制进行介绍分析。

》POW

-?概念:

工作量证明机制。即对于工作量的证明,意味着消耗一定的计算机时间来确认做过的工作量。

-?实现原理:

图7 PoW工作量证明原理

以比特币为代表的PoW使用的是SHA-256算法函数,是密码哈希函数家族中输出为256位的哈希算法:

工作量证明的输出=SHA256(SHA256(区块头));

if(工作量证明的输出<目标值),证明工作量完成;

if(工作量证明的输出>=目标值),变更随机数,递归i的逻辑,继续与目标值比对。

新难度值=旧难度值*(过去2016个区块花费时长/20160分钟)

目标值=最大目标值/难度值

最大目标值为一个固定数,若过去2016个区块花费时长少于20160分,那么这个系数会小,目标值将会被调大些,反之,目标值会被调小,因此,比特币的难度和出块速度将成反比列适当调整出块速度。

-?代表应用:BTC等

》POS

-?概念:

权益证明。即依据各人持币权益来达成共识的机制,持币越多越久,获得奖励的概率越大。

-?实现原理:

PoS实现算法公式:hash(block_header)=<target * coinage

币龄计算公式:coinage=币的个数*币的剩余使用时间

其中,coinage表示币龄,这将意味着,币龄越大,越容易得到答案。而其中币龄的计算是通过挖矿者拥有的币乘以每个币的剩下使用时间得到,这也将意味着拥有的币越多,也越容易得到答案。这样,pos解决了pow中浪费资源的问题,同时挖矿者不可能拥有全网51%的币,所以也解决了51%攻击的问题。

-?代表应用:ETH等

》DPoS

-?概念:

委托权益证明。即持有币种的投资者通过投票选举超级节点来运营整个网络,类似于人民代表大会制度。

-?实现原理:

DPOS算法被分为了两部分。选举一组区块生产者和调度生产。

选举:只有拥有被选举权的永久节点才能够被选举,最终只有前N名见证人可以被选举出来。这N个人都要获得50%上面这些的票数才能够顺利当选,除此之外,这个名单会按照固定的时间间隔进行重新选举。

调度生产:在正常情况下,区块生产者轮流每3秒产生一个区块。假设没有生产者错过自己顺序,那么他们生产的链条势必是最长的链条。见证人生产区块时,每2s需要产生一个区块,如果超过了规定的时间,那么当前见证人就会失去生产权利而转交给下一个人。那么见证人不仅没有报酬,还可能会失去见证人身份。

-?代表应用:EOS等

》DPoW

-?概念:

延迟工作量证明。建立在PoB与DPoS基础上的新一代共识机制。矿工使用自己的算力,通过哈希算法,最终证明自己的工作量之后,获取对应的wood,wood不可交易。当wood积攒到一定量之后,可以前往燃烧场地燃烧wood。这样可以让算力和出矿权利达到一个平衡。

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.fjxmta.com/chanye/xinnengyuan/45234.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456