面向物联网的区块链共识机制综述
2021-04-20田志宏赵金东
田志宏,赵金东
(烟台大学计算机与控制工程学院,山东烟台 264005)
0 引言
近年来,物联网(Internet of Things,IoT)设备呈指数级增长,物联网以传统互联网、移动网络、传感器网络为基础,扩展了新的互联网概念,实现万物互联互通,使人类社会更加高效、智能化[1-2]。但是,物联网设备资源有限,且容易受到安全攻击[3]。伴随着区块链在对等网络(Peer to Peer,P2P)传输、分布式存储、共识机制、密码学、智能合约等技术方面的不断运用,将区块链核心技术之一的共识机制应用于物联网场景中,能够解决物联网面临的中心机构运行成本高、可扩展性差、安全性存在隐患等问题,提高物联网的性能和安全性[4]。
传统的共识机制需要竞争记账权,会造成资源大量浪费的现象,不完全适用于资源有限的物联网设备;此外,随着物联网设备的不断增加,交易的处理速度和可扩展性也需要得到提高。而且,区块链分叉[5]也会导致双花攻击。双花攻击指的是攻击者通过不承认最近的某个交易,并在这个交易之前创建了一条更长的区块链,从而实现一笔交易被花费了两次[6]。为了解决分叉问题,区块链通常采用最长链原则,但是这样会造成交易高延迟问题[7]。因此研究各种共识机制优缺点,对物联网和区块链的结合具有重要的意义。
目前,出现了很多种共识机制,有的通过算力竞争来实现,如工作量证明(Proof of Work,PoW)共识机制;有的使用投票选举来实现,如授权股权证明(Delegated Proof of Stake,DPoS)共识机制;还有的利用燃烧硬币来实现,如燃烧证明(Proof of Burn,PoB)共识机制以及其他实现形式的共识机制等。这些共识机制各有各的优势,并且都在相应的场景中得到了运用。但是物联网具有节点密集、资源受限、容量不足等特征,现有共识机制能否直接在物联网场景中得以实现,仍待研究。本文对区块链技术现有的协议、算法和技术进行分析和对比,研究各种共识机制在物联网环境中使用时存在的问题。
本文的主要工作如下:
1)对面向物联网的共识机制进行了分类,分别讨论了各类共识机制的工作原理和优缺点;
2)研究了共识机制在去中心化程度、交易处理速度、交易确认延迟、安全性和可扩展性方面与物联网的适应度;
3)讨论了面向物联网的区块链共识机制现有的挑战,把握了今后研究工作的方向。
1 物联网区块链
1.1 区块链
区块链的概念最开始是由一个笔名为“中本聪”的学者于2008 年发表的论文“Bitcoin:a peer-to-peer electronic cash system”中提出的[8]。区块链中存放了大量的交易信息,相当于一个数据库[9-12]。文献[13]提出区块链是一种按照时间顺序将区块从后向前依次链接起来的数据结构,利用非对称加密技术来保证不可篡改和不可伪造的去中心化共享账本。图1 是区块链结构图,其中a≥0(当a=0 时表示创世区块),区块由区块头和区块体构成,区块头包括父区块哈希值、版本号、时间戳、难度目标、nonce值以及merkle根,区块体保存着大量的交易信息。
图1 区块链结构Fig.1 Blockchain structure
区块链具有去中心化、开放性、共识机制和不可篡改等特点,确保了交易信息的正确性、安全性。
首先,区块链去中心化的特点使每个节点都有权共享交易信息并对信息的正确性进行验证;其次,区块链开放性的特点是每个节点在任何时间都可以加入或者退出;再次,区块链共识机制的特点可以使没有联系的节点,直接依靠共识机制来达成一致性协议;最后,区块链不可篡改的特点是基于哈希算法来保证交易信息不会被更改[14]。此外,根据应用场景和开放程度,区块链可以被划分为公有链、联盟链和私有链[15-16]。
1.1.1 比特币的运行机制(区块链1.0版本)
比特币是区块链1.0 版本的代表,它是一种数字货币,产生于分布式网络结构,区块链1.0 版本的系统架构如图2所示。
图2 区块链1.0版本架构Fig.2 Blockchain version 1.0 architecture
在比特币系统中,每个节点通过P2P 网络传输的方式完成交易信息的共享,并且节点可以匿名,保证了网络中交易信息的同步性。此外,为了防止双花攻击,系统采取给交易信息加上时间戳选取计算量最多的链为主链,维护其安全性。图3描述了比特币系统的运行流程[17]:
1)用户发起一笔新的交易,交易信息在全网中不断被广播;
2)每个节点对接收到的交易进行验证,如果该交易被验证为有效,则将交易存储在交易池中;
3)各节点通过挖矿来产生区块,矿工们需要通过工作量证明来完成哈希计算;
4)当一个节点挖出一个区块,网络中的其他节点将确认该区块的有效性,只需要花费少量的PoW计算即可;
5)如果该区块被确认为有效,则将其链接到区块链中;
6)成功完成一笔交易。
1.1.2 智能合约(区块链2.0版本)
智能合约这一概念最先由Nick Szabo 提出,是一套以数字方式定义并被实现的承诺[18]。区块链去中心化和不可篡改的特点为智能合约赋予了新的涵义,使智能合约能够运行在安全可靠的环境中,图4 是区块链2.0 版本的基础架构[13,19]。共识层包含各种共识机制,网络层中P2P 网络负责信息的广播,数据层存放数据信息、时间戳等,激励层包含以激励的方式获得收益所采用的机制[20-22],合约层主要是智能合约,应用层是区块链的应用场景。Ethereum[23]和Hyperledger[24]等平台利用智能合约,有效地解决了比特币系统存在的交易处理速度慢和高延迟的问题。
图3 比特币系统运行流程Fig.3 Operation flow of bitcoin system
图4 区块链2.0版本架构Fig.4 Blockchain version 2.0 architecture
1.2 共识机制
去中心化是区块链中的一个核心要素,每个节点的权力都是一样的,为了保证各个节点之间相互协作需要一套算法,这套算法被称为共识机制[25-26]。共识机制的研究起源比较早。1982 年,Lamport、Shostak 和Pease 提出了在遭受拜占庭节点的情况下如何达成一致性协议的拜占庭将军问题,推动了共识机制的发展[27-28]。
区块链核心技术共识机制首先应用于比特币中,随着区块链技术的不断发展与完善,共识机制也越来越成熟。常见的共识机制有工作量证明、权益证明(Proof of Stake,PoS)、授权股权证明、权威证明(Proof of Authority,PoA)、燃烧证明、贡献证明(Proof of Contribution,PoC)、存在证明(Proof of Existence,PoE)[29]、数据可恢复证明(Proof of Retrievability,PoR)[30]、存储证明(Proof of Storage)[31]、拜占庭容错(Byzantine Fault Tolerance,BFT)[32]、实用拜占庭容错(Practical BFT,PBFT)、简化拜占庭容错(Simplified BFT,SBFT)[33]、MinBFT[34]、Honeybadge-BFT[35]、Algorand、Paxos[36]、Raft、Tendermint、埃欧塔(Internet of Things Application,IOTA)、Byteball、Hashgraph[37]、HashNet[38]、Ouroboros[39]等。
1.3 物联网
物联网通过连接互联网和信息传感设备,实现智能化控制和处理信息[40]。图5 是物联网层次结构,自底向上可分为三层:感知层、网络层和应用层。感知层能够收集和处理信息;网络层通过网络传输完成信息交互;应用层直接联系具体业务,如智慧城市[40]、智慧工厂[41]、智能家居[42]等。
物联网通常包括资源约束的嵌入式设备,如射频识别(Radio Frequency IDentification,RFID)和传感器节点[43]。传感器节点作为物联网的重要组成部分,在实际应用中会面临一些技术挑战[44-46]:第一,由于传感器节点数量多,分布范围广,难以对节点进行集中的管理和维护;第二,由于体积小、功耗低、成本低,传感器节点的能量、计算、存储、通信能力受到限制,影响了网络的扩展能力;第三,由于大多数传感器节点都部署在无人值守的区域,容易出现数据被篡改或遭受攻击,安全性得不到保障;第四,传感器节点容易损坏,一旦出现问题,就无法判断是软件问题、硬件问题还是系统故障,这是由于节点存储空间有限,在节点端很难存储过多的调试信息,没有调试信息就不能够找到错误原因;第五,由于传感器节点在共享信息时,信息容易被泄露,面临隐私泄露威胁。
图5 物联网层次结构Fig.5 Hierarchical structure of internet of things
区块链拥有安全可靠的加密技术,并且凭借去中心化、共识机制、不可篡改的特性,能够改善物联网的安全和可扩展性等问题[47]。区块链去中心化的特点使物联网设备不需要中心服务器直接进行信息交互,解决中心机构运行成本高的问题。区块链共识机制的特点能够使物联网设备之间保持信任,增强网络的可靠性[48]。区块链不可篡改的特点使得数据写入区块链就难以更改,实现物联网设备中数据的追本溯源[49]。文献[50]提出利用区块链去中心化的特点解决物联网集中访问控制的问题,实现了去中心化访问控制系统。文献[51]为解决分布式物联网内的设备之间的信任问题,借助区块链共识机制,提出了一种适用于分布式物联网的信任管理方法,实现了数据共享与数据安全。将区块链共识机制应用于物联网中,在物联网设备之间实现共识过程,将增强物联网的性能和安全性。
接下来,将详细讨论面向物联网的各种共识机制,并对常见的共识机制进行分类研究,分析共识机制是否适用于物联网场景中。
2 共识算法
物联网设备具有数量多、分布范围广、功耗低、计算能力弱和安全存在隐患的特征,因此分析区块链共识机制的优缺点,对区块链技术能否应用于物联网场景中具有至关重要的作用。随着区块链技术的发展,共识机制的数量与日俱增。本章将介绍在区块链网络中广泛使用的共识机制,并讨论它们的优缺点。
根据生成新区块的方式,可以把共识机制划分为证明类、拜占庭类[7]和有向无环图(Directed Acyclic Graph,DAG)类。下面将介绍各类共识机制(PoW、PoS、DPoS、PoA、PoC、Ouroboros、PBFT、Algorand、Tendermint、IOTA、Byteball),并对比分析共识机制在物联网场景中的适应度。
2.1 证明类共识机制
证明类共识需要在共识过程中证明自己满足的特定条件,一般表示为“Proof of X”[52]。
2.1.1 PoW共识机制
PoW 共识机制,即工作量证明共识机制。其思想最早出现在1992 年由Dwork 和Naor 发表的论文中,被用来防止垃圾邮件问题[53]。比特币成功利用PoW 共识机制在没有中央机构的情况下,使全网每个独立的节点就交易信息的正确性达成一致,实现节点之间的相互信任,同时防止恶意节点制造假身份发起女巫攻击[54]。
图6 PoW共识机制工作原理Fig.6 Working principle of PoW consensus mechanism
难度目标值的计算公式[55]为:
其中:newtarget表示生产新区块的难度目标值;oldtarget表示生产上一个区块的难度目标值;totaltime代表生产前2 016 个区块所使用的时间。PoW 难度目标值调整机制:newtarget变大,生产区块所使用的时间会缩短;newtarget变小,生产区块所使用的时间会变长。
SHA256哈希函数:交易信息被编码为固定长度的由字母和数字组成的字符串后写入区块链[13]。哈希函数满足三个特性[17]:1)输入长度不同,但是输出长度却是不变的。2)由输出推导出输入基本上是不可能发生的。对于给定的b,找到一个a,使Hash(a)=b,几乎不可能。3)输入不同,要产生相同的输出是很难的。给定不相同的a和b,使Hash(a)=Hash(b)基本上不可能。
数字签名:共识机制通过数字签名的方式来核对发送者的身份,验证交易信息在传输过程中没有被篡改过,保证交易信息的完整性。数字签名的算法流程[17]如下:1)密钥生成。首先对交易信息进行加密,并且使用椭圆曲线密码算法来产生公钥和私钥。2)签名算法。接收者使用私钥对接收到的消息进行签名,并且广播出去。3)验证算法。对发送者的身份进行确认,判断身份是否正确。
PoW 共识机制的通信复杂度:通信复杂度是指共识过程中各个节点为了达成一致所需要的通信量。由于工作量证明采用哈希算法,通过寻找nonce值,重复计算区块头信息,矿工之间不需要通信,只有在生成区块后才在全网进行广播,其他节点验证区块有效性。因此,PoW 共识机制的通信复杂度为O(n)。
PoW共识机制的优点:
1)去中心化程度高。每个节点享有同等参与的权力,并且对产生的新区块进行验证工作。
2)安全性高。基于最长链原则的PoW 共识机制,产生区块需要牺牲大量的算力,作恶成本高,避免双花攻击。
3)算法简单,容易实现。生成和验证区块是通过求解哈希函数来解决一个纯粹的数学问题[56]。
PoW共识机制的缺点:
1)高延迟。生成一个区块需要花费10 min,使得区块的确认时间长。
2)可扩展性差。随着交易数量的增加,处理交易的能力有限。
3)成本高。由于挖矿是一个不断进行哈希计算的过程,要以耗费大量的算力为代价,浪费资源。
4)需要特殊的硬件设备,而且对带宽的要求较高。
PoW共识机制与物联网场景的适应度:
PoW 共识机制应用于物联网场景中,受到四个因素限制:一是,挖矿需要消耗大量的算力资源,而物联网设备由于计算能力弱不适合成为矿工节点[2];二是,完成共识过程需要消耗大量的能量,而物联网设备具有低功耗的特征,而且大部分物联网终端采用电池供电寿命有限,不能满足能量的供应;三是,由于哈希函数求解的复杂性,解决此难题需要一些时间,使交易处理速度较慢,影响了出块的时间,无法满足物联网应用的低延迟需求;四是,工作量证明共识机制需要特殊的硬件设备来支持以及对带宽有一定的要求,也不适合物联网场景。
2.1.2 PoS共识机制
PoS 共识机制,即权益证明共识机制,也称股权证明共识机制。其想法来源于Nick Szabo[18],之后在2011 年bitconitalk论坛上被Quantum Mechanic 正式提出[57],目的是解决PoW 共识机制存在处理速度慢、高延迟以及计算量大的问题。与PoW 相比,PoS 是用权益来代替算力,权益也被称为币龄。该算法的中心思想是通过权益大小来获得生成区块的权力,权益越大的节点越有可能先生成区块,当系统签名一个区块时,其币龄被置为零[57]。由于通过币龄来产生区块不需要消耗大量的算力,因此能量消耗少。
PoS 算法表示:coinage=coin*time,coinage表示该笔交易的币龄,coin和time分别表示持有货币的数量和时间,持有货币的数量越多或者时间越长,则获得产生区块的难度越小。
PoS共识机制的优点:
1)节省资源。生产区块不需要进行大量的计算,消耗的能量少。
2)低延迟。节点挖矿不需要算力竞争,只需要权益证明,提高了确认效率,从交易被打包装入区块到生成新区块的共识过程的确认时间大约是1 min[56]。
PoS共识机制的缺点:
1)安全性差。由于挖矿成本不高,攻击者可以累积一定量的币龄,发起双花攻击。
2)可扩展性差。由于交易数量的增加,网络节点处理交易的能力有限。
3)激励问题。因为PoS共识机制在共识过程中不需要消耗大量的算力,相较于PoW,其激励程度远远不及。
PoS共识机制与物联网场景的适应度:
PoS 共识机制应用于物联网场景中,受到两个限制:一是,PoS 共识机制生成区块成本低,恶意节点可以发起51%攻击,而物联网设备本身就容易遭受攻击,因此不太适用于物联网场景中[58];二是,由于其可扩展性差,当物联网设备增加时,网络节点处理能力有限。
2.1.3 DPoS共识机制
DPoS[59]共识机制,即授权股份证明机制。DPoS 是在PoS的基础上改进的一种共识算法,与PoW 和PoS一样,最长的有效区块链即为最佳区块链。相较于PoW 和PoS 共识机制,DPoS 共识机制提高了交易处理速度,大约每3 s 产生一个区块。全网每个拥有权益的节点都具有投票的权力,投票选出一定数量的代表节点,代表节点的职责是生产区块并进行区块的验证,类似于现实中“民主集中”制度的记账方式,可以在短时间内达成共识[60]。图7 是DPoS 共识机制的工作流程:每个拥有权益的用户,投票选出100 个代表,代表节点以轮流的方式在规定的时间内生产区块,只有验证通过,才能产生有效区块。此外,如果某一个代表节点长时间不在线或者多次产生无效区块,其他节点将投票选出一个新代表节点。
图7 DPoS共识机制的工作流程Fig.7 Workflow of DPoS consensus mechanism
DPoS共识机制的优点:
1)交易确认速度快。代表节点的数量是有限的,使得短时间内达成共识,产生一个区块仅仅需要大约3 s,相较于PoW 共识机制产生一个区块需要10 min,明显提高了确认速度。
2)节约资源。在系统中投票选取少量的代表节点,依靠每个代表节点轮流产生区块,不需要消耗大量的算力资源。
3)可扩展性好。由于代表节点处理交易能力强,提高了节点处理交易的扩展能力[60]。
4)抵御双花攻击。因为每个代表节点都拥有生成区块的权力,一旦一个代表节点在规定的时间没有生成区块或者多次产生无效的区块,那么这个代表节点会被其他代表节点投票剔除。
DPoS共识机制的缺点:
1)将一些代表节点的权力中心化。因为多个代表节点能够联合起来共同作恶,影响共识过程。
2)代表节点可能遭受分布式拒绝服务攻击(Distributed Denial of Service,DDoS)攻击。因为攻击者可以单独对每一个代表节点发起攻击,从而影响代表节点在规定的时间内生产区块。
DPoS共识机制与物联网场景的适应度:
目前,采用DPoS 共识机制的区块链应用平台是EOS 项目。EOS全称EOS.IO软件,通过构建一个类似操作系统的体系结构的应用程序,来实现去中心化应用程序的性能扩展(每秒可以处理百万级交易)[61]。EOS 项目的物联网应用是EOSIoT,利用智能合约和射频识别(Radio Frequency Identification,RFID)系统传送的电子标签,实现EOS 链服务于物联网场景中[62]。
DPoS 共识机制完全应用于物联网场景中时会受到一些限制:DPoS 共识机制的共识过程虽然简单高效,但是去中心化程度不高,不适用于分布范围广的物联网设备;而且,当物联网设备少时,代表性不强。对DPoS共识机制改进的物联网区块链项目是IoTEX,通过随机选择代表节点发布区块,进一步增强了去中心化和可扩展性方面的能力[63]。图8 是IoTEX架构,根链负责维护子链,子链直接用来连接物联网设备,当子链出现故障时,根链继续正常运行。
图8 IoTEX架构Fig.8 IoTEX architecture
2.1.4 PoA共识机制
PoA 共识机制,即权威证明共识机制,在PoS 的基础上进一步提高交易处理速度和可扩展性。该机制把节点分为普通节点和验证者,由验证者轮流对区块进行签名来判断是否为验证者。以下是PoA共识机制的工作原理[64]:
1)系统根据节点信誉选出一定数量的验证者。
2)用户或者智能合约向系统发起交易请求。
3)系统中的验证者接收到交易请求后,将交易打包到区块中。
4)当一个验证者将交易打包到区块并确认出块,在全网进行广播,验证者对区块进行签名,检查该节点是否为验证者。如果该节点被确认为验证者,则该区块是有效的。
5)如果普通节点申请成为新的验证者,需要在验证者内部投票决定。验证者将根据投票数量是否大于1/2,来对该节点进行判断。如果得到超过1/2的投票数,该节点将成为新的验证者。
PoA共识机制的优点:
1)交易处理速度快。由于计算能力要求低,不需要进行大量的计算,平均只需5 s即可生成区块[65]。
2)安全性高。由于该机制需要对验证者的身份进行确认,只有确认合格才能发布区块,所以验证者很难作恶,能够有效避免双花攻击。
PoA共识机制的缺点:
1)去中心化程度不高。因为参与共识过程的验证者数量较少。
2)验证者作恶。如果验证者在共识过程中选择作恶,当前有效的解决方法是使用多重签名机制。
3)隐私威胁。由于验证者身份是公开的,个人信息容易被泄露。
PoA共识机制与物联网场景的适应度:
PoA 共识机制适用于解决物联网面临的处理能力弱、能量供应有限等问题,但是应用于物联网场景中会受到一个限制:与DPoS共识机制类似,由于去中心化程度不高,不适用于分布范围广的物联网设备。
2.1.5 PoC共识机制
PoC 共识机制,即贡献证明共识机制,最早是由CyberVein 团队提出的,被用来解决区块链中51%攻击问题。PoC 共识机制生产区块是通过贡献算法选择贡献最多的节点,贡献算法的计算公式[66]:
其中:MC代表贡献值;m和n表示节点的数量;ω1影响复原的时间;ω2与节点的初始状态有关;ω3是一个常数值;ω4是节点在线时间系数;ΔT是一个时间差;kc表示节点状态的相关系数;T1代表共识结束时区块的时间戳;T2代表初始的时间戳;T3代表用户不在线的时间。
PoC共识机制的优点:
1)去中心化程度高。贡献证明算法每次选择贡献最高的节点生产区块,节点可以自由参与或者退出。
2)安全可靠。采用贡献算法,以贡献量最大的节点生产区块,能够避免双花攻击。
PoC共识机制的缺点:
1)可扩展性差。随着交易量的增加,网络节点处理交易的性能没有改变。
PoC共识机制与物联网场景的适应度:
PoC 共识机制虽然能够解决物联网存在的安全问题,但是会受到一个限制:随着物联网设备日益增加,扩展能力将受限。
2.1.6 Ouroboros共识机制
基于PoS 共识机制的Ouroboros,被用来防止自私挖矿等攻击,保证系统安全性。在共识过程中,用slot 表示划分的时间段,相邻的几个slot组成一个epoch。
Ouroboros共识机制的工作原理[39]:
1)获取当前epoch 的公钥vk、权益s和初始化随机种子ρ的信息。
2)由随机变量F(S,ρ,slj)计算出领导者Ui负责生产区块的概率,其中代表第j个slot。如果超过当前slot 的时间,放弃当前的slot 进入下一个;同时,MPC 协议会产生一个随机种子ρ作为下一个epoch 过程的函数信息。
3)当前的epoch过程完成。
Ouroboros共识机制的优点:
1)安全性高。Ouroboros对安全性做了严格的数学论证,提出了一种新的激励机制,让诚实节点的行为是一个近似纳什均衡,能够防止恶意攻击。
2)交易处理速度快。耗费算力资源少,比PoW 和PoS 共识机制更高效,大约能够在20 s达成共识完成出块。
Ouroboros共识机制的缺点:
1)容易遭受DDoS 攻击。由于Ouroboros 共识机制能够提前知道谁是下一个出块者,攻击者可以单独发起对某一个出块者的恶意行为。
2)去中心化程度低。在Ouroboros共识机制中,由于节点进行选择出块候选人与代币的分布有关,会影响去中心化程度。
Ouroboros共识机制与物联网场景的适应度:
Ouroboros 共识机制提高了系统的安全性和交易速度,但由于后期去中心化程度的降低,不太适用于物联网场景中。
2.2 拜占庭类共识机制
拜占庭类共识机制,是以BFT为基础发展而来的。
2.2.1 PBFT共识机制
PBFT 共识算法,即实用拜占庭容错共识机制,最早是由Castro 和Liskov 在1999 年发表的论文中提出的[67]。节点间为了达成共识需要处理大量的消息,作出决定所需的消息数量取决于拜占庭节点的估计数量,通常用f表示拜占庭节点数,n表示网络中总节点数,使用n与f的关系在分布式系统中达成共识。比特币中n>2f+1,如果拜占庭节点数超过全网总节点数的1/2,会使区块链分叉,遭受双花攻击。而PBFT共识机制采用的是n>3f+1,只要系统中正常工作的节点能够达到2/3 就可以达成共识。PBFT 算法由请求、预准备、准备、提交和回复五个阶段组成,一次共识过程中存在一个主节点和若干个备份节点,如图9 所示。PBFT 共识机制的工作过程[67]如下:
1)请求。网络中的主节点接收客户端发送的请求消息。
2)预准备。主节点接收到消息后,计算预准备消息为(预准备,v,a,b),其中v表示视图编号,a表示序列号,b为消息的摘要。
3)准备。备份节点接收到预准备消息后,计算准备消息为(准备,v,a,b,i),i为节点编号。同时,每个节点需要检验消息的有效性:如果验证有效,就会把消息写到日志文件中。
4)提交。每个节点在收到准备消息后,会对准备消息进行验证,只有通过验证客户端才能收到回复。
5)回复。若客户端收到的相同回复消息至少是f+1,则表示请求结束;否则,重新发起请求。
图9 PBFT算法流程Fig.9 PBFT algorithm flow
文献[68]针对PBFT 共识过程中需要进行多次交互的问题,提出了一种基于信用的改进PBFT共识机制的高效动态的CPBFT 共识机制,该机制能够减少交易确认的时间和节点与节点之间的通信次数,提高了系统的性能。文献[69]提出采用多主节点的PBFT共识机制,有效地降低了拜占庭节点作为主节点的可能性。
PBFT共识机制的通信复杂度:由于算法共识过程的五个阶段需要广播大量的消息,所以PBFT共识机制的通信复杂度为O(n2)。
PBFT共识机制的优点:
1)共识效率高。在秒级内就能够生产区块,效率高。
PBFT共识机制的缺点:
1)适用范围有限。PBFT 共识机制不适合采用公有链方式。
2)可扩展性较差。在节点数增多后,网络节点处理能力有限。
3)容错性低。PBFT 共识机制要求节点总数n>3f+1,即系统拜占庭节点数不超过全网节点数的1/3。
4)容易遭受拒绝服务(Denial of Service,DoS)攻击。攻击者发起对一笔交易的拒绝服务攻击,使消息得不到传播,阻碍成功完成交易。
PBFT共识机制与物联网场景的适应度:
PBFT 共识机制应用于物联网会受到一个限制:由于PBFT共识机制的安全性会随着节点数量的增多而降低,而物联网设备数量多,不能够解决物联网设备的安全威胁问题。
2.2.2 Algorand共识机制
Algorand 是一种将PoS 与BFT 共识机制结合的混合共识机制,解决了PoW 和PoS 共识机制中存在的交易延迟以及PBFT 共识机制的可扩展性问题[70]。该共识机制以拜占庭协议为基础,在共识过程结束时生成一个区块。因此,交易确认时间比PoW 和PoS 共识机制短。而且,在Algorand 中会对每个用户分配一个权重,该权重大小是根据用户所占用资金数量决定的,只要系统中有占2/3 资金以上的诚实节点,就可以避免双花和分叉[43]。此外,通过随机选择领导者生产区块和委员会成员投票决议(验证区块)的方式实现共识过程,解决了PBFT共识机制的可扩展性问题。
Algorand 共识过程[28]:①在当前轮中,计算随机数的数值,Qi-1是随机种子,ci-1是上一轮的领导者表示ci-1对Qi-2的数字签名,i-1表示轮数。②利用可验证随机函数(Verifiable Random Function,VRF)选出领导者和委员会成员。③当前被选中的领导者运行委员会内改进的拜占庭共识算法BA★。
Algorand共识机制的优点:
1)交易处理速度快于PoW 和PoS 共识机制。Algorand 共识机制通过选取一部分节点完成共识过程,提高了交易处理的效率;而且采用改进的拜占庭共识算法BA★,以很小的通信量使委员会成员达成一致,进一步缩短了共识时间。
2)安全性高。由于采用了随机选取领导者和委员会成员的方式,不能够确定谁是下一个区块的生产者,有效地抵御了攻击者的任意行为。
Algorand共识机制的缺点:
1)没有激励机制。由于没有额外的奖励,节点不会积极参与。
2)安全隐患。网络用户重复使用领导者和委员会成员的私钥,使私钥容易被泄露;此外,当系统中恶意节点占有2/3以上资金时,恶意节点可以发起任何行为的攻击。
3)缺少惩罚机制。在共识过程中,如果存在恶意节点,缺乏惩罚机制将不能阻止恶意行为攻击。
Algorand共识机制与物联网场景的适应度:
Algorand 共识机制应用于物联网场景中会受到两个限制:一是隐私泄露问题。由于在共识过程中会重复使用私钥进行签名,可能会泄露用户信息,而物联网设备本身就存在隐私泄露问题;二是当恶意节点掌握系统2/3 以上资金,会破坏共识过程,而物联网设备本身就容易遭受安全威胁,这将使Algorand共识机制应用于物联网中面临安全挑战。
2.2.3 Tendermint共识机制
Tendermint 共识机制是基于PoS 和PBFT 的共识机制,目的是为了解决无利害关系问题[71]。Tendermint 共识机制受PBFT SMR 算法和DLS 算法的启发,与DLS 算法类似,Tendermint 以轮为单位进行,每轮都有一个专用的提议者(协调者或领导者),流程进入新一轮,作为正常处理的一部分[72]。Tendermint 共识算法中有两个角色:1)验证者,在生产区块阶段拥有投票的权力;2)提议者,提议区块。其共识过程分为三个核心步骤和两个特殊步骤,也称一轮。三个核心步骤是预投票、预提交、提交,两个特殊步骤是提议者提议区块、生成新区块并且区块链高度加1。
图10 是共识过程[71]:首先随机选择一部分节点成为验证者,然后从验证者中选择一个作为提议者,当一个提议者完成对区块的提议后,验证者将以循环的方式产生下一个提议者。提议者开始提议一个区块,并向全网广播,验证者在收到这个提议区块后,验证该区块的有效性,如果是有效区块,就进入到投票环节。在投票过程中,只有获得2/3以上验证者同意的票数才能进入到生产区块的下一个阶段。投票过程分为三个阶段:第一阶段预投票,如果有2/3 以上的验证者投票同意则进入到第二阶段预提交。同样,在预提交阶段如果有2/3以上的验证者投票同意则进入到下一个阶段提交。最终,提交产生一个新区块,进入下一轮。此外,如果提议者没有在设置的时间内提议区块,系统不会等待而会生成一个空块,进入下一阶段。在预投票阶段,如果没有获得2/3 验证者投票的同意,系统也不会等待会生成一个空块,进入预提交阶段。在预提交阶段,如果没有获得2/3 验证者投票的同意,直接进入下一轮,由下一个提议者开始提议区块。空块不含任何交易信息,不是一个真正意义上的区块。
图10 Tendermint共识机制工作原理Fig.10 Working principle of Tendermint consensus mechanism
Tendermint 共识机制的通信复杂度:因为在投票阶段,需要网络中2/3 以上的验证者投票同意才可以发送消息,所以,Algorand共识机制的通信复杂度为O(n2)。
Tendermint共识机制的优点:
1)交易处理速度快。因为只要有验证者2/3 的投票同意就能够生产区块,可以在短时间内处理大量的交易,系统交易吞吐量大[73]。
2)安全性高。Tendermint共识机制对有恶意行为的节点采取罚款的方式,保证了交易信息的正确性。
Tendermint共识机制的缺点:
1)可能会遭受DoS 攻击。由于以循环方式选择提议者,可以针对某一个验证者节点发起攻击,阻止交易完成。
2)最多能容忍1/3 拜占庭节点。因为Tendermint 共识机制在共识过程中需要2/3 以上验证者投票同意才能进入下一阶段,能够允许的最大拜占庭节点数是不超过全网总节点数的1/3。
Tendermint共识机制与物联网场景的适应度:
Tendermint 共识机制的高吞吐和低延迟提高了物联网的性能,特别是通过Tendermint 实现的Ethermint 被认为是物联网区块链结合的合适选择[74]。相较于后面DAG 类共识机制,当节点数量特别多时其交易处理速度、安全性以及可扩展性不如IOTA以及Byteball共识机制。
2.3 DAG类共识机制
如果一个有向图从某个顶点出发,经过若干条边不能够回到原点,则这个图就是一个DAG,DAG 结构是一种新型区块链技术[75]。区块链在物联网的运用中存在很多问题,现有的共识机制PoW 和PoS 等,无法适用于物联网场景中,因此,提出了面向物联网场景的DAG(也称为Tangle)技术。
2.3.1 IOTA共识机制
IOTA 是针对物联网场景的应用而提出的一种新型区块链技术,物联网中的设备可以作为区块链的参与节点[76]。在IOTA 中,一个区块存放一个交易,图11 是IOTA 架构:每个新加入的交易将会被放在后面指向之前的两个交易。相较于链式区块链,IOTA 结构具有较好的可扩展性,同时能够处理大量的交易信息,减少了共识的时间。
为了解IOTA的运行过程,需要知道交易的权重和累积权重。3n是权重,n是非负整数。交易的累积权重是通过该交易的自身权重和其他直接或者间接验证这个交易的所有交易的自身权重相加求和得出的[77]。图11中,一个字母代表一个交易,如A、B,方框内左上角的数字是交易的累积权重,右下角的数字是交易的自身权重。交易A指向交易B和C,那么A直接验证了B和C;交易A、B、C、D、E、F、G最终都指向H,则交易H的累积权重的计算结果是16。
图11 IOTA架构Fig.11 IOTA architecture
IOTA 共识机制的工作原理:节点发起一个交易,需要验证Tangle中先前的两个交易,并将此交易指向他们。然后,通过花费少量的PoW 计算权重和累积权重验证先前的两个交易。随着这个交易被之后新的交易直接或者间接验证,当交易的累积权重足够大时,则认为这个交易是有效的。利用累积权重大小来验证交易有效性,可能会受到双花攻击(典型的是寄生链攻击)。为此,引入了马尔可夫蒙特卡洛(Markov Chain Monte Carlo,MCMC)验证算法,节点先在累积权重r和2r之间随机选择m个交易,然后以式(3)[77]所示的概率向尖端交易(tips)进行离散时间无规行走到tips,找到既定的目标:
其中:α>0,j→i代表由i转到j。
IOTA共识机制的优点:
1)高吞吐量。在DAG 结构下,只需要花费少量的PoW来验证先前的两笔交易,从而能够并发处理大量的交易,减少了生成区块的时间。
2)可扩展性好。随着交易数量的不断增多,IOTA 的处理速度和扩展能力得到相应的提高;而且,交易量越大,系统变得越稳定,安全性也会得到相应的提高。
IOTA共识机制的缺点:
1)交易时间不确定。由于IOTA 的交易验证是通过计算累积权重的方式,在交易量比较少时,容易出现交易长时间得不到确认。
2)安全性降低。在节点数过少时,容易遭受双花攻击,系统安全性不如链式结构。
IOTA共识机制与物联网场景的适应度:
IOTA 共识机制应用于物联网需要解决一个技术挑战:由于物联网设备具有分布范围广的特征,当在一定范围内物联网设备比较少而且分散时,需要解决IOTA共识机制本身存在的交易时间不确认、容易遭受双花攻击的难题。但是相比前面介绍的几种共识算法,随着物联网设备呈指数级的增长,它在速度、安全、可扩展性方面显然更好,未来会适用于物联网场景中。
2.3.2 Byteball共识机制
Byteball 是一个去中心化的系统,它可以对货币、股权等数据进行防篡改存储[78]。单元包括要存储的交易信息,他们之间相互链接,每一个新加入的单元直接或间接地被越来越多的包含哈希值的后续单元所确认。如图12 所示,顶点表示单元,一旦一个单元被确认,新的单元随之而来。
图12 Byteball结构Fig.12 Byteball Structure
文献[78]介绍了Byteball共识算法的原理:在Byteball中,引入12 个见证人,见证人用来记录存储单元。当用户发起交易时,由一个顶端单元开始通过选择算法选择一个最优父单元,直到构成一条到达创世单元的最佳路径称为主链。DAG的每个顶端单元直接或者间接到达主链,把主链编号为MCI,创世单元的MCI设置为0,向后逐渐加1,主链上最先直接或者间接单元的MCI是不在主链上的单元的MCI。在发生双重支付时,MCI小的存储单元被认为是有效的。
Byteball共识机制的优点:
1)安全性强。Byteball 共识机制引入了见证人的方式,并且通过选择算法来创建主链,提高了系统的安全性。
2)可扩展性好。与IOTA 共识机制类似,交易量越多,系统越稳定。
Byteball共识机制的缺点:
1)当存储单元数量比较少时,可能会发生双花问题,因为存储单元太少,使一些交易长期得不到确认,此时攻击者可以发起交易,制造另一条链,并且让其成为主链;而且,交易确认的时间也是不确定的。
2)牺牲了去中心化程度。由于引入了12个见证人,没有实现完全去中心化。
3)交易时间不确定。当系统中交易量较少时,会有一些交易长期得不到后续单元的确认。
Byteball共识机制与物联网场景的适应度:
Byteball 和IOTA 共识机制相较于链式数据结构来说,能够并发处理大量的交易,同时提高了扩展能力,更适用于物联网场景中。
2.3.3 DAG类共识机制分析对比
IOTA 和Byteball共识机制,有很多的共性,同时也会有很多的区别。表1 是DAG 类共识机制对比,Byteball 与IOTA 的主要区别是:①Byteball 比IOTA 多了交易费用;②IOTA 相较于Byteball 用到了少量的PoW 来进行验证工作;③IOTA 新发起的交易指向先前的两个交易,而Byteball能够指向先前的三个交易。
表1 DAG类共识机制对比Tab.1 Comparison of DAG consensus mechanisms
2.4 共识机制分析
研究区块链共识机制,需要对影响区块链共识机制的因素进行分析并做一些相应的比较。其影响因素如下:
1)去中心化程度。去中心化程度决定了参与共识节点的权力是掌握在少数人手里还是多数人手里。
2)交易处理速度。也叫交易吞吐量,是指在给定的时间段内处理交易的数量。
3)交易确认延迟是指交易从发起到生成区块的时间也就是交易的响应时间[79]。
4)安全性。共识机制中的安全性指的是在共识过程中,其所能够承受恶意节点发起任意行为攻击的能力。
5)可扩展性是指网络节点处理交易的能力,评价可扩展性好坏的标准是随着交易数量的增加,系统中节点处理交易的能力能否得到相应的提高[80]。
表2 列出了各种共识机制的算法种类、提出年份、吞吐量、响应时间、容错性和应用平台。表3 展示了各种共识机制在是否容易分叉、交易处理速度、交易确认延迟、安全性以及可扩展性上的优缺点。通过表2 和表3 直观的对各种共识机制进行对比,分析面向物联网应用的共识机制。
PoW 共识机制采用公有链,每个节点都可以参与,因而去中心化程度高。表3 表明PoW 共识机制容易产生分叉,进而如果攻击者掌握了全网51%的算力,会发起51%攻击;并且,PoW 共识机制也会遭受其他类型的攻击,如日蚀攻击、自私挖矿攻击等。通常情况下,PoW 共识机制产生一个区块需要花费10 min,会带来高延迟问题,而对于本身要求低延迟的物联网设备显然是不适用的。
相较于PoW 共识机制,PoS共识机制的出块时间为1 min,而且依靠币龄来产生区块,不需要消耗大量的能量;但由于PoS 共识机制容易遭受51%攻击以及无利害关系问题攻击,使系统安全性得不到保障。PoS 共识机制虽然提高了交易处理的速度,但是在安全性和可扩展性上没有任何的优势,不能解决物联网面临的现状问题。
DPoS 共识机制交易处理速度比PoW 和PoS 更快,不容易产生分叉,安全性比PoW 和PoS更好;缺点是只有少量的代表节点参与共识过程,而物联网设备具有分布范围广的特点,节点太少不具有代表性。因此,DPoS 共识机制不能够直接应用于物联网设备,只能通过改进DPoS共识机制使其适用于物联网设备。
PoA 共识机制具有交易处理速度快、共识时间短、扩展性好的特点;但算法实现起来比较困难,而且还存在隐私泄露问题,给物联网与区块链的结合带来困扰。
PoC 共识机制不容易产生分叉,其安全性高;但是由于可扩展性比较差很难适合数量不断增加的物联网设备。
Ouroboros 是一个可证明其安全性高的共识机制,其交易处理速度比PoW 和PoS 共识机制快;但由于后期去中心化程度的降低,会影响其在物联网场景中的使用。
PBFT共识机制的优点是不容易产生分叉,交易处理速度快。但是,这种共识机制容易遭受DoS 的攻击;而且,PBFT 共识机制只能容忍不超过1/3的拜占庭节点,随着节点数量的增加,在安全性上得不到保障,不能解决物联网的安全问题。
Algorand 共识机制具有交易处理速度快的优点。但是,容易遭受系统中有占2/3 资金以上的不诚实节点攻击;而且,当物联网设备的数量特别多时,可扩展性方面存在不足,会给物联网和区块链的结合带来麻烦。
Tendermint 共识机制具有低延迟和可扩展性好的优点,对于物联网区块链结合来说是适合的。但是,如果故障节点或恶意节点数超过1/3以上时,安全性则得不到保证;而且,随着物联网设备的大量增多,在交易处理速度和可扩展性上不如IOTA和Byteball共识机制。
IOTA 和Byteball 共识机制是一种新型加密技术,其在交易吞吐量和可扩展性上比传统的区块链共识机制有了很大的改进;但是在交易数量过少的情况下,IOTA 和Byteball的安全性低,而且容易发生交易长时间得不到确认等问题。
根据共识机制在去中心化程度、交易处理速度、交易确认延迟、安全性和可扩展性方面对物联网产生的影响,要因地制宜地选择适用于物联网场景的共识机制。在大多数情况下,PoW、PoS 共识机制不适合于物联网场景中;DPoS 由于节点数量太少,不适用于分布范围广的物联网体系;PBFT 在安全性要求低的物联网场景中可以使用。随着物联网设备的增多,PoC、Ouroboros、Algorand、Tendermint、POA 和PoC 在吞吐量和可扩展性上不如IOTA 和Byteball,IOTA 和Byteball 所具有的特点更适用于物联网场景。文献[81]研究了PoW、PoS 共识机制和利用DAG 技术的共识机制,根据生成区块的平均时间、交易确认的延迟、每秒处理交易的数量(Transaction Per Second,TPS)和确认失败的概率评估共识算法的性能,结果表明PoW 和PoS 对网络资源的变化更敏感,而DAG 对网络负载条件更为敏感。
表2 共识机制对比Tab.2 Comparison of consensus mechanisms
表3 共识机制优缺点对比Tab.3 Comparison of advantages and disadvantages of consensus mechanisms
3 结语
物联网技术实现了物与物之间的互联,推动了生产力的发展。但是,物联网存在中心机构运行成本高、可扩展性差和安全性低等缺陷,限制了物联网的发展。而区块链具有去中心化、开放性、共识机制和不可篡改等特点,刚好弥补了物联网的缺陷。在区块链架构中,物联网设备利用区块链的特点,实现数据的安全存储[82],将区块链应用于物联网场景中,被认为是区块链3.0 版本[83]。文献[84]提出物联网能够实现物与物之间相互通信,但在数据隐私和安全方面还存在缺陷,利用区块链去中心化的特点,提供可靠的数据共享环境,实现物联网系统的透明性、安全性和隐私性等。共识机制是区块链技术的核心要素,将影响物联网的发展。文献[85]针对物联网面临的设备数量多、结构复杂、计算能力弱等问题,提出利用区块链的去中心化和共识机制的特点,实现物联网与区块链的有效结合。本文通过对各种共识机制的优缺点进行对比,发现当需要处理大量交易时,IOTA 和Byteball 比其他共识机制在交易处理速度和可扩展性等方面更有优势,更适用于物联网场景中。虽然IOTA和Byteball已经开始应用于物联网场景,但是仍然存在很多的问题:
1)去中心化程度不彻底。IOTA 共识机制采用协调器来控制和处理信息,而Byteball共识机制引入见证人来维护网络信息,因此他们都没有实现完全去中心化。
2)安全问题。当交易数量较少时,IOTA 和Byteball 共识机制容易遭受双花攻击,而且交易可能长时间得不到确认,将他们应用于物联网场景,需要解决这一问题。
3)信息存储。由于物联网设备的存储能力有限,在IOTA和Byteball 共识机制应用于物联网设备时,需要解决存储问题。本文通过分析区块链共识机制的工作原理与优缺点以及与物联网的适应度,希望给未来物联网区块链的融合带来一些启示。