一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于协同过滤推荐的区块链拜占庭容错共识方法

2022-09-07 20:33:36 来源:中国专利 TAG:


1.本发明属于区块链技术领域,特别涉及一种基于协同过滤推荐的区块链拜占庭容错共识方法。


背景技术:

2.于点对点网络(peer-to-peer,p2p)和密码学的分布式账本,由一串使用密码学方法产生的数据区块组成,每一个区块都包含上一个区块的哈希值,从创始区块连接到当前区块,形成链式结构。随着研究的深入,区块链技术可以在没有可信第三方的情况下,为分布式环境中多个实体之间建立信任关系提供支撑。因此,区块链不仅推动了加密货币的发展,还在物联网、供应链等场景中发挥着越来越重要的作用。根据开放程度的不同,区块链可以分为公有链、联盟链和私有链。其中,公有链的去中心化程度最高,不受任何机构控制,所有人都可以对区块链数据进行维护和读取,当前主流的公有链项目有eos等。私有链的开放程度最低,仅限于企业、国家机关或者其他单独个体使用。联盟链的开放程度介于公有链和私有链之间,它由预先确定的节点参与记录维护,而其他节点想要访问联盟链,则必须经过授权才可以。
3.共识协议是区块链的核心基石,它解决了区块链网络中所有参与方如何就新区块达成共识的问题。根据主节点选举策略的不同,共识协议可以分为证明类和选举类两种。其中证明类共识协议的主节点需要通过某种方式证明自己具有提出新区块的资格。例如,公有链项目中的工作量证明(pow)协议需要全网节点竞争计算一个符合特定规则的哈希值,最先找到目标值的节点会立即将该值记录到新区块中,并广播到整个网络,然后其他节点在收到区块后,会验证该哈希值的正确性,如果验证通过,则该区块就会被附加到链上。除此以外,证明类共识协议还包括股权证明(proof of stake,pos)、权重证明(proof of weight,poweight) 和容量证明(proof of space,pospace)等。作为一类被公有链广泛采用的共识协议,证明类共识协议的可用性已在实践中得到验证。但是,此类协议还普遍存在效率低和缺乏公平性等问题。选举类共识协议的主节点则是通过投票选举产生的,例如raft、multi-paxos和实用拜占庭容错(pbft)等。这类共识协议具有较高的吞吐量和较低的共识延迟。但是raft和 multi-paxos只能容忍系统中存在故障节点,不能容忍作恶节点,因此,在复杂网络环境下, raft与multi-paxos无法保证系统的安全性。pbft作为第一个用于异步网络环境中的拜占庭容错共识算法,适合于对安全性和一致性要求更强的区块链场景,例如fisco bcos和 hyperledger fabric的早期版本都采用pbft进行共识。但是随着应用环境和需求的不断变化,pbft的局限性也逐渐显露出来。首先,pbft的通信复杂度会随着节点数量的增加而升高,因此无法适用于对效率具有较高要求的大规模区块链系统;其次,pbft的安全性建立在恶意节点数量不超过节点总数三分之一的基础上,所以,恶意节点的存在会对系统的安全性造成威胁,然而,pbft缺乏相应的机制去发现并排除系统中的恶意节点;最后,pbft中的主节点一旦崩溃或者作恶,就会触发通信复杂度为的视图更换协议,造成较大的计算和通信开销,但是pbft又缺少有效的手段来保证选出的主节点具有较高的
可靠性。


技术实现要素:

4.为此,本发明提供一种基于协同过滤推荐的区块链拜占庭容错共识方法,通过引入协同过滤机制,利用节点之间相互推荐来计算全局信任值,并通过节点之间推荐意见相似度对推荐进行加权来弱化恶意节点的攻击行为对系统的影响,选取较高信任值的节点组成共识组来执行pbft共识,提升系统安全可靠性,满足大规模网络环境下对共识效率的要求。
5.按照本发明所提供的设计方案,提供一种基于协同过滤推荐的区块链拜占庭容错共识方法,包含如下内容:
6.依据所有节点和空区块来选取当前阶段的主节点,利用主节点收集网络中的交易信息,将交易信息打包并广播到全网,其他节点通过执行拜占庭共识机制来生成区块链新区块,并将区块链的新区块作为创世区块;
7.针对未更新全局信任值的情形,依据所有节点和当前存储的新区块选取出新的主节点,并通过执行拜占庭共识机制来生成区块链新区块,其中,通过节点之间的相互推荐来计算节点的全局信任值;
8.针对满足预设的全局信任值更新条件时,暂停共识流程,同时生成节点之间本地局部推荐意见,并将推荐意见广播到全网;依据局部推荐意见及节点之间推荐意见的相似度来选取共识组中节点,其中,局部推荐意见为节点对所有节点的推荐度。
9.作为本发明基于协同过滤推荐的区块链拜占庭容错共识方法,进一步地,引入随机因子并利用选举规则来选举主节点,其中,随机因子包含:动态可调整参数x、y和z,随机规则包含:对节点按全局信任值从大到小排序,选举排名在前y%的节点标记为共识节点,该标记的共识节点通过执行拜占庭共识机制来生成新区块;将排名在前x%的节点标记为候选主节点,将排名在后z%的节点标记为不参与共识过程的节点,其中,x<y,y z=m,m为预设整数值。
10.作为本发明基于协同过滤推荐的区块链拜占庭容错共识方法,进一步地,选取主节点过程中,每当在区块链上追加新区块后,所有节点利用统一的哈希函数计算新区块的哈希值及所有候选主节点的地址哈希值;将新区块的哈希值及候选主节点的地址哈希值进行比较,选取地址哈希值与新区块哈希值差值最小的候选主节点作为主节点。
11.作为本发明基于协同过滤推荐的区块链拜占庭容错共识方法,进一步地,选取共识组中节点时,通过设置共识延迟阈值来衡量当前网络环境状态,并依据衡量结果进行共识组重构,其中,衡量过程如下:生成新区块后,比较本次共识延迟与预设共识延迟阈值,若本地共识延迟大于该阈值,则认定当前共识节点中存有异常,进而进行共识组重构。
12.作为本发明基于协同过滤推荐的区块链拜占庭容错共识方法,进一步地,通过执行拜占庭共识机制来更新区块链中,首先,由本轮选取的主节点对网络中交易进行合法性验证,将合法交易打包并广播给其他副本节点;然后,通过副本节点验证消息正确性及消息到达时间是否超时来更新节点之间消息质量参数,副本节点根据接收消息质量生成commit消息,并通过签名后广播给其他节点;最后,副本节点接收到的其他节点commit消息,通过合法性验证,将本轮共识过程产生的新区块添加到区块链上,并更新区块链参数。
13.作为本发明基于协同过滤推荐的区块链拜占庭容错共识方法,进一步地,通过设置触发机制来更新区块链,其中,触发机制内容包含:通过设定区块门限,当新增区块数达到区块门限后,对所有节点的全局信任值进行更新。
14.作为本发明基于协同过滤推荐的区块链拜占庭容错共识方法,进一步地,局部推荐意见计算中,对于节点i的局部推荐意见计算公式表示为:其中,节点i 对节点j的局部评价e
ij
=arccot(α
×fij
β
×
f'
ij
b
j-g
ij
)/π,f
ij
、f'
ij
和g
ij
分别表示节点i加入网络后、从节点j处收到的质量差、较差和好的消息数量参数,n表示网络中节点个数,α、β为惩罚因子,bj表示节点j加入网络后、总共累计新增的区块个数。
15.作为本发明基于协同过滤推荐的区块链拜占庭容错共识方法,进一步地,推荐意见相似度计算中,当节点收到其他n-1个节点的局部推荐意见时,依据全网节点的局部推荐意见来生成全局推荐矩阵,并计算节点之间推荐意见相似度,通过矩阵迭代来获取全局信任向量。
16.作为本发明基于协同过滤推荐的区块链拜占庭容错共识方法,进一步地,依据相似度计算公式获取对于任意两个节点i和j的推荐意见相似度,并利用斯皮尔曼相关系数来度量节点推荐意见的相似度,相似度计算公式具体表示为:
17.其中,ρ(,)表示斯皮尔曼相关系数,表示变量x的秩,表示的均值。
18.作为本发明基于协同过滤推荐的区块链拜占庭容错共识方法,进一步地,通过矩阵迭代来计算全局信任向量的过程表示为:其中,r
ij
表示节点之间的全局推荐矩阵,s
ij
表示节点之间的推荐意见相似度,k表示迭代轮次。
19.本发明的有益效果:
20.本发明通过节点之间相互推荐来计算节点全局信任值,对节点的推荐意见进行相似度度量,来优化节点全局信任值的计算过程,进而抵消恶意节点的影响作用;之后,选取具有较高信任值的节点参与共识过程,一方面排除了恶意节点对系统的干扰,保持系统的安全性和可用性,另一方面将通信复杂度与节点规模进行解耦,有效减少共识节点数量,可满足大规模网络环境下对共识效率的要求。并进一步通过实验结果表明,本案方案中crbft可以有效地识别恶意节点,并将其从共识节点中移除,另外在节点规模和拜占庭节点数量增加的情况下,crbft可以实现比pbft更低的共识延迟和更高的吞吐量,并且其通信开销相比于pbft 也更小。因此,在网络规模庞大环境复杂的场景下,本案方案可在保证区块链系统安全性的同时,能够有效提高系统效率和可扩展性,对区块链技术的落地应用具有积极推动作用。
附图说明:
21.图1为实施例中基于协同过滤推荐的区块链拜占庭容错共识流程示意;
22.图2为实施例中crbft框架示意;
23.图3为实施例中pbft执行流程示意;
24.图4为实施例中协同过滤方案流程示意;
25.图5为实施例中节点全局信任值在不同配置下随时间的变化曲线示意;
26.图6为实施例中拜占庭节点数量随时间的变化示意;
27.图7为实施例中共识延迟测试流程示意;
28.图8为实施例中共识延迟变化情况示意;
29.图9为实施例中吞吐量变化情况示意。
具体实施方式:
30.为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
31.区块链正逐渐成为信息领域中一项潜在的革命性技术,为许多分布式场景下的难题提供了解决方案,但是随着区块链网络规模的不断扩展,共识协议越来越难以满足区块链系统对效率的要求。现有的研究方案在提升共识效率的同时,无法有效识别和排除恶意节点,而恶意节点的存在会对系统的安全性造成影响。为此,本发明实施例,提供一种基于协同过滤推荐的区块链拜占庭容错共识方法,包含如下内容:
32.依据所有节点和空区块来选取当前阶段的主节点,利用主节点收集网络中的交易信息,将交易信息打包并广播到全网,其他节点通过执行拜占庭共识机制来生成区块链新区块,并将区块链的新区块作为创世区块;
33.针对未更新全局信任值的情形,依据所有节点和当前存储的新区块选取出新的主节点,并通过执行拜占庭共识机制来生成区块链新区块,其中,通过节点之间的相互推荐来计算节点的全局信任值;
34.针对满足预设的全局信任值更新条件时,暂停共识流程,同时生成节点之间本地局部推荐意见,并将推荐意见广播到全网;依据局部推荐意见及节点之间推荐意见的相似度来选取共识组中节点,其中,局部推荐意见为节点对所有节点的推荐度。
35.通过引入协同过滤方法的基本机制来构建基于协同过滤推荐的拜占庭容错共识协议—— crbft。该协议在pbft的基础之上利用全局信任模型,通过节点之间相互推荐来计算节点全局信任值,同时,为了避免恶意节点的攻击行为对信任值计算结果造成影响,利用协同过滤方法,对节点的推荐意见进行相似度度量,来优化节点全局信任值的计算过程,进而抵消恶意节点的影响作用;之后,选取具有较高信任值的节点参与共识过程,这样做一方面可以排除恶意节点的干扰,保持系统的安全性和可用性,另一方面可有效减少共识节点数量,将共识过程的通信复杂度与节点规模进行解耦,以满足大规模网络环境下对共识效率的要求。
36.参见图1所示,crbft的共识过程具体可划分为如下五个步骤:
37.init:对于初次启动的系统,以所有节点和一个空区块为输入,选出当前阶段的主节点,主节点收集网络中的交易信息,打包成新区块并广播到全网,其他节点执行pbft为区
块链追加新的区块,新追加的区块被称为创始区块,然后进入pre-consensus阶段。
38.pre-consensus:如果系统还未更新过节点的全局信任值,则以所有节点和当前系统中存储的最新区块作为输入,选出新的主节点,然后继续共识生成新区块。每当系统中新增的区块达到一定数量,或者共识延迟明显增加、网络环境变差,需要更新节点的全局信任值时,则进入update-trust阶段。
39.update-trust:共识节点暂停共识流程,同时生成本地的局部推荐意见,并将其广播到全网,然后迭代计算全局信任值,计算完毕后,等待一定的超时时间来同步系统状态。如果当前网络环境良好,则进入after-consensus阶段,否则进入construct-consensus阶段。
40.construct-consensus:以所有节点和全局信任值向量为输入,重新选取共识节点和候选主节点,然后进入after-consensus阶段。
41.after-consensus:如果系统更新过节点的全局信任值,则以候选主节点和当前系统中存储的最新区块作为输入,选出新的主节点后,继续执行pbft生成新区块。每当系统中新增的区块达到一定数量,或者网络环境变差,需要更新节点的全局信任值时,则进入update-trust。
42.值得注意的是,只有当网络环境变差时,可进入右边围成的共识流程来重构共识组,而当网络环境良好时,则进入左边围成的共识流程。
43.区块链网络是一种非结构化网络,使用gossip通信协议
33.来传播交易和区块数据。作为一种最终一致性协议,gossip理论上可以保证每个节点发送的消息最终都能被所有节点接收,因此,可根据节点相互交换的信息质量好坏来衡量节点间的信任关系,表1给出了评判消息质量好坏的具体标准。
44.表1评判消息质量的标准规则
[0045][0046]
图2展示了系统的整体框架,其中,monitoring unit会收集并记录网络中节点发送的消息,然后根据表1中的规则来评判消息质量的好坏从而更新信任计算模块的状态。可将monitoringunit(监测单元)内嵌到每个节点上,这样做一方面可以避免将monitoring unit放在单一节点上出现单节点故障,导致monitoring unit失效问题的发生,另一方面可以让节点通过 monitoring unit观测其他节点的行为表现,为节点生成推荐意见提供依
据。系统框架里的信任计算模块则负责计算所有节点的全局信任值,然后挑选出部分具有较高信任值的节点组成共识组,执行pbft从而生成新的区块。
[0047]
pbft是首个能在异步网络环境中高效地解决拜占庭将军问题
[28]
的共识协议。众所周知, pbft的安全性只有在满足n≥3f 1的条件下才能得到保证,其中n和f分别表示系统中的节点总数和异常节点的数量。执行pbft的节点可被分为1个主节点和(n-1)个副本节点,主节点和副本节点需要经历五个阶段才能对客户端的请求达成共识,具体的共识流程如图3所示:
[0048]
1)request:客户端构建请求:<request,o,t,c>,其中o表示请求的具体操作,t表示时间戳,c表示客户端标识,request内包含请求的消息m以及消息摘要d(m)。之后,客户端对请求进行签名并发送给主节点。
[0049]
2)pre-prepare:主节点收到客户端的请求后,先验证客户端的签名是否正确,不正确则丢弃,正确的话则为客户端的请求分配一个序号s。然后主节点构建pre-prepare消息:<<pre-prepare,v,s,d>,m>,其中v表示视图编号。在对pre-prepare消息进行签名后,主节点将其发送给其他副本节点。
[0050]
3)prepare:副本节点收到主节点的pre-prepare消息后,首先会验证主节点的签名是否正确,然后检查是否受到过v和s相同但签名不同的pre-prepare消息,接着判断d与m的摘要是否一致,最后验证s的取值是否合法。验证通过后,副本节点构造prepare消息:<prepare,v,s,d,i>,其中i表示副本节点的编号。在对prepare消息进行签名后,副本节点将其广播到网络中。
[0051]
4)commit:主节点和副本节点收到prepare消息后,首先验证消息的签名是否正确,接着判断s的取值是否在合适区间内,最后检查prepare消息中d是否与已经收到的pre-prepare中的d相同。以上验证都通过后,则将该prepare消息记录到本地。一旦节点收到了2f 1条合法的prepare消息,则会构建commit消息:<commit,v,s,d,i>,然后对其签名并广播给其他节点。
[0052]
5)reply:主节点和副本节点收到commit消息后,会重复在commit阶段进行的检查。如果节点收到2f 1条合法的commit消息,则运行客户端的请求操作o,并构造reply消息:<reply,v,t,c,i,r>,其中r表示请求操作的结果。然后对reply消息进行签名并发送给客户端。当客户端收到f 1条reply消息,则说明客户端发起的请求已经达成全网共识。
[0053]
协同过滤是推荐系统最常采用的方法之一,其核心思想是通过计算用户之间的相似度和物品之间的相似度,对用户和物品进行分类,从而提高推荐的准确率。协同过滤可分为基于用户的协同过滤和基于物品的协同过滤,如图4所示,在基于用户的协同过滤中,如果用户 1与用户2喜欢同一类物品,则用户2也可能对用户1喜欢的其他物品感兴趣;反之,如果用户2与用户3喜欢的不是同一类物品,则用户2很可能不会对用户3喜欢的其他物品感兴趣,基于用户的协同过滤所基于的假设是,对同一类物品感兴趣的用户具有相似性。在基于物品的协同过滤中,如果存在一个物品与用户1感兴趣的一类物品非常相似,则用户1很可能也对该物品感兴趣,基于物品的协同过滤所基于的假设是,被同一用户感兴趣的物品具有相似性。本案实施例中,利用协同过滤的基本机制来优化节点信任值的计算,首先根据节点推荐意见来计算节点之间的相似度,然后利用自己和推荐者的相似度作为是否采纳其推荐意见的依据。所基于的假设是:正常节点会严格依据客观事实来推荐其他节点,而恶意
节点可能会为了破坏系统的安全性,给出虚假的推荐意见,所以正常节点之间的推荐意见会有较大的相似性,而与恶意节点的相似度则比较低。并进一步,可利用斯皮尔曼相关系数对节点推荐意见相似度进行度量。
[0054]
charles spearman提出的斯皮尔曼相关系数是一种常用的非参数相关测度,用ρ表示。假设两个变量的n个度量值记为x(即x1,...,xn)和y(即y1,...,yn),此时,和分别表示xi和yi的秩,其中秩是从1到n的整数,表示相对大小,则x与y的斯皮尔曼相关系数的计算方法如公式(1)所示。
[0055][0056]
式中,和分别表示和的均值。斯皮尔曼等级相关系数的适用范围很广,不论两个变量的总体分布形态和样本容量的大小如何,都可以用斯皮尔曼相关系数来进行研究。因此,本案实施例中,可使用斯皮尔曼相关系数来计算节点推荐意见的相似度。
[0057]
本案实施例中的协同过滤推荐是一种全局信任模型,任意节点i的全局信任值是综合了网络中所有节点对i的评价得来的,因此恶意节点不能仅通过若干个相识的同伙相互夸大而获得较高的信任值。但是与一般的全局信任模型不同的是,协同过滤推荐不仅将推荐者的全局信任值作为其推荐意见的权重,还将节点与推荐者之间的相似度作为是否采纳其推荐意见的依据。具体来说,如果节点与推荐者之间的相似度高,则给予推荐者的推荐意见较高的权重,否则给予较低的权重。这样做的目的是为了抵抗一般全局信任模型所不能抵抗的一类恶意节点的攻击:在分布式网络中,可能存在一类被称为恶意间谍的节点,这类节点会故意表现良好,以获取正常节点的信任,但是它们会夸大其他普通的恶意节点,使得节点全局信任值的计算结果偏离正确值。因此,能否够抵抗此类节点的攻击是衡量协同过滤推荐方案是否安全有效的一个重要指标。
[0058]
局部评价可从单个节点的角度对系统中其他节点做出的评价,它的取值范围是(0,1)。对于任意两个节点i和j,i对j的局部评价计算方法可如公式(2)所示:
[0059]eij
=arccot(α
×fij
β
×
f'
ij
b
j-g
ij
)/π
ꢀꢀ
(2)
[0060]
其中f
ij
、f
ij
'和g
ij
分别表示节点i加入网络后,从节点j处收到的质量差、较差和好的消息数量(参考表1),α与β是惩罚因子,可以根据实际情况来设定,bj则表示节点j加入网络后,系统累计新增的区块个数,添加此参数的目的是为了激励节点积极参加系统中的活动,例如,当有节点一直不与系统中的其他节点交流,那么该节点的局部评分会随着系统中确认的区块数增加而下降。
[0061]
局部推荐意见表示某个节点对系统中所有节点的推荐度。对于任意节点i,其局部推荐意见的计算方法可如公式(3)所示:
[0062][0063]
推荐意见相似度反映了两个节点之间局部推荐意见的相似程度。本案实施例中的方案中,可采用斯皮尔曼相关系数来计算相似度,对于任意两个节点i和j,推荐意见相似度
计算方法如公式(4)所示:
[0064][0065]
全局推荐矩阵r∈in×n是综合全网节点的局部推荐意见得来的,其中第i行表示节点i的局部推荐意见ri。全局信任向量t=[t1,t2,...,tn],其中ti表示节点i在网络中唯一的全局信任值。
[0066]
与pbft共识过程不同的是,本案方案中crbft的节点在执行共识协议时,不仅会更新本地区块链的存储状态,还会更新对其他节点的局部评价,详细过程可描述如下:
[0067]
step1:系统从所有节点中选取本轮共识的主节点i,然后由i对网络中的交易进行合法性验证,并将合法交易打包进新区块中,其中h表示区块高度,然后生成pre-preparei消息,签名后将该消息广播给其他副本节点。
[0068]
step2:副本节点j在收到pre-preparei消息后,会验证该消息的正确性,如果该消息到达时间超时,则j会更新f'
ij
=f'
ij
1;如果该消息不正确,例如签名错误或者交易数据不合法,则让f
ij
加1;如果消息合法,j会更新g
ij
=g
ij
1,然后进入prepare阶段并生成preparej消息,签名后再广播给其他节点。
[0069]
step3:副本节点k收集网络中其他节点j的preparej消息,然后对preparej进行合法性验证,之后更新f
kj
、fk'j和g
kj
三个参数。如果k收到足够多正确的prepare消息,则会进入commit阶段,并生成commit消息,然后签名后广播给其他节点。
[0070]
step4:副本节点k收到来自其他节点的commit消息后,会进行与step3一样的检查,并且如果收到足够多正确的commit消息后,会将本轮共识过程产生的新区块添加到链上,并更新参数bi=bi 1(i=1,...,n)。
[0071]
经历过一轮共识后,根据公式(2),网络中所有节点的局部评价都会被更新,因此,随着系统的持续运行,任意两个节点之间的评价都在不断变化,这也意味着每个节点的全局信任值在不同时刻都是不一样的,但是频繁更新节点的全局信任值会增加网络中不必要的通信和计算开销,因此,可利用触发机制trusttrigger:设定门限值n,每当系统中新增n个区块后,就对所有节点的全局信任值做一次更新计算,更新节点全局信任值的过程如算法1所示。
[0072][0073][0074]
当trusttrigger被触发时,所有节点会暂停共识过程,可按照以下三步来更新同步节点的全局信任值:
[0075]
1)每个节点根据历史交互信息重新计算对其他节点的局部评价,然后生成局部推荐意见,并将推荐意见广播给其他节点。
[0076]
2)当有节点收到其他n-1个节点的局部推荐意见时,会在本地生成全局推荐矩阵,然后计算节点之间推荐意见的相似度,最后,通过矩阵迭代计算得到全局信任向量。
[0077]
3)在得到新的全局信任值后,节点会进入超时等待状态,等待系统中的其他节点完成更新全局信任值的过程。
[0078]
在pbft共识协议里,所有节点都必须参与共识过程,才能完成对新区块的确认,所以,显而易见的是,随着节点数量的增加,pbft的效率会急剧下降,并且pbft没有有效的机制去识别系统中的恶意节点,因此,潜在的恶意节点始终威胁着系统的安全性。进一步地,针对上述问题,本案实施例中,在获得节点全局信任值的基础上,从具有较高信任值的节点
中选取部分节点组成共识组,以此来排除恶意节点对系统安全性的威胁,并通过减少共识节点数量降低网络通信开销。另外,pbft中的选主规则具有规律可循,容易被攻击者预测到未来的主节点身份,从而发动针对性的攻击,例如dos攻击等,针对此问题,可通过在选举主节点的过程中引入随机因子,增加主节点身份的不可预测性。
[0079]
4)表2选举规则
[0080][0081][0082]
根据表2给出的选举规则,对系统中的节点按照全局信任值从大到小进行排序,首先将排在前y%的节点被标识为共识节点,它们可以执行pbft生成新的区块,同时将排在前x%的节点标记为候选主节点,只有此类节点有资格成为主节点,以提高主节点的可靠性,最后,排在后z%的节点,它们无法参与共识过程,但是可以记录系统中新生成的区块。表中x、y和 z是三个动态可调整参数,并且满足以下两个关系式:(1)x<y;(2)y z=100。算法2描述了选取共识节点的详细过程。
[0083]
[0084]
不同于pbft中的主节点可以连续出块,crbft每生成一个新区块后,就会重新选举主节点。可利用哈希函数具有随机性这一特点,实现主节点的随机选举功能,具体步骤如算法 3所示。每当在区块链上追加一个新区块后,所有节点利用统一的哈希函数h:{0,1}
*
计算新区块的哈希值h
block
=h(block
new
),然后再计算所有候选主节点的地址哈希值h
addr
=h(addr),接着利用h
block
和候选主节点的地址哈希值h
addr
进行比较,选取地址哈希值与h
block
的差值最小的节点作
[0085]
为主节点。
[0086][0087]
为了避免频繁重构共识组,带来不必要的计算开销,可设置一个共识延迟阈值threshold
t
,用它来衡量当前网络环境状态,具体做法是:每当系统提交一个新区块,会比较本次共识延迟与阈值threshold
t
的大小,如果本次共识延迟大于threshold
t
,则说明当前网络环境比较恶劣,共识节点中可能有恶意节点在阻碍共识过程,因此,可以开始重构共识组。
[0088]
为验证本案方案有效性,下面结合理论知识和实验数据做进一步解释说明:
[0089]
一、可行性证明
[0090]
在协同过滤推荐方案中,计算全局信任值的迭代过程能否收敛,决定了crbft方案的可行性。下面将对本案所提crbft方案的可行性进行证明。
[0091]
定理1.斯皮尔曼相关系数的取值范围是[-1,1]。
[0092]
证明:由于和分别代表xi和yi的秩,取值范围为{1,...,n},因此公式(1)可做如下转换:
[0093][0094]
公式中的di表示与的差值,当x与y完全负相关时,对于任意i∈{1,...,n},都有则并且由于是yi在y中的秩,因此,并取得最大值,此时取得最小值,所以ρ的最小值为-1得证;当x与y完全正相关时,都有所以此时并取得最小值,因此ρ=1-0=1,取得最大值,所以ρ的最大值为1得证。综上所述,斯皮尔曼相关系数的取值范围是[-1,1]。
[0095]
引理1.对于任意两个节点i和j,它们的推荐已将相似度的取值范围是[0,1]。
[0096]
证明:根据推荐意见的定义公式(4)可知,s
ij
=(ρ 1)/2,其中ρ为斯皮尔曼相关系数,由定理1可知,斯皮尔曼相关系数ρ的取值范围是[-1,1],所以,s
ij
的取值范围为[0,1]。
[0097]
引理2.对于任意初始向量t,全局信任值的迭代计算过程收敛。
[0098]
证明:算法1迭代收敛的充分条件是矩阵的无穷范数小于1,即由引理 1可知,对于任意i,j∈{1,...,n},都有0≤s
ij
≤1,因此,由全局推荐矩阵的定义可知,对于任意的i∈{1,...,n},进而可以推得所以全局信任值的迭代计算过程收敛。
[0099]
二、正确性证明
[0100]
假设系统中节点总数为n=3f 1,其中f表示恶意节点数。
[0101]
引理3.恶意节点的推荐意见不会影响节点全局信任值的计算。
[0102]
证明:如果恶意节点通过合谋的方式来获取较高的信任值,则恶意节点必须给出与正常节点相似度低的推荐意见,那么正常节点就会给予其推荐意见较低的权重,因此恶意节点的推荐意见不会影响节点全局信任值的计算。即使恶意节点的推荐意见被正常节点采纳,那也是因为恶意节点的推荐意见与正常节点相似,即恶意节点给出的推荐意见是合理的,因此也不会影响节点全局信任值的计算。
[0103]
引理4.对于任意f≥0,任何两个节点数等于2f 1的节点集合,至少包含一个相同的正常节点。
[0104]
证明:假设任意两个节点数等于2f 1的节点集合s1和s2,它们的交集i=s
1 i s2不包含正常节点。注意,由于节点总数为n=3f 1,而|s1| |s2|=4f 2=n f 1,因此i=f 1,这意味着s1与 s2的交集中含有f 1个节点,由假设可知,这f 1个节点都是恶意节点,与系统中最多只有f 个恶意节点相矛盾,因此假设不成立。
[0105]
引理5.如果存在一个正常节点提交了区块b,则所有正常节点提交了区块b。
[0106]
证明:假设一个正常节点提交了区块b,另一个正常节点提交了区块b'。在系统初始阶段,所有节点都参与共识过程,节点总数n=3f 1,所以一个正常节点仅在收到2f 1个投票消息时,才会提交区块。因此对于两个提交了不同区块的正常节点,它们分别收到了2f 1个针对 b和b'的投票,由引理1可知,任意两个节点数等于2f 1的节点集合,它们的交集中至少含有一个相同的正常节点,而同一个正常节点不会给不同的区块投票,因此假设不成立;随着系统的持续运行,crbft的信任模型会逐渐提高共识节点中正常节点的比例,因此crbft 的正确性会被进一步巩固。
[0107]
三、实验评估
[0108]
利用go语言编写简单的区块链系统,完整代码可在https://git...上以开源形式获得。整个系统包括一个压力测试模块和一个共识模块,其中压力测试模块负责生成交易信息并发送给共识模块,然后共识模块对新交易进行验证和共识。为了对比pbft与crbft的性能,在共识模块中同时封装了pbft和crbft,并且可以通过命令行程序选择配置共识协议。为了构建一个区块链网络,在一台机器(intel(r)xeon(r)gold 6248r,3.00ghz,32gb ram, ubuntu20.04)上运行多个节点,每个节点通过在docker容器中独立运行共识协议。
[0109]
1、有效性
[0110]
协同过滤推荐方案能否有效发现并排除各类恶意节点决定了本案实施例crbft方案的有效性。在系统中设置67个正常节点和33个恶意节点,其中恶意节点包括三类节点:普通恶意节点、合谋的恶意节点和恶意间谍节点
[24]
。对于一般的全局信任模型,它们无法有效抵抗恶意间谍节点的攻击,此类节点对信任模型的危害极大,为了检验crbft对这类节点的抵抗能力,利用e1、e2和e3分别表示上述三类节点在恶意节点中的占比,然后分别在(e1=50%, e2=25%,e3=25%)、(e1=25%,e2=50%,e3=25%)、(e1=25%,e2=25%,e3=50%)和(e1=0%, e2=0%,e3=100%)四种配置下,观察各类节点在不同时刻全局信任值的变化情况,实验结果如图5所示展示了节点全局信任值在不同配置下随时间的变化情况。
[0111]
通过分析图5中的(a)、(b)和(c),可发现由于恶意间谍节点会通过伪装自己,在系
统中表现良好,获取正常节点的信任,但是它们又会在背地里支持其他恶意节点,并且贬低正常节点,所以正常节点的信任值会随着恶意间谍节点数量的增加而有所下降。在图5中的 (d)展示的结果中,正常节点的信任值更是在初始时低于恶意间谍节点。但是随着系统的持续运行,恶意间谍节点的推荐意见与正常节点存在较大出入,因此正常节点会给予其推荐意见较低的权重,并且由于正常节点的数量大约是恶意间谍节点的两倍,所以恶意间谍节点能对系统产生的影响比较有限,最终正常节点的信任值依然会高于恶意间谍节点。而对于合谋的恶意节点和普通的恶意节点来说,它们都不会伪装自己,无法博取正常节点的信任,再加上它们的推荐意见由于与正常节点存在较大差异,不会被正常节点所采纳,因此它们的全局信任值始终处在一个较低的水平。
[0112]
2、拜占庭容错率
[0113]
pbft可以在系统中拜占庭节点数量不超过节点总数三分之一的情况下,保证系统的安全性和活性,但是由于拜占庭节点的行为具有不可预测性,如果无法及时发现并排除系统中的此类节点,它们就可能通过共谋、恶意入侵等手段,破坏系统中的其他正常节点,所以,能否有效地将拜占庭节点从系统中移除是对共识协议的一个新的挑战。图6展示了在节点总数为31,初始拜占庭节点数量比例为32.3%的情况下,crbft与pbft中拜占庭节点数量随时间的变化情况。实验结果表明,pbft中拜占庭节点数量一直保持不变,而crbft能够有效降低恶意节点的信任值,再配合共识节点选举算法,可以将恶意节点从系统中排除,所以 crbft中拜占庭节点数量随着系统的持续运行而不断减少。
[0114]
3、共识延迟
[0115]
共识延迟表示一个新区块从被提出到被确认所花费的时间,它反映了系统的出块效率,延迟越低,出块效率越高。本案测试共识延迟的方法流程如图7所示,当系统启动后,共识模块进入等待新交易数据的状态,然后,压力测试模块在配置好交易数据大小、发送方式等参数后,开始向共识模块发送交易数据,共识模块检测到有新交易数据到来后,会立即开始共识提交新的区块,然后向压力测试模块反馈共识结果。将共识模块开始对新交易进行共识到向压力测试模块反馈共识结果这段时间定义为共识延迟。接下来,从节点总数和恶意节点数量占比两个方面来评估crbft的共识延迟,并与pbft进行比较。
[0116]
图8中的(a)展示了系统中节点总数分别为7、13、19、25、31时,crbft与pbft的共识延迟情况,随着节点总数的上升,pbft与crbft的共识延迟都有所增加,但是对于 crbft来说,当共识延迟增长到触发重建共识组过程的条件阈值时,crbft会筛选系统中部分表现优异的节点参与共识过程,从而降低了网络通信和计算开销,因此,crbft的共识延迟增长率明显小于pbft。
[0117]
图8中的(b)展示了当系统中节点总数为31,恶意节点数量占比分别为5%、10%、15%、 20%、25%和30%时,crbft与pbft的共识延迟表现。在实验方案中,恶意节点被设定为会以一定的概率执行以下三种异常操作的节点:(1)发送错误的共识消息;(2)故意延迟发送消息;(3)对到达本地的共识消息不予理会。实验结果表明,pbft的共识延迟受恶意节点的影响较大,而crbft因为可以有效识别系统中的恶意节点,因此,crbft的共识延迟几乎不受恶意节点的影响。
[0118]
4、吞吐量测试
[0119]
吞吐量表示每秒打包的交易数量,它是衡量区块链系统性能的关键指标之一。可
使用压力测试模块,通过异步的方式,无需等待共识模块反馈共识结果,连续不断地向共识模块发送交易数据,共识模块将到达的交易数据先暂存到交易池中,然后等待一个短暂的超时时间后,再将交易池里存储的交易数据打包进区块中并开始共识过程。将评估节点总数和恶意节点数对crbft与pbft吞吐量的影响作用。
[0120]
图9(a)展示了系统中节点总数分别为7、13、19、25、31时,crbft与pbft的吞吐量变化情况。实验结果表明,随着节点数量的升高,crbft与pbft的吞吐量都存在不同程度的下降,但是,由6.2节的实验结果可知,crbft的共识延迟小于pbft,因此,在单位时间内,crbft可以提交更多的区块,所以总体上,crbft的吞吐量要始终高于pbft。
[0121]
图9(b)展示了当系统中节点总数为31,恶意节点数量占比分别为5%、10%、15%、 20%、25%和30%时,crbft与pbft的吞吐量变化情况。实验结果反映了一个有趣的现象, pbft的吞吐量总体上是随着恶意节点数量的增加而逐渐下降,但是由于crbft可以有效地将共识节点中的恶意节点排除出去,这样一方面避免了恶意节点对共识过程的干扰,另一方面又减少了共识节点数量,因此,crbft的吞吐量反而随着恶意节点数量的增加而逐步升高。
[0122]
实验结果表明,在大规模网络环境下,相比于pbft,crbft的平均共识时延降低了50%,吞吐量则提升了40%,并且随着系统的持续运行,故障节点率也在逐渐下降。
[0123]
除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对步骤、数字表达式和数值并不限制本发明的范围。
[0124]
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献