APP下载

区块链共识算法的比较研究

2018-08-15宋焘谊赵运磊

计算机应用与软件 2018年8期
关键词:见证人拜占庭共识

宋焘谊 赵运磊

1(复旦大学软件学院 上海 201203)2(复旦大学计算机科学技术学院 上海 200433)

0 引 言

去中心化加密数字货币被证明是一种成功的应用模式,应用的使用者同时可以成为这个应用的维护者,却没有一家机构或者个人可以拥有绝对的管理权限,这给软件开发带来了全新的思路。区块链的去中心化结构[1]、数据公开透明、不可篡改的特性,吸引了各国政府和企业巨头还有创业公司的关注,已经成为研究和资本的热点。比特币作为第一个加密货币,目前总市值已经超过千亿美元,单币价格于2017年末一度超过19 900美元。其他加密货币也逐渐显现其各自的特色,并具备一定规模的市场价值。至今金融安全、合约设计、信用征集、数据保护等领域纷纷布局区块链。

工作量证明机制(POW)为代表的共识算法的提出,是比特币这类加密货币能够去中心化的根本原因,也是区块链系统的底层核心技术。本文比较了公有链和许可链的共识算法,比如POW、POS、DPOS和PBFT,提出了区块链共识算法的特点和限制,总结了区块链的一些安全原则,比较了不同协议的可信度。最后,提出了未来共识算法的发展方向。

1 区块链模型

随着加密货币尤其是比特币以太币的交易价格的不断攀升,区块链技术的研究和应用也愈来愈被学术界和资本市场的认可。各界对加密货币以及区块链的研究热情高涨,并发展了很多研究方向[4]。区块链去中心化结构、数据公开透明、不可篡改的特性,吸引了各国政府和企业巨头还有创业公司的关注,已经成为研究和资本的热点。

由于特殊的数据结构和共识方式,区块链才能够具备去中心化共同维护和防篡改的能力。在不同的应用场景下,对区块链的需求也不一致,安全性、吞吐量、去中心化的能力之间会有权衡。区块链本身也有不同类别适应于不同场景条件。

1.1 区块链的定义与结构

区块链是在各个节点互不信任的情况下,建立的一个可靠系统。从其功能上来说,它为用户提供了可靠的数据,从内容上来说,其数据在每个节点都有副本,可以将其视为分布式数据库,这个数据库只允许通过添加的方式修改和插入数据,不允许删除的操作。

同一条区块链的各个节点使用密码学相关协议,在允许存在一定比例的恶意节点的情况下,共同维护链上数据。因此,区块链作为一个值得系统节点信赖的数据库,来实现数据的查询和服务的提供。由于智能合约[7]的出现,许多区块链可以自定义代码,执行特定的功能,这使得区块链除了可以作为比特币这类数字货币系统,还能够承担更多的功能。

我们以比特币为例介绍区块链的结构,在区块链系统中,每位用户有自己的公钥地址和私钥。区块链是由一个个区块构成的链状数据结构。每个区块的结构如图1所示。每个区块的结构中包含了上一个区块的哈希值,从而形成链状结构。交易记录以Merkle Tree的形式组织起来。

图1 常见的区块链结构

1.2 区块链分类

通常来讲,区块链可以分为两大类:公有链和许可链,其中许可链可以分为私有链和联盟链。

公有链(Public blockchain)是指任何人都可以随时加入成为链用户并参与共识过程,并且有权利在支付交易费的情况下,向区块链添加交易。公有链中,节点可以自由出入区块链网络,可以依照规则参与共识过程。第一个区块链应用比特币就属于公有链,随后出现的,以太币、莱特币等公众能够买到的数字货币大多也属于公有链。共有链是真正意义上去中心化应用,密码学保证了区块链的安全性,共识协议保证了不会有一个节点或者组织长时间占据管理出块的权限。

许可链(Permissioned blockchain)则与公有链不同,许可链一般是由某个实体或联盟所运营,每条区块链由特定成员或者利益相关的机构管理,区块链的使用也有着特定的业务环境。目前许多机构在许可链的开发成果颇丰,创业公司Tendermint开发了拜占庭容错的区块链应用平台;IBM的HyperLedger Fabric项目,帮助企业构建区块链服务;R3 Corda链接了42家银行金融机构共同研究,致力于开发金融场景下的区块链。具体来讲许可链可以有下面两个细分:

私有链(Private blockchain)由单一的个人或企业运营,通常是对该组织内部数据库的管理和审查,公众一般不参与区块链的维护,甚至没有权限发布交易。

联盟链(Consortium bockchain)由不同的实体来加入区块链,通常需要对各方的共享数据类型进行限定,链上内容不会完全公开透明。目前已经有很多程序员和创业公司根据自己的构想来建立不同的区块链协议。致力于区块链的金融应用的区块链联盟R3就是其中之一,该公司已经筹得1.07亿美元的融资,并且吸引了42家银行巨头的参与。

加入许可链需要授权,节点不能随意注册与退出,甚至整条链被单一机构所控制,因此许可链中心化程度比较高。目前分布式服务器已经很成熟,像阿里云、腾讯云可以提供计算资源,企业可以租用这些不同地域的服务器来提供稳定高吞吐量的服务,区块链提供的服务相比于这类云服务器提供的服务有什么区别呢?

即便是在同一机构中,信任也不是绝对的。一个机构中各个网点,甚至每个成员都有可能对数据产生威胁,比如因为银行票据和理财资金导致的金融犯罪就层出不穷,违规套取和非法挪用金额动辄上亿甚至数十亿,给投资人和银行造成极大损失。传统方法下,我们只能通过权限管理[8],保证敏感数据修改权限只在高级管理人员手中。数据修改需要实行申请审批制度。这不单单增加了管理人员的劳动量,一旦系统出现漏洞或者权限账号发生泄漏等情况,损失会很严重。

区块链上的数据不可删除,对于账户的交易记录在链上可以追溯,所有用户的交易都需要被其他人见证并记录,这无疑解决了机构内部的信任危机。

2 分布式系统与共识

1982年,Lamport首次提出拜占庭问题[2],描述了在互不信任的网络中,通信各方达成共识的困难性。这个问题是这样的,多名将军率领各自的军队共同围困一座城市,对于每位将军,有撤退和进攻两种行动方案。将军们必须在撤退或者进攻的问题上达成一致,这样才能协心打败敌人或者最大限度避免伤亡。由于城市地域宽广,不同将军位于城市的不同的方向,因此各个将军之间只能通过信使传递信件来沟通。在决策之前,所有将军会将自己的投票通过信使传递给其他所有将军,然后每位将军通过自己的意见和其他将军的投票,来做出最后的行动决定。

问题的困难性在于,将军中有一部分人是叛徒,他们可以发送干扰性的消息,比如故意发不同的意见给不同的将军,或者伪造其他将军的信件,这样整个军队的一致性就会遭到破坏。

在有叛徒的情况下,将军们如何不受叛徒的挑拨达成一致的方案就是需要讨论的问题。因此,拜占庭将军问题是要解决在一个可以允许部分比例恶意行为的系统中,达成共识的问题。

该模型可以被引申为一般的分布式系统一致性问题。在分布式计算机系统中,位于互联网终端的计算机可以类比为各个将军,互联网类比为将军们的信使,叛徒类比为恶意的计算机节点和通信错误,互联网终端计算机的数据一致性就是将军们想要达到的一致性决策。在没有可信的中心节点的情况下,共识是难以达到的。

我们把节点的消息发生延时、丢失、重复错误称为非拜占庭错误(non-Byzantine fault),在仅有非拜占庭错误的情况下,想要保证系统的一致性相对比较简单。然而,如果系统中一个节点发生了拜占庭错误(Byzantine fault)[2],那这个节点就有恶意破坏这个分布式系统的能力,比如选择性不响应其他节点的请求,选择性对不同的节点发送不同的消息,或者联合其他发生拜占庭错误的节点一起破坏这个分布式系统。总之,节点能够发生最坏的情况就是拜占庭错误。如果一个共识算法可以容纳系统中有f个节点发生拜占庭错误,那么f个节点在任何错误下,共识算法都可以保证这个分布式系统的一致性。

3 共识的安全性分析

对于分布式系统来说,共识模型一般会对环境做一些假设,不同的算法能够容忍的错误类型和错误数量也是不同的。区块链本身实质上也是一个分布式系统,我们可以由分布式系统共识的评判标准引申为区块链的安全性定义。

3.1 时间模型

Fischer等[9]介绍了FLP不可能性结果。当我们不考虑设置消息延时的上界时,拜占庭将军问题不可解,即没有一个算法可以在甄别网络拥塞导致消息延时与服务器宕机的前提下,给出有效的共识算法。

那么实际应用中分布式算法,又是从何而来?实际上,有三类关于算法的时间模型,这三种模型出现在不同的分布式算法的假设中,通常来说,区块链的共识模型一般采取第三种时间假设[3]。

(1) 同步模型 在同步模型中,消息由发送方到接收方的延迟时间Δt是确定的,算法执行时间也是确定的。然而,同步模型过于理想,在现实世界中基本不会存在,在分布式系统中使用这样的假设,如果算法被实际应用,那么正确性将完全无法保证。从另一个角度想,如果在同步模型的假设下,依然没有算法可以解决某个问题,那么在异步模型下,失去了可以预测的时间,这个问题更加没办法解决。

(2) 异步模型 异步模型中,消息的延时Δt不确定,可以是任意长的时间。在异步模型下,程序的执行可能因为等待消息的到达而始终保持阻塞,因而算法的执行时间非常不确定。同样,使用这类假设的算法,无法判断节点消息是由于延时未到达,还是节点已经失效无法做出回应。这类算法通常可以保证程序的安全性,但是无法保证系统的活性。

(3) 半同步/半异步模型 为了寻求同时具备安全性和活性的算法,时间模型上我们往往使用半同步/半异步模型。在这个模型中,对于消息和计算会设置一个最长超时限制tmax,如果超过tmax,消息接收方依然无法收到消息或者依然没有得到结果,那么我们就假设这个节点已经失效,我们将不再等待和处理这个节点的消息。

3.2 分布式系统的安全模型

在Lamport提出的分布式系统安全模型[11]中,可靠的分布式系统的定义是:系统在不超过f个节点发生错误(拜占庭/非拜占庭错误)的条件下,对于每一个请求,分布式系统可以保证有安全性(Safety)和活性(Liveness)。

安全性:程序永远不会产生一个坏的结果,即对于请求,分布式系统给出的回复是正确的且无需更改。

活性:程序最终将会产生一个好的结果,即在有限的时间t内,分布式系统会对请求做出回复。

从参与分布式系统的每个节点(将军),来判断这个系统的算法的有效性,可以从以下三个标准来具体评判:

(1) 可终止性:所有诚实的节点都会最终产生一个结果。

(2) 合法性:如果诚实的节点最终的结果是d,那么d一定是由某个(些)节点提议的。

(3) 一致性:所有诚实的节点决定的结果是相同的。

如果一个算法能够保证可终止性、合法性和一致性,那么就可以称这个算法可以解决共识问题。

然而,现实中通信过程无法达到同步,每个节点也无法保证永远在线,当一个可以失效或者节点所处网络拥塞时,我们需要考虑异步或者宕机。

3.3 区块链安全性定义

类比于分布式系统对于安全性和活性的定义,我们对于以区块链为形式的系统,若满足以下两个性质,那我们说,这个系统可以正常运行。

安全性:存在一个k∈N,如果所有诚实的节点都认同区块Bi距离链末端有k个区块及以上的距离,我们能够称这个块Bi中的交易可信,我们称这些交易是稳定的。

活性:存在一个最长等待时间t和k∈N,使得一笔诚实且有着合理交易费的交易tx,在时间t后,可以满足安全性定义中交易稳定的状态。

4 区块链共识算法

区块链是分布式系统的一种,对于中心化不同程度的区块链,我们需要不同策略来实现容错的共识算法[10,12],从而保障账本的安全。

4.1 公有链共识算法

公有链是去中心化的分布式架构,节点的注册和退出比较频繁,节点数量一直在变化,节点在线比例也会不同。在这样的情况下一般使用证明机制来实现共识。

4.1.1 工作量证明机制POW

目前的数字货币大多使用工作量证明机制来进行维护账本。工作量证明机制是由Nakamoto匿名提出,将其用来作为比特币系统的共识机制,其主要思想是使用计算能力寻找特定的数字来使区块满足要求。

系统中有激励措施鼓励用户通过维护区块链系统来获取利益。参与共识过程的用户收集新产生的交易记录构造区块,尝试修改区块中Nonce的值,直到该区块的哈希值小于特定难度的哈希值,便可以对外广播区块。该区块得到其他用户验证和认可,成功添加到主链之后,用户就可以获得相应的奖励。

在这里我们将一个区块表示为包含三元组的数据包B=h′,txs,nonce,其中h′ 是前一个区块的哈希,txs是区块中所包含的交易记录,nonce是一个32比特的整数。为了达到共识,系统将节点构造区块等价为解一个困难问题,设定一个难度值D。D定义了当前整个区块哈希值需要有多少位前导0,前导0数量越多,难度越大。由于nonce改变任意一个比特都会使整个区块的哈希H(B)完全改变,所以没有方法可以预测哪种形式的nonce可以符合要求。因此为了达到区块的要求,节点需要用其计算资源尝试大量可能的nonce值使得H(B)

算法1pow证明机制

Input:preHash,txs,D

Output:Block

1:nonce←1

2:while(H(nonce,txs,preHash)>=D):

3: nonce←nonce+1

4:Broadcast()

5:end

如果大多数计算资源被诚实节点所控制,那么比特币账本将会正常维护。

共识算法嵌入数字货币系统的流程如下:

1) 新的交易广播给全网矿工。

2) 每位矿工收集交易记录,构造新的Merkle树。

3) 矿工利用计算资源来寻找满足当前难度值的nonce。

4) 矿工找到可行的nonce解,将区块广播给全网。

5) 其他矿工验证该区块。

6) 如果这个区块中交易记录有效,区块哈希符合难度值要求,并且该区块是所有分叉中最长的区块,那么其他诚实节点将会在这个区块后构造下一个区块。

比特币网络中,如果一个节点希望为账本添加区块,它将会收集并验证当前的交易信息,构造一个合法的区块。比特币是一个开放的系统,比特币的区块链实质上是一份记录着转账记录的账本,任何拥有哈希计算能力的人都可以参与到维护账本中来并有机会获取奖励,这样的特点吸引了众多算力加入到账本维护中。节点通过算力争取记账权的过程称为挖矿,参与挖矿的节点称为矿工。

工作量证明机制通过比拼哈希算力来争取出块的权利,这造成了大量专门为哈希计算优化的挖矿硬件和电力资源的消耗,使用POW作为共识算法的区块链都面临这样的问题,比特币总市值很高,但维护这样一个去中心化应用同样花费巨大。能否有更廉价的方式来维持类似去中心化协议健康运作同时又不失安全性和活性,这成为很多人研究的问题。

4.1.2 股权证明机制POS

由于区块链的特殊的数据结构,区块链的共识过程可以视为一种领导人选举机制,通过固定机制随机挑选领导人(记账矿工),由这个人发布新的块,避免由单个用户或者集团长期控制账本。然而随着区块链的发展,我们可以看到工作量证明机制有着种种问题。首先,比特币网络电力消耗巨大,有些矿场甚至建在水电站旁边以节省资源,很多场景中不需要区块链进行价值锚定。其次,这样的机制安全性并不像想象中的那么高,比如自私挖矿(selfish mining)[13]策略,可以不需要全网51%的算力就有概率成功控制区块链。

正是由于工作量证明机制的不足,股权证明机制(Proof of Stake)应运而生。股权证明希望使用股权(Stake)来代替或者部分代替计算资源来完成这个领导人选举的过程。股权证明机制经历了很多变化,很多数字货币都自称采用了基于股权证明的共识算法。这些算法有很多变种,但是可以总结出一些共同的特点。

在股权证明机制的过程中,共识算法根据参与共识过程每个人所持有股权比例来选择下一个出块的人。这一思想也来源于经济社会,一个人拥有股份数量越多,其获得的股息和分红就会越高,如果区块链也能够按照这样的形式来维护,不需要额外的资源消耗,同时还可以使得区块链资产有着自然的通胀。这听起来很理想,有着类似实体货币的属性。然而真正设计区块链股权证明机制的时候,却远没有那么简单,从技术实现,协议安全和资产安全等方面,需要考虑很多。

目前,有Peercoin、NTX、Blackcoin使用了基于POS思想的共识算法,以太坊未来也有向POS共识算法转型的规划。

采用POS共识协议的Peercoin和Blackcoin使用币龄作为一个变量来影响参与挖矿的哈希难度。我们将共识算法简单归约为算法2。共识过程中,节点需要提交一份交易记录来证明对区块链资产的拥有权,同时拥有的区块链资产越多,持有时间越长,挖矿就会越容易。股权证明算法希望用户可以自己向自己进行一笔转账,来证明所拥有的一定数量的区块链资产,这些资产可以影响区块链矿工挖矿的难度,拥有越多的资产,就越有机会计算出符合条件的nonce。因此我们要解决的哈希难题变为:

算法2Peercoin证明机制算法

Input:preHash,txs,D,

accountBalance,lashTransactionTime

Output:Block

1:nonce←1

2:coins←accountBalance

3:age←currentTime-lashTransactionTime

4:while(H(nonce,txs,preHash)>=coins·age·D):

5: nonce←nonce+1

6:Broadcast()

7:end

虽然POS算法能够从一定程度上缓解POW带来的计算资源的竞争,但其仍旧存在问题。比如某个用户拥有大量的区块链资产,或者长时间持有,甚至从ICO开始就持有区块链资产,这样就可以造成严重的贫富不均,对于网络中新加入的节点也不友好。另外,pos也没有完全脱离比拼计算资源的怪圈,这样的算法依然会消耗很多计算资源。而且会加剧矿池巨头垄断出块权利的情况。

4.1.3 股权授权证明算法(DPOS)

DPOS是去中心化交易所Bitshares提出并使用的共识算法。Bitshares允许三类人进行投票参与共识过程:见证人(witnesses),代表(delegates)和工人(workers)。见证人通过处理交易和维护区块链来获得报酬。代表不会获得报酬但是他可以发起更新Bitshare的请求。工人可以提出他们希望做的项目,如果这个项目被投票支持,那么他们可以从中获得报酬。

DPOS的共识过程分为见证人的选举过程和见证人出块两个过程。见证人只负责对于交易进行见证,验证交易的签名和时间戳,并不参与交易,网络中每个账户都可以为自己的见证人投票,拥有的区块链资产越多,票数也就越多。

1) 见证人选举 具有被选举权的永久节点接受投票,最终会有前N名见证人被选出来。N名见证人所获得的票数必须获得超过50%的投票。见证人名单按照固定的时间间隔(一天)轮换。

2) 见证人出块 见证人每生产一个块,都会获得报酬,他们的薪酬水平由其获得的投票决定。如果见证人没有生产区块,他们便没有收入,并且还有可能被投票失去见证人的身份。

见证人生产区块时,每2 s生产一个区块,如果见证人没有在规定的时间生产块,那么这个见证人将会被跳过,下一个见证人来生产区块。

与比特币网络相同,区块链的分叉通过选择最长链来解决。网络中所有用户都可以通过观察见证人的行为来监测区块链的维护过程,如果见证人的在线率比较低,将会影响其下一次被当选。

不过授权证明过程并没有那么完美,由于循环出块,出块人的身份早已知道,更容易造成合谋攻击。相比于前两个共识算法,DPOS算法中心化程度更强。

4.2 许可链共识算法

相比之下,Tendermint和Fabric更希望将区块链做成一类服务平台来帮助企业或者机构搭建区块链应用。它们对底层共识协议做了改进,可以不依靠计算资源来实现共识。它们提供PBFT作为共识算法[5],并力求将共识算法做成可插拔式,其身份验证选择也更多样化,支持智能合约,主要面向企业搭建区块链应用。和以太坊不一样的是,其每个参与共识的节点的加入退出都是需要权限授予的,并不是对所有人开放,这使得节点的共识主要由服务企业内部掌控,从而对外提供服务。但是正是由于这一特点,这样构造的区块链没有价值锚定,不需要考虑运营区块链应用需要花费多少数字货币,只需要专注于分布式应用的开发。

由于许可链应用场景多种多样,所以这些联盟链的共识算法显得更为复杂一些,甚至平台会为不同需求的企业选择不同的底层共识协议。Tendermint可以利用智能合约将共识算法和股权挂钩,Tendermint构造的区块链数字货币赋予价值之后,Tendermint可以使用内置货币参与共识,节点向保证金账户转入相应的保证金,如果节点正常参与共识协议,那么节点就会获得奖励,如果节点有恶意行为,那么其保证金就会被扣除。同时Tendermint可以直接使用PBFT算法来处理拜占庭错误的节点。

Hyperledger Fabric在上层提供docker来处理不同的数据,数据的权限可以为不同的用户组所设计,有些数据可以公开,有些数据可以保持仅特定用户组可见。

4.2.1 拜占庭容错算法(PBFT)

PBFT共识的分布式系统中,节点有主节点和副节点,假设我们用集合R来表示分布式系统中的节点,那我们为每个节点编号{0,…,|R|-1},我们有p=vmodR,假设|R|=3f+1,其中f是发生错误的节点的最大数目,只要节点数不少于3f+1,拜占庭容错算法都可以正常运行。节点当前的主副节点划分成为view,在view中,有一个节点是主节点p,其他的节点为副节点。在主节点发生错误,以及每处理一个客户端请求后,view都会进行改变,view是连续递增的,所有节点都有可能被选为主节点,即p=vmod|R|,view的存在是借鉴了Paxos的思想,可以避免宕机错误。

主节点接收和转发客户端的请求,所有节点均可与客户端进行连接。每个节点都有自己的状态,包括服务状态,已经收到的消息日志和一个表示当前view的标号的整数。

整个算法大致按照以下的流程来进行操作,一个分布式系统中有3f+1个节点,可以容忍f个拜占庭错误的节点。

1) 客户端向主节点请求调用服务。

2) 主节点多播请求到副节点。

3) 副节点执行请求,发送回复给客户端。

4) 客户端接收到f+1个带有相同答案的回复,客户端得到请求的数据。

拜占庭容错算法达成共识包括三个阶段:pre-prepare、prepare和commit。

当一个主节点p收到客户端请求m,那它就自动开始向它的副节点多播这个请求。

pre-prepare和prepare的存在可以给相同view的请求排序,规范了请求的执行顺序,prepare和commit的存在可以为跨view请求排序。

在没有错误节点的情况下,算法的执行如图2所示,Primary是主节点,副节点Replica共有三个,Client是客户端。

图2 PBFT 共识过程

除了节点数量固定,对于一个请求,有n个节点的分布式系统,消息数量级别是O(n2),这在节点数量很多的情况下是低效糟糕的通信,在共识数量有限的许可链中,使用PBFT尚能提供高吞吐量的服务,如果节点数量增加,提供服务的质量反而会下降,这在cosmos(使用Tendermint框架的一个分布式账本系统)的测试数据中也有所体现[6]。

4.2.2 Paxos 和Raft算法

在有些行业链中,采用了Lamport提出的Paxos算法或者使用其变种Raft算法来作为共识协议。在节点没有拜占庭错误的情况下,使用这些算法确实具有优势,在很多分布式系统中也获得应用,Google的Chubby、Megastore、Spanner等一系列产品都基于Paxos协议来确保一致性。

Paxos使用了两阶段提交的模型,提案-批准制的思想也在后面很多共识算法中使用,Paxos中有三个角色proposer,acceptor和learner,proposer提出一个值,希望更新状态,acceptor对提案请求批准,多轮交互使得系统中写入的消息内容和顺序保持一致,learner相当于存储机器,获取最终批准的提案并且更新,不参与投票的过程。

Paxos和Raft都是利用状态机复制来实现容错,为多个副本提供统一的数据更新顺序。由于这些协议基本不具备对恶意节点的防御能力,我们在这里不作具体介绍。

5 区块链共识算法比较

我们对区块链共有链和许可链的共识算法进行了比较,从资源消耗、中心化程度、吞吐量、交易确认时间来比较各个算法的优缺点,见表1。同时,我们在表2中比较了现行采用不同共识算法的密码货币的市场价值,这可以从侧面反映出资本市场对共识算法的认可程度。最后我们在表3中对许可链常见共识协议下的容错能力给出了定量的描述,对于无法抵抗该错误的用“-”表示。

表1 共识算法比较

表2 区块链市值比较(2018年3月10日)

表3 许可链容错情况比较

6 结 语

本文对现行的区块链流行的共识算法进行了总结,分别从共有链和许可链两个方面来具体描述其不同的需求和条件。公有链阐述了POW、POS和DPOS三种共识算法的内部实现。对于许可链,我们主要描述了BPFT算法的步骤和细节。

新的共识算法的开发需要兼顾不同场景的需要,并进行缜密的安全性论证。区块链的共识算法的公开评审是必要的,现行区块链的共识算法大多也是以这种方式推进,通过专家提案,公开讨论,协议实现,协议补充的步骤来把区块链共识协议一步步改进。目前对于POW-POS混合共识机制是研究的热点方向,利用智能合约构建更为透明的共识规则也是一个新方向。共识算法投入实践应用也是对算法的一种检验,新的攻击方法可以使我们了解现有共识算法的不足之处。

另外,对于许可链上的共识算法,可插拔可切换的方式是一种趋势。对于不同的商业场景、吞吐量需求和安全假设,我们可以采用对应不同的底层共识机制,从而更好地为顶层应用服务。

猜你喜欢

见证人拜占庭共识
民法典时代遗嘱见证人制度完善探析
共识 共进 共情 共学:让“沟通之花”绽放
拜占庭元素的艺术特征及在现代服装设计中的应用
论思想共识凝聚的文化向度
拜占庭帝国的绘画艺术及其多样性特征初探
商量出共识
哪些人不能作为遗嘱见证人?
见证人先于立遗嘱人死亡,遗嘱是否有效
《西方史学通史》第三卷“拜占庭史学”部分纠缪
拜占庭之光