主页 > imtoken新版下载 > 一种用于车联网安全通信的区块链节点共识方法
一种用于车联网安全通信的区块链节点共识方法
1.本发明涉及区块链共识技术领域,具体涉及一种车联网安全通信的区块链节点共识方法。
背景技术:
2.随着5G的到来,将开启一个“万物互联”的时代。车联网(iov)不仅是物联网在交通领域的重要分支,也是智能交通系统在物联网中的重要代表应用。 iov 将使联网和自动驾驶汽车的出现成为可能。在这种模式下,车辆将能够与周围环境中的所有事物进行通信,包括行人、通信基础设施、交通设备等。随着现代智能交通和智慧城市的快速建设和发展,车联网的作用越来越重要。然而,车联网中用户信息传输的安全性给车联网、自动驾驶等应用的发展带来了巨大挑战。首先,由于车辆用户传播的信息涉及用户的个人隐私和关键信息,如果这些信息被恶意用户操纵和篡改,将会造成无法弥补的损失。其次,重要的用户数据难以追踪和溯源也是车联网发展的一大障碍。如果车辆的所有活动都能得到验证,那么发送信息的用户就必须对其行为负责,这将极大地改善车联网的运行。环境的安全。新兴的区块链技术(blockchain,bc)具有去中心化、防篡改、可追溯等特点。无需依赖可信第三方即可实现陌生节点之间的安全转移,可用于5G车联网。安全数据共享 提供解决方案。
3.区块链主要分为:私有链、公有链和联盟链。三者开放程度不同,使用场景不同。私链对个人或实体开放,只考虑节点本身和网络原因造成的故障,不考虑集合中是否存在恶意节点。公链属于去中心化程度最高的链。最重要的是比特币、以太坊等。公链允许每个参与者查看链上的信息。主要的共识算法有工作量证明(pow)、权益证明(pos)、委托权益证明(dpos)。所谓联盟链,是指由一定规模或数量的组织机构通过联盟的形式直接构建的,只对特定组织机构开放的链。联盟链中最常见的共识计算方法之一是实用的拜占庭容错(pbft)。 pbft 共识算法保证了分布式节点传输信息时信息的一致性。中心化,允许系统中除客户端节点外的所有节点参与共识过程,一轮共识过程的时间复杂度为o(n2),n为参与共识节点的数量,为节点数增加,达成共识所需的时间会大大增加,所以只能用于节点数较少的场景。
4.pbft算法用于处理和解决拜占庭将军问题。拜占庭将军问题主要描述了如何向部队传递消息,以使军队各部门在叛军存在的情况下对行为达成一致,即在系统上某些恶意节点不断发送错误信息的情况下,pbft具有使系统仍能正常工作和运行的能力。一致性问题可以说是分布式领域中最基本的问题,也是最重要的问题。共识算法解决了如何解决分布式系统中达成共识协议的问题。主节点、从节点和视图是pbft算法运行过程中的三个重要组成部分。主节点和从节点负责不同的进程。主节点是算法操作的起始端,对接收到的请求进行响应收集和排序;从节点运行算法,当收到主节点的请求时
,运行算法,保证算法的有效性;所有节点必须在同一个视图中执行请求,当主节点发生故障时,将发送尝试替换请求以更改当前主节点。对于pbft算法,除了支持容错的故障节点外,还需要支持容错的恶意节点。例如,假设节点簇数为n,恶意节点数为f,那么master节点需要在n-f个节点的回复中判断是非,最坏的情况是有f个恶意节点在n-f个节点中,则需要在n-2f个节点中判断是非,因为多数获胜,所以只有当n-2f>f时,主节点才能做出正确判断,所以总共有节点n需要大于3f+1,系统才能达成共识,即pbft算法最多可以容忍(n-1)/3个非法节点)的破坏。
5.区块链作为一项发展中的技术,在性能和安全性方面仍然难以满足5G车联网数据共享的需求。现有的 pbft 共识算法有几个缺点:
6.(1)扩展性差,难以满足5G车联网大规模数据共享需求;
7.(1)@ >共识效率低,难以满足5G车联网实时高效的数据共享需求;所有数据共享需求。
9.共识算法作为现代区块链的核心技术,决定了区块链的实际应用和场景。在近年来区块链技术的发展趋势中,安全性、隐私性和性能成为区块链技术研究的重要焦点。然而,在车联网场景中,很少有关于降低共识延迟和通信开销的研究。目前,共识算法很难满足车联网场景对时延的严格约束。因此,如何提出符合车联网应用场景的区块链共识算法是一个亟待解决的问题。
技术实施要素:
10.本发明实施例提供了一种用于车联网安全通信的区块链节点共识方法,以确保为通信安全设计的高效共识机制满足基于区块链系统的低延迟要求5G等车联网场景。
11.为达到上述目的,本发明采用以下技术方案。
12.一种用于车联网安全通信的区块链节点共识方法,包括:
13.通过改进k-means的分组算法,将所有节点分成多个组,在每组第一次迭代时,选择一个节点作为初始聚类中心;
14.引入投票机制,对每个组中每个节点的性能进行评分,性能较好的节点得分较高。在每组中,根据节点的得分和距离进行综合评价,选出一个主节点;
15.@ > 在每个组中轮换查询。当一个组被查询时,如果组内有请求,组内的每个节点都会使用拜占庭容错协议的pbft算法进行共识过程。参与共识过程,处于空闲期。
16.优选地,将所有节点通过改进的k-means分组算法分成多个组,并且在每组的第一次迭代期间,选择一个节点作为初始节点,包括:
17.Step(1)假设所有节点组成的集合为d,首先提供一个初始节点集合u区块链技术的主要特征,初始化m个组;
18.step (2)for group k(k=1,
…
,m) 随机选择一个节点作为Cluster center ck;
19.Step(3)计算聚类中心ck到集合u中节点的距离的平均值dc,作为阈值半径;
20.Step(4)判断集合d中节点i(i∈d/u)到聚类中心ck的距离di,判断距离di和阈值半径dc,如果di小于dc,则将节点j分类为当前组k;一次迭代的中心ck;
22.steps(6)依次遍历每一组,重复以上步骤(2)-(5),直到满足终止条件;
23.step(7)如果集合d中有节点没有被分成任何组,对于这些节点,需要一个一个的计算这些节点到每个节点的距离组的中心,距离最小的组作为节点分组结果。
24.优选地,该方法还包括:当系统中的节点数量发生变化时,不需要重启系统,根据上述处理流程自动进行节点分组改进的 k-means 分组算法。
25.最好是节点的加入或退出需要在节点空闲期间进行,对于想要加入的节点,先通过上述改进的k-means分组算法,在组空闲时记录在组节点列表中;对于节点所在的节点,先向系统申请,申请通过后,等待节点所属的组处于空闲期,从组节点列表中删除。
26.最好采用引入的投票机制,对每个组中每个节点的性能进行评分。性能较好的节点得分较高。在每组中,根据节点的得分和距离进行综合评价,选出一个主节点,包括:
27. 将每个组中的所有节点划分为:主节点、保留节点和投票节点,主节点和投票节点从保留节点中选出,假设组中一共有a预备节点,一轮共识开始时,需要从一个备用节点中选出b个投票节点和一个主节点。投票节点具有投票权,对上一轮共识过程中的储备节点的表现进行投票和评分,得分较高的将被选中。将准备好的节点作为首选节点,计算每个首选节点到其他组的平均距离,综合评价每个首选节点的得分和平均距离,选择综合评价最好的节点作为主节点节点;
28.生产节点负责打包交易,生成数据块。
29.最好引入投票机制,对每组中每个节点的性能进行评分,性能较好的节点得分较高。综合评价分数和距离,选择主节点,包括:
30.步骤1、根据上一轮共识过程中节点的表现,每组内该节点的投票节点投票给其他节点打分,选出前n (b+1 31.投票规则如下: ① 如果之前的共识过程被选为主节点,加两点;成为性能良好的主节点并产生有效数据块,加一分,否则减一分; ② 如果最后一轮是投票节点,加一分;如果共识过程表现良好,则加一分,否则减一分。 ③ 上一轮是储备节点,没有加分;如果共识过程表现良好,则加一分,否则减一分。节点得分为s;节点平均距离d a1 ,计算节点j的综合评价: 33.rj=α1*s+α2*d a1 34.α1和α2为权重系数; 35.step3、到节点得分降序排列,选出评价最高的前b+1个节点放入集合d={n1,n2 , … ,n b+1 }; 36.Step4、对于g={g1,g2,...,gm},把d中的第一个元素放到主节点集合p中,作为主节点在g1组中,其他元素放在投票节点集合v中; 37.Steps5、 依次遍历组对于集合{g2,g3,...,gm}中的每一组,重复上述步骤1-4的过程;直到主节点集合p中有m个节点,即从m组Master节点中选出m个,结束选择过程 . 38.车联网优选包括:5G车联网。 39.从本发明上述实施例提供的技术方案可以看出,本发明实施例的方法提出了一种创新的共识节点分组算法。当系统中的节点数量发生变化时,当不需要重启系统时,会自动进行节点分组,保证系统的动态性。引入投票机制对共识节点的性能进行评分。节点性能越好,得分越高,降低了恶意节点的风险,提高了系统的安全性。共识节点由主节点和请求组节点组成。通过减少参与共识过程的节点数量,减少生成有效区块所需的延迟,提高吞吐量,减少通信开销。 40.本发明的其他方面和优点将在下面的描述中部分阐述,这将从下面的描述中显而易见,或者可以通过本发明的实践来了解。 图纸说明 41.为了更清楚地说明本发明实施例的技术方案,下面将使用附图对实施例进行说明。简单介绍一下,显然以下描述中的附图只是本发明的一些实施例。对于本领域的普通技术人员来说,在没有创造性劳动的情况下,还可以从这些附图中获得其他的附图。图片。 42.图。附图说明图1为本发明实施例提供的gepbft共识流程流程图; 43.图。图2为本发明实施例提供的一种改进的k-means分组算法中分组算法的处理流程图; 44. 图。图3为本发明实施例提供的分组结果示意图; 44. 图。 p> 45. 图。图4为本发明实施例提供的主节点选举算法流程图。 详细说明 46.下面详细描述本发明的实施例,附图中举例说明,其中相同或相似的附图标记表示相同或相似的元件或具有相同的元件或类似的功能。以下结合附图所描述的实施例,仅为举例说明,仅用以解释本发明,并不构成对本发明的限制。 47.本领域技术人员可以理解,除非另有明确说明,单数形式“a”、“an”、“the”和“the”还可以包括复数形式应进一步理解,本发明说明书中使用的“包括”一词是指存在所述特征、整数、步骤、操作、元件和/或组件,但不排除存在或添加一种或更多其他特征、整数、步骤、操作、元素、组件和/或它们的组。应当理解,当我们将一个元件称为“连接”或“耦合”到另一个元件时,它可以直接连接或耦合到另一个元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦合”可以包括无线连接或耦合。如本文所用,术语“和/或”包括一个或多个相关列出的项目的任何和所有组合。 48.本领域技术人员应理解,除非另有定义,本文中使用的所有术语(包括技术和科学术语)与本领域普通技术人员具有相同含义。本发明属于。通常理解相同的含义。还应该理解,诸如在通用词典中定义的术语应该被理解为具有与其在现有技术的上下文中的含义一致的含义,并且除非在此定义,否则不应被理解为理想化或过于正式的含义解释一下。 49.为便于对本发明实施例的理解,以下以几个具体实施例为例结合附图进行进一步说明和说明,每个实施例不构成对本发明的解释。示例的限制。 50.本发明实施例在传统pbft算法的基础上进行改进,提出一种用于车联网安全通信的区块链节点共识方法(机制): p> 51.(1)创新改进k-means分组算法,将所有原始共识节点分成g组,选择g个节点作为集群中心节点,然后计算每个共识节点之间的距离和每个集群中心,每个共识节点都分配到离它最近的集群中心,传统的pbft只适用于节点固定的系统,当网络节点动态变化时,必须重启系统进行Reconfigure以适应变化通过使用k-means聚类算法,当系统中节点数量发生变化时,无需重启系统,节点自动分组,保证系统的动态性。 5 2.(2)分成g组后,根据节点在之前共识过程中的表现,每组投票节点将根据成员的信誉评价区块链技术的主要特征,并选择得分最高的节点,选出的节点作为首选节点,其次根据距离在每组首选节点中选择主节点,首先进行共识过程在轮询组内,然后在主节点之间。这样在减少共识节点规模的基础上减少了共识。进程的数量,其时间复杂度由o(n2)变为o(n),减少通信延迟,提高吞吐量,同时,通过主节点的选择,性能好的生产节点将获得一定的报酬和奖励,鼓励生产节点更加诚实可靠地工作,并重新降低节点作恶的风险。 53.传统的pbft算法共识过程需要网络中所有共识节点的共同参与。有大量的点对点通信,通过共同协商达成共识,占用了过多的通信资源,尤其是增加了通信延迟。因此,本发明实施例提出了一种合适的区块链共识机制,可以提高节点的灵活性,提高通信效率。除了容错率之外,还需要降低通信带宽开销,显着提高交易吞吐量,同时降低时延,尤其是在车联网场景下保证严格的时延约束,这点非常重要对区块链的发展意义重大。 54.本发明提出了一种基于分组和选举的pbft(grouping andelection based actual byzantine fault tolerance,gepbft)系统,包括普通节点和共识节点,其中普通节点不参与共识过程,只有共识节点参与共识过程。与传统的pbft算法相比,省去了这些节点共识所需的系统开销。 55.基于本发明实施例的改进k-means算法gepbft共识过程流程图如图1所示,具体实现过程如下: 56.(1)节点分组:根据改进的k-means算法对初始共识节点进行分组。 57.(2)主节点选举:对于每个组,使用基于信誉评估的主节点选举方法来确定主节点。 58.(3)组共识:本轮共识的出块主节点通过轮换查询的方式确定,系统根据组号进行轮换查询。当一个组被查询,如果组内有请求,则组内节点和主节点共同组成一个共识节点,执行pbft算法达成共识,直到下一次轮流查询其他组内的请求; 如果查询一个组,组内没有请求,则跳过该组,并根据组号继续轮换查询,直到找到请求的组。 59.(4)出块主节点向其他主节点发送广播消息,准备启动主节点共识。 60.(5)主节点共识:在选定的主节点之间进一步实现pbft算法进行共识。 6 1.(6)每个主节点向其组内的其他节点发送广播消息。 62.(7)组内验证:每个组的主节点收到该组的主节点发送的打包消息后,会对打包消息的数字签名进行验证。验证后成功后,将执行请求内容,然后各节点更新本地区块链账本信息,保证数据一致性。 63.gepbft共识过程的实现在于两个关键算法的实现,即基于改进k-means的分组算法和基于信誉评估的主节点选择算法。下面将介绍这两种算法的具体实现原理。 64.1、基于改进k-means的分组算法: 65.在信息传播过程中,在真实网络中,时延与传播距离和传播速度有关。在实际网络中,距离是影响传播延迟的重要因素。在实际应用中,大部分节点的位置在短时间内不会有太大的变化,所以在某个固定周期内任意时刻两个节点之间的距离可以近似为这个固定周期内节点之间的距离。基于以上假设,设计了一种分组算法,将系统中固定时间段内距离相近的节点分组为一组,允许节点位置有微小的变化,在分组后形成由多个主节点领导的多个组。主节点选择算法,使得该算法可以通过缩短通信距离来减少节点间信息传输的通信延迟。 66. 假设所有节点组成的集合为d,为了方便计算,需要先提供一个初始节点集合u。由于计算大量节点的距离矩阵的成本是巨大的,因此需要包含相对大量的节点。节点少的初始节点集合,首先将初始集合u中的节点进行分组,以减少计算距离矩阵的成本,对于未分组或未来将加入的节点,可根据确定加入哪个组分组信息。如图。图2为本发明实施例提供的改进的k-means分组算法中分组算法的处理流程图。具体算法步骤如下: 67.1)初始化 m 个组。 68.2)对于组 k (k=1, … ,m) 随机选择节点作为集群中心 ck。 69.3)计算聚类中心ck到集合u中的节点的距离的平均值dc作为阈值半径。 70.4)判断集合d中节点i(i∈d/u)与聚类中心c的距离di与阈值半径dc的关系,如果di为小于dc,节点j被分类为当前组。 71.5)更新组的聚类中心,以组元素的质心作为下一次迭代的中心ck。 72.6)依次遍历每组并重复上面的步骤 3-5。直到满足终止条件(最大迭代次数,最小误差变化)。 73.7)如果集合 d 中有不属于任何组的节点。对于这些节点,需要逐一计算这些节点到各组中心的距离,将距离最小的组作为节点分组结果。 74.分组算法的思想是将所有节点放在一个二维平面上,以每个中心节点为圆心,以阈值半径画一个圆为圆半径,即在整个二维平面内绘制m个圆,m个圆之间没有重叠部分,将圆内的节点划分为一个统一的组,从而完成m组的分组。由于 m 个圆不相互重叠,因此在二维平面中存在不包含在任何圆中的节点。对于这些不包括在内的节点,要对其进行分组,需要一一计算这些节点到每个中心节点的距离,并计算出最小的一个。距离,并将节点分组到相应的组中。如图。图3为本发明实施例分组结果示意图。 75.考虑到系统的动态性,该算法允许节点动态加入或离开。由于参与共识过程的共识节点由主节点和当前请求节点所属组的节点组成,除主节点外的其他组的节点不参与共识过程,处于空闲状态在最后一轮共识过程中。节点的变更不会影响共识过程,因此需要在空闲期间进行节点的添加或退出。对于想要加入的节点,先通过分组算法将其分配到距离最短的组中,然后在组空闲时记录在组节点列表中;对于想要离开的节点,首先向系统提出申请。申请通过后,等待节点所属的组处于空闲期,将其从组节点列表中删除;节点到每个中心节点的距离,取最小值,重新加入到组节点列表中。 76.2、基于信誉评估的主节点选择算法: 77.初始节点经过上述分组处理后,m主节点选择算法是在m组中选择m个距离相近且性能良好的节点作为主节点。这样可以减少主节点共识阶段的消息传播延迟。同时考虑到系统的安全性,考虑节点共识过程的性能,可以有效避免主节点失效或主节点为拜占庭节点的情况。