APP下载

基于物联网区块链的轻量级共识算法研究

2023-02-20苏瑞国阳建秦继伟武晓雄贾振红

计算机工程 2023年2期
关键词:背书共识区块

苏瑞国,阳建,秦继伟,武晓雄,贾振红

(新疆大学 信息科学与工程学院,乌鲁木齐 830046)

0 概述

目前,物联网(Internet of Things,IoT)技术已经广泛应用于工业自动化、电子健康、物流等领域的智能系统中[1],这些智能系统通过大规模复杂的工业物联网实现自动化和高效化,从而提高系统服务质量和资源利用率[2]。物联网是由种类繁杂的传感器设备和网关组成的分布式网络,其所有系统和应用都可以接入互联网,实现资源和信息的高效共享。物联网设备采用分布式部署,且具有庞大的设备数量和规模,如何处理智能设备非结构化数据以及保障工业网络的访问控制和系统中各设备的通信质量,是智能系统所面临的巨大挑战[3],需要使用更高的数据采集标准以及统一的协议,将异构数据整合到统一的系统中,实现数据资源的整合以及不同设备之间的互操作[4-5]。

区块链是分布式的存储系统,由一个接一个带有时间戳的区块组成[6],以点对点(P2P)网络分布式数据库的形式存在,因此,区块链具有分散性、不可篡改性和可追溯的特点,凭借这些特点,其在物联网中得到有效利用,可实现更高效的数据交换、管理以及访问控制[7-9]。物联网结合区块链的共识机制,有助于避免非法甚至恶意节点的接入。Hyperledger Fabric 是一个主流的开源联盟链区块平台,不仅拥有区块链去中心化、数据不可篡改、多通道等特点,还提供了高效的共识机制、智能合约、数据存储等服务,Hyperledger Fabric 与物联网相结合,既可保证数据的可信度,又能为柔性可信溯源的实现提供架构基础[10-11]。

在结合区块链和物联网技术的过程中,区块链网络的共识效率和可扩展性是目前的重点研究方向[12]。然而,大规模的物联网系统中设备资源有限,现有相关研究提出的共识算法主要针对公共加密区块链,如PoW、PoS 和DPoS 都是通过消耗计算机算力,以挖矿的方式来实现共识,从而导致共识时间较长、计算机资源浪费等问题,并不适用于大规模的物联网区块链系统[13-14]。文献[15]为确保区块链车联网的区块正确提交以及选择可靠的参与者,提出一个两阶段软安全增强的解决方案,其目的是防止公共区块链中活跃参与者和备用参与者之间内部串通,产生虚假交易,但是该方案仅针对车联网,可扩展性较差。基于认证证明的共识算法通过信任值来实现区块链的区块验证,但是如果一个节点被破坏,就可能牺牲其信任值并验证恶意交易,从而将错误的区块提交到分类账本中[16-17]。Raft 共识算法可以在高效解决分布式系统中各个节点日志内容一致性问题的同时,使得集群具备一定的容错能力,但该算法不支持容错作恶节点(拜占庭节点)[18]。实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法共识机制最早是为了解决区块链网络中的拜占庭节点而被引入到联盟链中,其通过三段式全广播投票的方式,在恶意节点数不高于全节点数1/3 的情况下,该算法能够同时保证共识阶段的安全性和活性[19],但是,随着网络节点数量的增多,该算法存在通信开销大、扩展性差、效率低的问题[20]。文献[21]提出一种信用授权的拜占庭容错(Credit-Delegated Byzantine Fault Tolerance,CDBFT)方案,其引入了投票奖励惩罚和信用评价机制,然而,在区块链网络中,参与节点是经过认证和信任的,奖惩机制的重要性低于共识机制的可扩展性。文献[22]提出一种基于角色控制的拜占庭容错(Role management-based Practical Byzantine Fault Tolerance,RPBFT)算法,其将节点分为3 种类型,通过选举机制和奖励机制对节点的角色类型进行转换管理,提高了节点的可靠性和动态性,但该算法的三阶段全广播投票方式依然存在网络通信量较高的问题。文献[23]提出一种基于投票算法(VBFT)的拜占庭容错算法,该算法将网络中的节点划分为3 种具备不同职责的节点,分别是客户端、从节点和主节点,节点之间的状态可以随时动态调整,但是,该方案生成区块的时间较长,并不适用于大规模的物联网区块链。文献[24]基于信誉度选举的方式筛选节点,该方法通过改进PBFT算法,以减少通信开销,提高共识效率。

以上解决方案大多采用分片和并行共识的方式改进PBFT 算法,虽然在一定程度上提高了共识效率和可扩展性,但是仍采用PBFT 的三段式全广播投票方式来实现共识,导致算法存在带宽复杂度较高、共识吞吐量较大的问题。本文基于Hyperledger Fabric平台[25],提出一种轻量级区块链投票和交易证明(Proof of Vote and Transaction,PoVT)共识机制。在拥有拜占庭节点的情况下,通过验证交易的方式确认共识节点,即利用节点之间的交易来筛选参与共识的会话节点,以减少共识过程中的节点数量,提高可扩展性。在此基础上,利用一次全广播投票的方式在参与共识的节点中进行区块确认,从而将通信开销减少到较低水平,提高每秒交易量并降低带宽占用和带宽复杂度。

1 轻量级物联网区块链系统框架

本文以Hyperledger Fabric 架构为基础平台,设计一种轻量级区块链框架,如图1 所示,该框架可以结合物联网在工业生产、物流等多种场景下进行扩展。

图1 基于区块链的轻量级物联网系统框架Fig.1 Lightweight IoT system framework based on blockchain

Fabric通过会员服务提供者(Membership Service Provider,MSP)来实现访问控制、权限控制等操作,从而管理Fabric 中的众多参与者(Peer、Orderer)。MSP 中包含了参与者的公钥,联盟参与者会使用私钥对交易进行签名背书,MSP 通过验证签名的方式来确保交易背书者是联盟参与者。在Fabric中,所有的节点即对等节点(Peer),排序节点(Orderer)负责接收包含背书签名的交易,对未打包的交易进行排序从而生成区块,将其广播给Peer 节点,然后通过排序服务(共识机制)来进行区块的确认提交。通道(Channel)是Orderer 的一个模块,排序节点划分和管理的私有广播通道,目的是对通道的信息进行隔离,使得通道外的实体无法访问通道内的信息,从而提高交易的隐私性。

本文物联网区块链框架包括交易发起、验证确认、区块提交3个阶段。物联网设备(IoT1,IoT2,…,IoTN)是能够产生和接受区块链交易的设备,如产品线上的传感器、扫描枪、智能手机手表等穿戴设备,这些设备被连接到一个Peer 节点上,这些节点可充当对等节点或背书节点,节点处理相应设备的交易。在Fabric中存在许多相互链接的Peer 节点,这些节点(N1,N2,…,NN)也可以作为背书节点或主节点存储于网络中,MSP 负责为这些节点提供密钥、签名以及生成的准入证明和配置信息。

1.1 交易发起阶段

如图1 所示,物联网设备上的应用程序收集要交换的数据作为交易,使用软件开发工具对数据进行格式化,以便能够在链码上执行。交易包括交易数据、设备签名、目的节点的公共地址和相应的证书。在交易执行时,每台设备和Peer 进行节点连接,通过Channel 向区块链中的节点发送一个交易提交信息。交易的认证和授权被严格约束在规定的Channel上,不同Channel 之间相互隔离,因此,节点不能访问任何其他通道上执行的交易。新加入的节点通过MSP 注册和验证加入到网络中,这些节点可以查询或添加新的区块到账本中,该过程能够确保未经识别和认证的用户或设备不会加入网络。

1.2 验证确认阶段

所有传入的交易需要通过对设备、节点、权限的验证,这些验证根据链码中规定的条件来进行。链码是访问账本的基本方法,其需要经过节点的背书、排序、验证和提交环节进行安装和实例化。链码由管理员部署,只要有合适的权限,链码之间也可以相互调用。链码是区块链节点之间交易的规则,部署后不可更改,因此,区块链上的交易可以直接依赖于链码,但是可以通过升级来发布新的功能或修复问题。在Fabric 的设计中,链码运行在一个安全的隔离沙盒(Docker 容器)中,该容器由背书节点创建和管理,以便隔离背书节点和链码的运行环境。在现有Fabric中,链码决定由多少个相邻节点来验证一个交易,主要原则是利用一大批节点通过背书来建立共识。在本文系统中,根据一个会话中的交易提交情况,使用一定比例的节点作为背书节点,从而减少共识环节的通信开销。

交易确认和区块生成通过背书实现。Orderer节点根据各个节点交易的先后时序,经过共识来确定并生成新的区块,将其添加到分类帐本中。在区块确认时,如果恶意节点向Orderer 节点发送伪造交易将导致共识失败,无法生成新的区块。比特币、以太坊等数字货币系统在区块创建时执行的共识算法,都通过高难度的挖矿算法来确保恶意交易不会被添加到区块中。在物联网中,设备的运算能力有限,为实现较高的交易速率,需要选择合适的共识算法。

1.3 区块提交阶段

确认是交易处理的最后一个阶段。当一个区块通过共识PoVT 算法最终确定后,则该区块就准备好分发给网络中的所有节点,这些节点可以将确认的数据添加到它们的分类账本中。只有在PoVT 算法达到共识时进行区块确认,交易发起者才会被批准生成新块,然后将其连同Orderer 节点的签名分发给网络中的所有连接节点,最后更新全局动态。

2 基于物联网区块链的轻量级共识算法

本文使用网络中的部分节点作为背书节点,通过投票机制来进行区块确认,从而降低信息传递开销,提高安全性和系统交易率。为了提升共识的可扩展性,本文采用一种混合机制,将整个共识过程分为两部分,即交易验证和共识形成:

1)交易验证。在本文所提共识模型中,源节点从相连的物联网设备接收交易信息,根据链码规则进行交易提交和验证,并检查目标物联网设备是否也与网络相连,如果是,则执行交易提交过程,目标节点对链码进行验证(用于交叉检查交易),如果被批准,则将交易转发给Orderer 再执行共识。因此,交易验证只限于直接参与交易的节点,在不影响安全性的前提下,能够大幅减少信息交换所需时间以及节点间的通信开销。

2)共识形成。Orderer 节点在一个候选区块上执行共识,该区块包含了其在一定时间内收集到的若干个经过验证的交易。使用图2 所示的方式建立一个共识会话网络的成员列表。

图2 共识会话网络生成过程Fig.2 Consensus session network generation process

在共识会话网络生成过程中,Orderer 节点从网络收集交易,根据交易信息中的源节点和目标节点生成一组会话节点,这些节点将参与共识环节。在生成共识会话网络之后,通过PoVT 算法进行区块的共识和提交。PoVT 算法描述如算法1 所示。

算法1PoVT 算法

在算法1 中:N为共识中的节点数量;B′为本轮投票前一轮的区块;B为当前区块信息;h为当前的区块高度;T为收到的交易集合;V为待提交区块节点收到的投票集合。在共识过程中,首先主节点向其他节点发送当前产生的一个新的区块,其他节点等待这个新的区块,如果没有收到,则会发生propose_timeout,广播TIME_OUT 信息,如果除主节点以外的其他节点在设定的时间内收到新的交易区块,则节点广播VOTE 消息。在投票阶段,如果vote_timeout 和vote_failure发生,将执行VOTE_TIMEOUT 和VOTE_FAIL;若没有发生,且当前参与共识的所有节点在规定的时间内收到足够多的投票消息时,执行COMMIT 来提交区块,在这个过程中,如有节点最先收集到一定的投票数,则作为主节点进行下一轮共识。

区块生成过程如图3 所示,其中,节点4 为拜占庭节点,节点1 为当前投票回合的主节点,区块n将在投票给该区块时成为候选区块,并且最终会在投票给第n+1 个区块时进行提交。

图3 PoVT 共识过程Fig.3 PoVT consensus process

PBFT 形成一轮共识需要3 个阶段,领导者首先向其他节点广播消息,节点在第二阶段对收到的消息进行投票,节点根据最后阶段收到的投票发送预提交消息。在本文模型的共识过程中,只需2 个阶段就可以提交区块,领导者首先向其他节点广播消息,然后节点对领导者在第二阶段发送的消息进行投票,网络带宽复杂度分别为O(n2)和O(n)。相较于PBFT 中三阶段共识的复杂度(O(n2)、O(n2)和O(n)),本文共识机制具有更低的带宽复杂度。

3 对比分析

本节分析所提算法的安全性,并将其与现有PBFT和CDBFT 算法进行对比。仿真通过Hyperledger Fabric v1.4.0 平台运行。物联网设备交易的生成通过Node-Red 应用程序完成,该程序将生成的并发交易输送到运行在Docker 容器中的节点,Docker 容器包含Fabric 中GoLang 编写的链码,一个配备Core-i5(2.7 GHz 16 GB 内存)的系统作为承载Docker 的设备。考虑到每个区块的交易数量、对等体数量、并发交易的输入参数、阻断时间在每个实验中都有所不同,因此,本文将每个实验执行10次,并以平均值作为最终结果。

3.1 安全性分析

在物联网应用设计的区块链系统中,主要有两种类型的安全风险:一是外部风险,非成员设备或节点可能试图成为网络的一部分,或试图冒充现有的已存在于网络中的节点;二是内部风险,正确注册并拥有有效签名的设备和节点可能会因为恶意攻击而成为潜在安全风险点。攻击的目的是让无效的交易得到认可并提交到分类账本中,当设备发起交易,网络中的节点就会根据链码来验证源节点和目的节点的地址。对于外部攻击,设备将无法提供合法证书,因此验证将立即失败。对于内部攻击,只要链码存在,则已经确认的交易就会有效。在Hyperledger Fabric中,交易由一组节点认可后再一并提交到账本中。在本文所提解决方案中,交易被转发到负责共识的节点上,这些节点之间相互验证所有的凭证,并将交易转发给Orderer 节点,从而消除源节点向Orderer 节点发送非法交易的可能性。

在区块形成时,区块的安全提交意味着不会产生具有冲突的区块。冲突的区块包含两种类型,一种是重复提交和无效的交易事务,另一种是具有相同高度的区块。在一个具有3f+1 个节点的区块链网络中,最多存在f个拜占庭节点时,如果有两个不同类型但高度相同的区块B1和B2被提交,至少有2f+1 个节点提交了区块B1,另外至少有2f+1 个节点提交了区块B2,这意味着节点提供的投票至少有4f+2个。系统中最多允许f个节点可以同时进行两次投票,所以最多可以存在4f+1 个投票。因此,两个不同的区块不能在相同的高度提交。如果要提交冲突区块,至少需要存在2f+1 个恶意节点,而共识算法中最多允许存在f个拜占庭节点。因此,本文设计的共识算法在同样具有f个拜占庭节点时可以保证区块顺利生成。

3.2 运算时间分析

本节分析从交易验证到区块形成的运算时间,将所提PoVT 算法与Hyperledger Fabric 中使用的PBFT 算法以及文献[21]中的CDBFT 算法进行比较。系统中初始的节点总数固定为10,每个区块的交易数量在1~500 之间。

图4 所示为每个区块交易数量增加时算法所需时间的变化情况。通过图4 可以看出,当并发交易数为100时,PBFT 算法需要200 ms,CDBFT 算法需要120 ms,而PoVT 算法需要80 ms;对 于300笔交易,PBFT 算法背书时间为550 ms,CDBFT 算法需要320 ms,而PoVT 算法需要约210 ms。随着并发交易的增加,3 种算法的背书时间都会增加,但PoVT 算法的计算时间明显少于PBFT 和CDBFT 算法。

图4 不同交易数时3 种算法的计算时间变化情况Fig.4 Calculation time changes of three algorithms under different transaction numbers

图5 比较了在两种不同的变量条件下交易最终确定所需的时间,横坐标为每个区块的交易数量和相关的共识参与者数量。从图5 可以看出,当每个会话的共识节点数量为20、交易数量为100时,PBFT 算法的背书时间急剧增加(200 ms),CDBFT算法需要100 ms,而PoVT 算法只需80 ms。PBFT通过三段全广播投票方式进行共识,而CDBFT 方案投票奖励、惩罚和信用评价的过程所需运算时间较长,如果100%的节点参与共识过程,其所需的时间将明显增加。本文所提解决方案通过选取一定数量的节点来进行共识,可以有效减少通信开销。

图5 不同交易数和节点数时3 种算法的计算时间变化情况Fig.5 Calculation time changes of three algorithms under different number of transactions and nodes

3.3 带宽需求分析

由于共识必须在特定的区块提交时间内形成,为了达到理想的交易率,对所需带宽进行分析很有必要。本节通过改变每秒并发交易数量和参与节点数量来分析带宽需求情况。如图6 所示,带宽需求随着并发交易数量的增加而增加(间接地随物联网中节点数量的增加而增加),在一般的区块链中,带宽需求与交易数量的关系几乎是线性的,成正比增加,然而,在本文的PoVT 算法中,随着共识节点数量和共识环节通信量的减少,带宽需求相较CDBFT 和PBFT 共识算法分别降低了10%和30%。

图6 带宽需求随并发交易数量的变化情况Fig.6 The change of bandwidth demand with the number of concurrent transactions

4 结束语

吞吐量和安全性对于物联网区块链系统至关重要,在大规模物联网区块链系统中,区块生成主要基于每个区块有一半以上的参与者形成共识来实现,随着节点数量的增加,共识时间变得过长,从而导致吞吐量下降。针对该问题,本文提出一种PoVT 算法,根据参与直接交易的节点筛选共识会话组,以选择代理人节点的方式来减少共识节点数量。在拥有拜占庭节点的共识过程中,通过投票方式简化共识流程,从而节省通信开销。实验结果表明,该算法在具有较低带宽占用的情况下,可以保证交易验证及区块创建阶段区块的安全提交,同时提高物联网区块链系统的交易率和吞吐量。但是,区块链系统仍然存在数据存储性能有限的问题,下一步将引入分布式存储系统,缩短共识阶段的时间,从而提高物联网区块链的存储和共识效率以及共识算法的可扩展性。

猜你喜欢

背书共识区块
背书是写作的基本功
共识 共进 共情 共学:让“沟通之花”绽放
背书
区块链:一个改变未来的幽灵
论思想共识凝聚的文化向度
区块链:主要角色和衍生应用
商量出共识
区块链+媒体业的N种可能
读懂区块链
“慢养孩子”应成社会普遍共识