APP下载

面向物联网系统的改进PBFT共识机制

2024-03-21索梓翔

计算机工程与设计 2024年3期
关键词:共识区块数量

顾 鑫,戴 欢,2+,唐 毅,2,孙 立,索梓翔

(1.苏州科技大学 电子与信息工程学院,江苏 苏州 215009;2.苏州和数区块链应用研究院有限公司,江苏 苏州 215000)

0 引 言

物联网技术[1]仍有很多的问题亟待解决。例如,物联网设备的数据安全性等级较低,容易成为各种攻击的对象[2]。目前,Sybil attack攻击[3]是常见的物联网设备攻击。此外,传统的物联网系统通常采用中心服务器进行数据处理,这使得系统内物联网设备的连通性较弱,设备间通信的安全性较低[4]。此外,数据隐私也是物联网系统需要面对的一个难题[5]。

区块链本质上是一种分布式的数据库技术,利用密码学、点对点通信、共识算法等多项技术来解决现有中心化机制存在的数据垄断问题和数据安全问题,共同维护全网数据的有效性和安全性,已在车联网[6]、智慧医疗[7]等领域展开应用,在未来物联网系统的建设中具有更广阔的应用前景[8]。

针对基于区块链的物联网系统存在通信复杂度高、系统吞吐量低、物联网设备易受攻击等问题,本文提出一种基于可信位置和时间的双层拜占庭容错共识机制,即CBFT共识机制。通过将物联网系统构建在一个分布式、多层次的区块链共识机制模型上,提高物联网设备参与共识的效率,减少共识过程的通信次数,增加系统整体的数据吞吐量。

1 相关工作

1.1 PBFT算法原理

对于分布式系统中的拜占庭将军问题[9],工作量证明算法(proof-of-work,PoW)[10]需要具有高强度计算能力的工作节点,PBFT共识算法则相对简明有效,对节点的算力要求不高。PBFT共识过程如图1所示[11],其中,Client是客户端,Replica0是主节点,Replica1和Replica2是从节点,Replica3是无效节点。

图1 PBFT共识过程

PBFT共识算法分为以下几个部分:

(1)request阶段:主节点Replica0接收客户端Client发送的消息请求。

(2)pre-prepare阶段:从节点Replica1和Replica2接收并确认主节点Replica0发起对应的预准备消息,进入prepare阶段。

(3)prepare阶段:从节点Replica1和Replica2向所有节点发送准备消息,若节点Replica接收到并验证不同节点的预准备和准备消息数量超过2n+1个,则进入commit阶段。

(4)commit阶段:节点Replica向其它节点广播确认消息,其它节点接收并验证广播消息,若节点Replica接收的确认消息数量达到2n+1个,则进入reply阶段。

(5)reply阶段:共识集合中的节点Replica会将最终的反馈消息发送给客户端,若客户端接收到的n+1个相同的回复消息,则客户端的请求已经达成全网共识。

PBFT共识算法虽然相较于其它共识算法不需要消耗大量算力资源,且共识速度较快,但共识节点有限。当大量节点加入区块链系统时,PBFT共识算法在准备和确认阶段,需要所有节点全网广播信息,导致单位时间的通信传输量和通信次数大大增加,系统的数据吞吐量却反而降低。

1.2 PBFT算法改进

目前,针对PBFT共识算法的改进研究主要集中在提高参与共识的节点质量和共识结构的优化两个方面[12]。

提高共享节点质量方面,文献[13]提供了一种委托人信任模型(EigenTrust-Model),通过评价模型,减少恶意节点的共识参与度,从而提升共识的效率,增加系统整体的吞吐量。文献[14,15]通过搭建角色模型的方式,投票评价节点的可信度,筛选出可信节点进行共识,减少共识算法的冗余。文献[16]利用节点信任模型(PeerTrust-Model),提高参与共识的节点可信度,并搭建三链结构提升区块链的共识效率,减少PBFT的通信复杂度。文献[17]面向物联网场景,利用改进后的CSMA/CA协议代替原有的TCP协议,提升设备通信速度,降低设备的共识响应时间,从而保证共识的速度。文献[18]通过增加属性集的方式,利用评价机制动态赋予或删除节点属性,对诚实属性的集群进行共识,以降低系统的通信复杂度。

共识结构优化方面,文献[19]提出使用可拓展的双层PBFT共识协议,降低单层PBFT的通信次数。文献[20]提出使用多层PBFT共识机制降低单层与固定双层共识中的通信量,并得出通信复杂度达到最低时的每一层的节点个数与通信次数。文献[21]提出基于聚类算法的改进PBFT共识机制,利用聚类算法根据节点的特征进行聚类,并将改进后的共识模型用于聚类后的模型,以提高共识效率。文献[22]提出使用环签名技术,签名发起者自发组成环,环内用户根据每次签名的反馈消息情况进行调整,再次组成环,以减少视图切换的频率,降低共识耗时。

2 系统框架

本文所提的基于CBFT的物联网系统架构如图2所示,系统架构主要分为3层:感知层、共识层和应用层。每层的功能如下:

图2 区块链与物联网设备的系统架构

(1)感知层:该层由具有一定计算与存储能力的低功耗底层物联网设备组成,例如温湿度传感器、烟雾传感器、红外传感器等。该层设备称为轻节点(Light Node),具有向全节点和强节点即边缘服务器发送交易请求和交易信息,存储部分自身设备信息的功能。由轻节点组成的集合称为从集合。轻节点具有提出普通交易的权限,普通交易主要用于根据不同的底层设备应用要求,改变这条链上的总账本状态。比如,各种类型传感器等。

(2)共识层:该层由具有计算与存储边缘服务器组成。边缘服务器在该层中根据信用评价的等级划分为强节点(Junior Node)与全节点(Senior Node)。由强节点组成的集合称为子集合,由全节点组成的集合称为父集合。全节点是一定范围内性能最好的边缘服务器,参与父集合和子集合两个集合的共识过程。强节点是性能次于全节点的边缘服务器,只参与子集合的共识过程。全节点与强节点具有提出配置交易的权限,配置交易用于改变区块链的区块配置。比如,更新全节点或强节点的信用值以改变当前的集合结构。

(3)应用层:感知层与共识层都服务于一个物联网系统,该系统利用物联网设备收集各类感知数据,确保管理者能够及时监控设备信息。系统中记录了设备的数量、类型和地理位置信息。此外,管理后台的管理员账号具有对设备和其它用户的管理权限,能够查看设备当前的状态等,并为其它用户授予查询该设备信息的权限。系统中需要用到的符号及说明见表1。

表1 相关符号说明

3 CBFT共识机制

针对上述基于区块链的物联网系统可能存在恶意伪装设备攻击和高共识响应延迟,提出了一种基于位置和时间的可信双层PBFT共识机制。该共识机制周期分为3个阶段:初始阶段、共识阶段和激励阶段。

3.1 初始阶段

初始阶段包括预分配和遴选两个部分。

(1)预分配:为每个强节点分配密钥,分配初始信用币等。并根据GeoHash(geographical hash,GeoHash)协议将所有的强节点划分成k个子集合。GeoHash编码长度越长所表示的位置越精确,两个编码的相似度越高代表两个位置离得越近。最后,各个子集合中Token最多的节点被选为子集合中的全节点。由此,边缘计算层构成一个双层多中心化的网络结构。

(2)遴选:根据边缘服务器的工作特性,轻节点在规定时间内发送一定数量的位置信息和时间戳信息给距离近的强节点,形成以强节点为中心、四周分布着轻节点的从集合。从集合中的强节点根据轻节点发送的GeoHash和时间戳,生成位置定时器(locational clock,LC),位置定时器见表2,通过位置定时器对从集合中的轻节点进行遴选,挑选出诚信节点,参与共识过程。

表2 位置定时器

强节点遴选轻节点的过程如算法1所示,G(l,t1,t2,n) 是一个功能函数,负责将位置信息、时间戳和信息数量封装成帧。如果出现发送的信息数量少于信息阈值N,或者逻辑位置映射不同或者时间戳中出现相同的初始时间戳或者相同的当前时间戳的情况,那么这个轻节点将会被认定为不可信。

算法1:伪代码的算法1名称

输入:(L,G(l,t1,t2,n),N)

输出:l[status]

(1)while IsJuniorNode() do

(2) for eachl∈Ldo

(3)g←G(l,t1,t2,n)

(4) while Len(l)≥Ndo

(5) for eachg1,g2∈gdo

(6) ifg1[loc]≠g2[loc]org1[t1]=g2[t1]org1[t2]=g2[t2]or Len(t2-t1)≤24 h

(7) then

(8)l[status]←false

(9) break

(10) end if

(11)l[status]←true

(12) end for

(13)end while

经过初始阶段,轻节点通过遴选被分为k个子集合,每个集合中都具有一个强节点,强节点组成的每个子集合中都有一个信用值最高即Token最多的全节点,为共识做好了准备。

3.2 共识阶段

整个共识过程如图3所示。

图3 CBFT共识过程

S-prepare:子集合中的全节点在验证并接收子集合中数量超过2numi+1的准备消息后,向父集合的其它全节点发送准备消息,并接收其它全节点的准备消息,消息格式为 <i,B>。当所有全节点收到父集合内的准备消息数量超过2num+1时,进入S-commit阶段。

S-commit:父集合的全节点向其它的全节点发送确认消息,确认消息格式为<i>。当所有全节点收到确认消息的数量达到2num+1时,进入J-commit。

3.3 激励阶段

激励阶段分为Token奖励与信用重置。仅适用于强节点与全节点。

(1)Token奖励:Token值的大小代表了节点信用的高低,是表示节点可靠性的一种方式,这里使用R代表节点的Token值。在一轮共识完成后,系统根据激励模型对节点的行为奖励一定数量的Token。子集合中每个强节点的R值具体计算如下

(1)

(2)

Δt为第i个子集合中第m个强节点的共识时间,ΔT为第i个子集合所有强节点的共识时间

(3)

k为子集合中强节点的数量

(4)

当强节点在第二轮共识,出现发送交易速度过慢或者离线的情况时,R值会随着共识时间的增加而减少。当r1和r2不发生变化时,当前共识下R值越高,强节点所得到的Token奖励越多。

(2)信用重置:对R值过低或者过高的节点进行信用恢复。

按照节点的R值赋予节点等级,如表3,x,y,z为变更等级的阈值,具体取值根据系统对边缘服务器效率的要求设置。

表3 节点信用级别

当节点的R值低于x时,节点仍可以继续发送交易,但从下一周期开始,该节点的R值将被重置为c。子集合内连续两次担任全节点或者R值高于z的节点,其R值被重置为x并标识。标识后的节点在下面两个周期中不能参与父集合的共识过程。在两个周期后,标记节点的信用值重置为c,重新参与共识过程。重置信用能够激励信用低的节点规范共识行为以获得更多的Token奖励,并防止高信用节点出现中心化的问题。

第一个周期结束时,每个子集合中R值最高的强节点担任全节点。从第二个周期开始,由全节点负责代表子集合在父集合内进行共识。

4 实验分析

本文以共识耗时和系统吞吐量作为指标,分析CBFT共识机制与传统PBFT共识算法的性能。共识耗时是衡量改进后的共识算法和区块链性能的重要指标。吞吐量是系统处理事务能力的重要指标。

实验使用的Fabric版本为Fabric0.6,运行环境为Intel i7-10875H CPU 2.30 GHz和16 GB内存,操作系统为Ubantu server20.04,软件版本为Docker version 20.10.6,build 370c289。

4.1 共识耗时分析

本文中计算共识耗时是轻节点从发送交易到交易被打包成区块并上链发送到云服务器所消耗的时长。

共识响应时延是共识耗时的重要部分,从强节点发出共识请求到最后一个共识节点响应请求为完整的共识响应过程。共识响应时延的最大和最小值分别表示共识节点中最快和最慢的共识响应时间。如图4所示,PBFT共识算法面对强节点数量少的共识网络时,共识响应时间并不会发生明显变化。但随着强节点数量的不断增加,共识响应时间会产生明显变化。当强节点数量不断增加时,节点间的通信次数成倍增加,使得共识响应时延显著增加。而CBFT共识算法面对强节点数量少的共识网络时,平均共识响应时间与PBFT相近。当强节点数量的不断增加时,CBFT通过集合内与集合间共识的方式,减少强节点间的通信次数,使得共识响应时延显著降低。

图4 PBFT共识响应时延最大和最小值

如图5所示,CBFT在面对数量较多的强节点时,利用双层共识的特点,提升全节点的比例,提高全节点的共识参与度,增加子集合间的通信次数,降低强节点的共识次数,提升共识响应速度。

图5 CBFT共识响应时延

如图6所示,PBFT算法的共识耗时随着轻节点数量的不断增加而成倍增加。当参与共识的轻节点数量控制在文献[4,16]时,PBFT共识算法能够保证共识效率,一旦超过阈值,其共识效率将得不到基本保证。而CBFT算法的共识耗时随着轻节点数量的增加却保持相对稳定。当强节点数量不变时,强节点依据位置定时器遴选出诚实的轻节点,共识过程只在交易所在的子集合和父集合进行,系统的共识耗时不会受到轻节点数量的影响。

图6 PBFT和CBFT共识耗时对比

4.2 系统吞吐量分析

实验选取100个轻节点和16个强节点,其中轻节点分为20个恶意节点或故障节点,80个正常节点。强节点均为诚实节点。

如图7所示,当节点中出现故障节点和恶意节点时,PBFT相较于CBFT算法不能有效识别故障节点和恶意节点,无法保证轻节点发送的交易质量,降低系统安全性的同时,系统吞吐量下降。

如图8所示,PBFT算法的吞吐量易受节点数量的影响。节点数量增加时,节点交易质量无法得到保证,系统产生算力冗余,吞吐量显著下降。而当强节点和全节点数量稳定不变时,CBFT算法的吞吐量在不受节点质量影响的同时,随着轻节点数量的增加而保持相对稳定。

图8 PBFT和CBFT系统吞吐量对比

5 结束语

本文旨在针对基于传统PBFT共识算法的物联网系统存在共识耗时高、通信开销大的问题,提出了CBFT共识机制。利用缘服务器的特性,将距离近的物联网设备组成从集合,依据接收到的信息对从集合中的设备进行遴选,降低故障节点或恶意节点加入共识的可能性,减少底层的通信次数与通信开销,进一步增加可信设备的共识参与度,提高参与共识的交易质量。同时,通过改进的双层共识结构,降低边缘服务器之间的通信次数,降低共识的耗时。最后,通过代币奖励和信用重置的激励机制,提高系统处理大批量数据的能力,提升系统的数据吞吐量。

猜你喜欢

共识区块数量
共识 共进 共情 共学:让“沟通之花”绽放
区块链:一个改变未来的幽灵
论思想共识凝聚的文化向度
区块链:主要角色和衍生应用
商量出共识
统一数量再比较
区块链+媒体业的N种可能
读懂区块链
头发的数量
我国博物馆数量达4510家