CN116016540A - 一种基于物联网设备的区块链网络节点群可容错协助存储机制 - Google Patents
一种基于物联网设备的区块链网络节点群可容错协助存储机制 Download PDFInfo
- Publication number
- CN116016540A CN116016540A CN202211614423.3A CN202211614423A CN116016540A CN 116016540 A CN116016540 A CN 116016540A CN 202211614423 A CN202211614423 A CN 202211614423A CN 116016540 A CN116016540 A CN 116016540A
- Authority
- CN
- China
- Prior art keywords
- node
- block
- probability
- nodes
- assistance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于物联网设备的区块链网络节点群可容错协助存储机制,该方法通过将物联网设备组建成节点群,较以往技术相比,在本发明中考虑地是动态区块链,依照物联网设备或节点的低容量,低计算资源等特性,为节约资源,节点可对自身不重要的原区块进行淘汰,在限制每个区块存储成本的条件下,通过制定节点选择策略,优化每个区块的总协助概率,保障群内节点发生故障离线时,其正常节点依旧可以对整个区块链副本任意一个区块进行协助。本发明提高了节点群运行区块链副本的稳定性以及容错性,增强了区块链技术的实用性及扩展性。
Description
技术领域
本发明涉及区块链技术领域,特别一种基于物联网设备的区块链网络节点群可容错协助存储机制。
背景技术
随着互联网技术的发展,加密数字货币逐渐出现在我们的生活中。比特币作为大众熟知的数字货币,它所使用的核心支撑技术来自于区块链技术。在区块链网络中采用的是点对点通信,其中每个节点即是服务器也是客户端,当节点发起新交易时,其他节点需要一致验证交易的有效性和正确性,达成共识的交易将会打包到区块中,通过节点算力求解获得区块记账权,从而将区块添加到链上,区块一旦添加到链上,其中数据就不可以被篡改。因此区块链技术拥有去中心化、数据不可篡改、数据持久、可追溯等特点。正是因为这些特点,区块链技术在金融经济、物流供应链、物联网、医疗、保险等领域具有较高的使用价值。
虽然区块链技术在未来的互联网中具有很大的潜力,但仍存在着许多挑战,其中存储可扩展性是一个重大挑战。由于区块链技术的去中心化思想,节点需要存储完整的副本保证数据的正确性。但是随着新区块的不断产生,区块链的总数据量是持续增长的,截止到2022年12月9日,以区块链技术为主导的比特币总数据量已达441.91GB,总区块数量已经达到766286个,对于庞大且增长的数据量,提高了节点加入区块链的门槛,愿意去维护以及加入它的用户越来越少,这将导致去中心化逐渐转为集中化,进一步影响区块链系统的安全性。
在目前存储可扩展性的研究现状中,将区块链中的数据存入第三方数据库中是一种解决方案。例如当前使用较多的星际文件系统(IPFS)是一种点对点的分布式文件系统,它将计算设备和相同文件系统连接在一起;在此模型中区块链只需存储IPFS哈希值即可,而IPFS哈希值是通过IPFS文件系统存储原区块链上的数据生成;因此区块链只需要存储IPFS哈希值就可以得到相应的数据。这种方法虽然能降低区块链的存储压力,但是区块链重要的数据存储在第三方数据库中,第三方数据库的状态将会直接影响区块链系统,这将存在一定风险。目前不依赖第三方数据库的解决方案中,分片技术是减轻节点的存储压力的方式之一。分片将节点分组去处理不同的交易或者维护不同的区块链副本段,因此分片技术能够提高区块链的响应性能以及可扩展性,但是每个分区之间的通信会变得更加复杂,此外还会降低区块链的总算力,导致区块链安全性能下降。除分片之外,共识单元同样也是一种解决方案,共识单元是指通过一组节点来共同存储至少一份区块链副本,在共识单元中,区块是最小的数据单位,节点优先保留自己关心的区块,对于自身没有存储的区块可以通过访问其他节点来临时获取。共识单元通过整合节点资源,降低单个节点的存储压力;它不需要第三方数据库来分担存储压力以及本身不存在分区也就不会存在更复杂的通信过程,因此共识单元可以应用到更多的场景。但共识单元中的节点来自同一社区或有合作的关系,每个节点并不是完全可信任的,因此节点的状态将会直接影响整个共识单元的正常运行。
在当今万物互联的时代,智能家居设备、工业传感器、智能汽车、智能摄像头等设备都属于物联网设备,这些设备之间互联互通,实现信息共享与交换。然而这些物联网设备产生的数据需要上传到第三方进行处理,或者这些数据在它们进行共享交换信息的时候就已经被偷取,而区块链技术的去中心化,不可篡改、可追溯等特性可以为物联网设备的数据安全赋能。在现实场景中,物联网的设备是海量的,单个设备往往自身硬件水平不足以支持运行一个完整的区块链副本,为了提高区块链的存储可扩展性,使用共识单元的概念来整合这些小存储容量设备的存储资源来协同存储区块链副本是一种选择。因此我们采用共识单元的概念将这些需要使用区块链技术但自身存储能力不够的设备组成一个节点群。但与共识单元不同的是,节点群中的节点或者设备并不是来自同一个社区或者有合作的关系。在共识单元中,它更注重节点之间访问区块的通信成本,但是在实际应用场景中,除了访问区块的通信成本,节点存储区块往往需要考虑硬件、电力、维护等其他成本,这是无法忽略的因素。此外,共同协作的物联网设备或者节点同样也会存在掉线、故障等特殊情况,它们将在一段时间内无法为其他节点提供区块协助。因此我们需要为每个区块制定如何选择节点的策略,在控制存储成本,考虑节点发生故障,以及应对不断增长的数据量的情况下,尽可能保障和提高节点对群内其他节点的区块协助。
发明内容
通过对现有技术的考察,为了解决现有技术的不足之处,能够让区块链技术能够更好的应用在物联网设备中,本发明提供了一种基于物联网设备区块链网络节点群可容错协助存储机制,在本发明中,将物联网设备映射为节点,随着区块动态增加,节点存储的区块越来越多,其自身存储区块的成本也将会越来越高,因此节点根据自身对区块的依赖性适当地将原有区块进行淘汰,我们将节点淘汰原有区块的概率称为淘汰率,在节点自身不故障以及不发生区块淘汰的情况下(区块存活状态),节点可以为其他节点提供区块查询,进一步分析,假设其他节点发生淘汰的概率下,节点依然能够为其他节点提供区块查询的概率我们称为区块协助概率。本发明目的是当节点组建成节点群运行区块链副本时,在群内节点发生故障时(一个节点发生故障代表一个场景),为每个区块在成本限制的条件下选择节点集存储,保证每个区块在所有场景下的总协助概率最大化,尽可能避免节点群因节点故障而导致其存储的区块无法提供给群内其他节点,从而保障节点群的有效运行。
为达到上述目的,一种基于物联网设备的区块链网络节点群可容错协助存储机制包括:
使用一定数量的物联网设备作为节点搭建节点群,所有节点协同运行同一个区块链副本。。
根据区块占用节点的存储资源、CPU的计算资源以及通信资源,计算节点存储区块的成本。
通过系统对区块的总访问次数,量化区块对于节点群的重要性,为每个区块设置存储成本限制,防止区块被大量节点共同存储,浪费节点存储资源;对于较频繁的区块,可提高区块成本限制。
考虑到数据是不断增加的,新的区块也将会被打包产生,因此在节点群中区块数量是动态增加的,因此节点需要将对自身不重要的原区块进行淘汰,通过节点对区块的需求量化淘汰率,从而进一步根据淘汰率计算节点存储区块带来的可协助概率。
将上述内容构建数学模型,设由m个区块组成的完整区块链副本B={b1,b2,…,bm},一组群内节点集V={v1,v2,…,vn},x(bi,vj)表示决策变量,区块bi选择节点vj存储,即决策变量x(bi,vj)=1;区块bi被节点vj存储的成本为c(bi,vj),区块bi在群内的总存储成本不超过其成本限制θ(bi)。vk表示故障节点,因此不能提供区块的查询。对于节点vu来说,如果vu需要存储新区块,淘汰区块bi概率为d(bi,vu),那么vu需要到其他节点获取bi,例如到节点vj获取bi,其中节点vj能够提供bi的(区块bi在节点vj中的存活率)概率为1-d(bi,vj)。这样vu获得vj提供bi的概率为(1-d(bi,vj))*d(bi,vu)。由于vu可以是除vk、vj以外的任意节点,因此当vk发生故障时,vj可以协助其他节点并且提供bi的概率表示为: 假设协助节点vj变成故障节点vk时,即vj=vk,则vj可以协助其他节点并且提供bi的平均概率为0。节点选择问题是为区块选择节点存储,但同一节点不能多次存储同一区块。表示当节点vk发生故障时,所选择的节点能够给其他节点的提供区块bi协助的概率之和(即区块总协助概率),表示找到一个vk,当它发生故障时,所选节点提供区块协助概率之和最小;因此可知vk发生故障时,对群内区块协助概率影响是最大的,所以我们需要找到一种分配方式使在vk发生故障下,让最小的区块总协助概率最大化。即优化目标是在满足区块被节点存储的总成本不超过存储成本上限θ(bi)的条件下,找到区块总协助概率最差的故障节点vk,并选择一种分配方式最大化此故障节点下的区块总协助概率:
约束条件:约束(3)表示区块bi选择不同节点存储产生的成本总和不超过节点群对区块bi的存储成本限制。约束(4)表示区块bi分配给同一节点最多一次。
最后根据数学模型得出的目标函数以及约束条件,实现对每个区块安排节点进行存储。
在以往的技术中,无论是共识单元还是组建节点群,并未仔细考虑单个节点状态对整个节点群的影响,因为在实际的物联网设备中,设备因停电或其他因素导致离线的情况时有发生,离线节点将无法提供区块协助,这将可能使节点群其他节点无法获取它们所需要的区块。此外区块链是动态增长的,这将导致数据量的不断增长,占用更多的节点资源,如何权衡区块占用节点群的资源在过去技术方案中并未得到很好的解决,在本发明中,根据一种基于物联网设备的区块链网络节点群可容错协助存储机制的实施例,较现有技术有以下优势:
本发明提供一种基于物联网设备的区块链网络节点群可容错协助存储机制,通过对每个区块在节点群中成本的限制,合理选择节点存储区块,避免造成资源浪费,节省节点存储带来的成本开销;考虑到区块链不断新增区块,导致节点存储冗余区块过多,依照物联网设备或节点的低容量,低计算资源等特性,让节点对自身不重要的原区块进行淘汰,通过节点对区块的需求量化淘汰率,从而进一步根据淘汰率计算节点存储区块带来的可协助概率,提高了区块链技术应用的可扩展性;在实际组建的节点群中,节点难免发生故障或离线,本发明考虑到节点群发生故障的场景时的总协助概率,通过目标函数以及约束条件,为区块选择合适的节点集存储,最优化每个区块的总协助概率。以至于节点发生故障离线的时候,节点群中的正常节点依旧可以对整个区块链副本任意一个区块进行协助,对整个节点群正常运行提供了较高的保障,提高了节点群的稳定性。
本发明的实施例将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中节点提供区块协作案例示意图;
图2为本发明实施例中基于区块协助概率增益的节点选择方案的过程示意图;
图3为本发明实施例中基于存储成本的节点选择方案的过程示意图;
图4为本发明实施例中基于故障节点的节点选择方案的过程示意图;
图5为本发明实施例中节点动态新增方案的过程示意图;
图6为本发明实施例中节点动态删除方案的过程示意图;
具体实施方式
下面将结合附图和实施例对本发明的技术方案进行完整地说明。显而易见,所描述的实施例仅属于本发明一部分实施例,而不是全部的实施例。
在本发明中,为提高区块链技术的可扩展性与实用性,物联网设备或节点将采用节点群的方式共同维护至少一份区块链副本,然而在实际生活中,物联网设备并不会一直在线,考虑到节点群中节点故障离线等特殊情况,将可能导致整个节点群无法进行区块协作;此外区块占用群内节点的存储资源也是不可忽略的因素,因此本发明提出一种基于物联网设备的区块链网络节点群可容错协助存储机制,具体步骤包括:
步骤1、使用物联网设备作为节点搭建节点群,所有节点协同运行同一个区块链副本。
步骤2、根据区块占用节点的存储资源、CPU的计算资源以及通信资源,计算节点存储区块的成本。
步骤3、通过系统对区块的总访问次数,量化区块对节点群的重要性,为每个区块设置存储成本限制,防止区块被大量节点共同存储,浪费节点存储资源。
步骤4、考虑到数据是不断增加的,新的区块也将会被打包产生,因此在节点群中区块数量是动态增加的,因此节点需要将对自身不重要的原区块进行淘汰,通过节点对区块的需求量化淘汰率,从而进一步根据淘汰率计算节点存储区块带来的可协助概率。
步骤5、构建数学模型,给出优化目标以及约束条件,对数学模型中的节点选择问题进行分析,采用已知的NP-hard问题-最大最小背包问题规约到节点选择问题,从而证明节点选择问题是NP-hard。
步骤6、通过证明节点选择问题属于NP-hard问题,设计了三种启发式方案实现每个区块对群中节点的选择。
步骤7、考虑到实际场景中节点群内节点是动态的,因此基于约束条件的前提下,设计对应目标函数的两种节点动态新增删除方案。
下面首先将对上述步骤1至步骤5进行详细解释:
通过对节点和区块的特性进行分析后,定义完整区块链的区块集合为B={b1,b2,…,b},区块集B由m个区块组成完整区块链数据副本,一个完整的区块链副本以区块为最小单位存储在群内不同节点中,因此单个节点可以通过群内其他节点查询自身缺少的区块。在区块链技术中区块是动态增加的,当数据打包成新的区块时,节点群会通过区块链网络接收到新区块,因此群内节点存储区块的数量是不断增长的。随着节点存储的区块越来越多,其存储区块的成本也将会越来越高,因此节点根据自身对区块的依赖性适当地将原有区块进行淘汰,我们将节点淘汰原有区块的概率称为淘汰率。此外我们需要考虑节点故障场景,表示节点未来可能发生硬件故障、网络延迟等因素导致节点故障离线,因为单个节点的存储状态将会影响整个节点群的运行。
对于以上情况,我们为区块选择节点时需要考虑在未来节点发生故障或者节点对区块发生淘汰时,依然能够保证节点群的可靠性和稳定性。因此我们需要对区块进行适当冗余,将同一区块存储到群内不同的节点中。由于节点之间存在物理硬件成本差异,所以不同节点存储同一个区块的成本将会不同,同一区块被不同节点存储得越多,存储成本将会越高,为了控制区块的存储成本,给定区块存储成本上限的集合O={θ(b1),θ(b2),…,θ(bm)}。基于上述思想,我们给出节点的定义。
定义1:给定一组构建节点群的节点集V={v1,v2,…,vn},其中n表示节点总数量,vj为第j个节点;d(bi,bj)表示未来新区块加入时,区块bi在节点bj中淘汰率,其中d(bi,vj)∈[0,1];c(bi,vj)表示节点vj存储区块bi的成本。
假如区块bi在节点vj中淘汰率为d(bi,vj),反之区块bi在节点vj中的存活率为1-d(bi,vj),当节点vj存储区块bi时,在自身不故障以及不发生区块淘汰的情况下(区块存活状态),节点vj可以为其他节点提供区块查询,在假设其他节点发生淘汰的概率下,节点vj能够为其他节点提供区块查询的概率我们称为区块协助概率,存储区块bi的节点越多,区块协助概率越大,在节点群中区块bi也就越可靠。此外我们需要考虑节点因硬件故障或网络故障等场景,使用节点vk表示节点发生故障离线,其中vk∈V。假设每次只有一个节点发生故障,例如当前节点群拥有四个节点分别为v1、v2、v3、v4,假设当新区块加入节点时,v1淘汰b5的概率为33%,v2淘汰b5的概率为37%,v3淘汰b5的概率为23%,v4淘汰b5的概率为27%。此时由v2存储区块b5,b5在v2中存活概率为63%,假设当节点v3发生故障时,v2有63%的概率存活,且可以为v1和v4提供区块b5查询,具体见图1示例;下面给出区块协助概率的具体定义。
定义2:当节点vk发生故障时,表示节点vk离线,因此不能提供区块的查询。对于节点vu来说,如果vu需要存储新区块,淘汰区块bi概率为d(bi,vu),那么vu需要到其他节点获取bi,例如到节点vj获取bi,其中节点vj能够提供bi的(区块bi在节点vj中的存活率)概率为1-d(bi,vj)。这样vu获得vj提供bi的概率为(1-d(bi,vj))*d(bi,vu)。由于vu可以是除vk、vj以外的任意节点,因此当vk发生故障时,vj可以协助其他节点并且提供bi的平均概率为:假设协助节点vj变成故障节点vk时,即vj=vk,则vj可以协助其他节点并且提供bi的平均概率为0,因此我们定义节点vj在节点vk发生故障时,对其他节点的区块协助概率为:
在区块选择节点进行存储时,我们需要考虑区块选择的节点在不同节点发生故障时的协助概率。由于区块在不同节点中,存储成本存在差异,且在节点群中,每个区块都有自身存储成本的上限θ(bi)。通过区块bi选择的节点集,在节点vk发生故障时,节点集中每个节点的区块协助概率之和为区块总协助概率。因此我们在满足每个区块存储成本上限的条件下,选择一种分配方式让不同节点发生故障时,让其中拥有最小的区块总协助概率尽可能最大化。节点选择问题具体定义如下。
定义3(节点选择问题):给定由m个区块组成的完整区块链副本B={b1,b2,…,bm},一组群内节点集V={v1,v2,…,vn},x(bi,vj)表示决策变量,区块bi选择节点vj存储,即决策变量x(bi,vj)=1;区块bi被节点vj存储的成本为c(bi,vj),区块bi在群内的总存储成本不超过其成本限制θ(bi)。节点选择问题是为区块选择节点存储,但同一节点不能多次存储同一区块。表示当节点vk发生故障时,所选择的节点能够给其他节点的提供区块bi协助的概率之和(即区块总协助概率),表示找到一个vk,当它发生故障时,所选节点提供区块总协助概率最小;因此可知vk发生故障时,对群内区块协助概率影响是最大的,所以我们需要找到一种分配方式使在vk发生故障下,让最小的区块总协助概率最大化。即优化目标是在满足区块被节点存储的总成本不超过存储成本上限θ(bi)的条件下,找到区块总协助概率最差的故障节点vk,并选择一种分配方式最大化此故障节点下的区块总协助概率:
约束条件:约束(3)表示区块bi选择不同节点存储产生的成本总和不超过节点群对区块bi的存储成本限制。约束(4)表示区块bi分配给同一节点最多一次。
构建完数学模型后,我们展开步骤6的详细过程:
在给出具体方案之前,首先需要分析节点选择问题的复杂性。我们通过将最大最小背包问题Max–min knapsack problem(MMKP)规约到节点选择问题,从而证明节点选择问题是NP-hard。下面给出证明过程:
定理1:节点选择问题是NP-hard。
证明:最大最小背包问题(Max–min knapsack problem)是已知的NP-hard,下面给出具体实例:给定一组项目j={1,2,…,n},wj为每个项目的权重,给出场景集合S,表示在场景s下项目j的利润,选择总权重不超过c的项目子集,使最差场景利润最大化。具体公式如下:
约束条件:
xj∈{0,1} j={1,2,…,n} (7)
我们将最大最小背包问题实例映射到节点选择问题的实例,假设区块链集合中只存在一个区块b*时,节点集V对应一组项目j,区块被节点存储的成本为c(b*,vj)对应项目的权重wj,对于唯一区块b*在群内的存储成本限制θ(b*)对应权重阈值c,节点故障集F对应场景集合S,区块协助概率t(bi,vj,fk)对应场景s下项目j的利润通过上述映射关系,节点选择问题的一种特殊情况与最大最小背包问题拥有相同解,因此节点选择问题的约化情况是NP-hard,从而证明了节点选择问题同样是NP-hard。
区块对于节点的选择需要考虑节点在不同故障节点下的区块协助概率,因此我们需要选择一种分配方案来满足目标函数及约束条件,具体时间在满足所选节点存储区块bi的总成本不超过存储成本上限θ(bi)条件下,找到区块总协助概率最差的故障节点,并使此节点故障下的区块总协助概率是最大化。由于节点选择问题在上述已经证明是NP-hard,因此我们设计了三种启发式方案来执行分配。
区块选择节点方案一:基于区块协助概率增益的节点选择方案具体步骤及案例如下:
根据上述优化目标可知,对于每个区块,我们考虑每个节点在不同故障节点下的区块协助概率,因此区块每选择一个节点,则需要计算在不同故障节点下加入该节点后的区块总协助概率。设在节点vk发生故障,区块bi选择节点vj后的总协助概率为S(bi,vj,vk),其中S(bi,vj,vmin)表示S(bi,vj,vk)中区块最小总协助概率(最小值),对应节点vmin故障;区块bi没有选择节点vj情况下总协助概率为G(bi,vk),G(bi,vmin′)表示G(bi,vk)中区块最小总协助概率(最小值),对应vmin′故障;因此加入节点vj后的区块最小总协助概率增益为:
ΔG(bi,vj)=S(bi,vj,vmin)-G(bi,vmin′) (8)
因此我们的优化目标是在满足区块bi存储成本约束θ(bi)的情况下,为区块bi找到节点vj,使区块最小总协助概率增益ΔG(bi,vj)最大化。
根据上述思想,基于区块协助概率增益的节点选择算法的具体步骤如下:首先初始化区块bi的节点选择集A(bi)和在vk发生故障时区块bi加入节点vj后总协助概率S(bi,vj,vk)(行1);计算在vk发生故障时区块bi对节点vj的区块协助概率t(bi,vj,vk)(行2-5);初始化区块bi未选择节点vj的当前区块总协助概率G(bi,vk)、加入节点vj后区块最小总协助概率增益ΔG(bi,vj)、在vmin′故障时区块最小总协助概率G(bi,vmin′)、判断是否还存在满足区块的节点变量q、以及遍历节点集V′(行6);当V′为空则结束循环(行7);遍历V′中每个节点(行8);如果r(bi,vj)没有超过限制θ(bi)(行9),则计算加入节点vj后,所有故障节点下的区块总协助概率S(bi,vj,vk)(行10),找到S(bi,vj,vk)中最小值S(bi,vj,vmin)(行11);计算加入节点vj后区块最小总协助概率增益ΔG(bi,vj),标记V′中存在区块最小总协助概率增益,使q置于1(行12);判断若q=0,表示不存在增益,结束循环(行13);若存在增益,查找ΔG(bi,vj)中拥有最大增益的节点vmax(行15);更新每个节点故障时加入了vmax的区块总协助概率G(bi,vk)(行16);找到G(bi,vk)中最小的故障场景vmin′下的区块总协助概率G(bi,vmin′)(行17);更新计算参数q,A(bi)、θ(bi)、V′(行18-19);计算所有区块的最小总协助概率G(行20)。
时间复杂度分析:行2至行5需要计算每个区块在不同故障场景下对节点的区块协助概率O(mn3),行7遍历节点集V′的时间复杂度为O(n),行8考虑节点集V′中每个节点加入后的区块最小总协助概率增益O(n),行10表示加入vj后计算每个节点故障的区块总协助概率增益O(n),行11按照故障节点的不同查找S(bi,vj,vk)中最小值S(bi,vj,vmin)O(n),行16更新节点vmax加入后每个场景的区块总协助概率G(bi,vk)O(n),行17根据不同故障节点找到G(bi,vk)中最小区块总协助概率G(bi,vmin′)O(n),因此整个算法总时间复杂度O(mn3)。
基于区块协助概率增益的节点选择算法的具体例子:给定节点集V={v1,v2,v3,v4,v5},假设节点集V中节点存储区块b1的淘汰率分别为{40%,30%,60%,35%,50%},以及存储区块b1的成本分别为{5,4,2,3,4},区块b1在群内存储成本限制θ(b1)=11。根据以上数据,首先计算不同节点发生故障时节点存储区块b1的协助概率,计算后的数据结果如表1所示。
第一次选择节点时,所有节点的区块最小总协助概率S(b1,v1,vmin)=0,对于任意节点的增益ΔG(b1,vj)=0,所以我们选择节点v1存储区块b1,更新不同节点故障时的总协助概率G(b1,vk),其中最小的是G(b1,v1)=0,更新剩余存储成本限制θ(b1)=6和选择结果集A(b1)={v1},如图2中的step1过程。
第二次我们考虑其他节点为当前最小总协助概率G(b1,vmin)带来的增益ΔG(b1,vj),其增益分别为ΔG(b1,v2)=29%,ΔG(b1,v3)=15.3%,ΔG(b1,v4)=28%,ΔG(b1,v5)=20.8%,选择增益最大的节点v2,且v2满足剩余存储成本容量限制,更新选择结果集A(b1)={v1,v2},更新加入v2后的不同节点故障时的区块总协助概率G(b1,vk),其中最小的是G(b1,v2)=29%,更新剩余存储成本限制θ(b1)=2,如图2中的step2过程。
第三次我们得到最小总协助概率增益最大的是节点v4,ΔG(b1,v4)=32.5%,但是节点v4和节点v5的存储成本超过了区块b1剩余存储成本限制,因此只有节点v3可以加入A(b1),A(b1)={v1,v2,v3},更新G(b1,vk),其中最小的是G(b1,v2)=45.7%,更新剩余存储成本限制θ(b1)=0,如图2中的step3过程。因此当只有一个区块b1时,所有区块的最小总协助概率G=G(b1,v2)=45.7%,区块选择节点集为A(b1)={v1,v2,v3}。
表1.节点发生故障时节点存储区块b1的协助概率(保留1位)
t | <![CDATA[v<sub>1</sub>故障]]> | <![CDATA[v<sub>2</sub>故障]]> | <![CDATA[v<sub>3</sub>故障]]> | <![CDATA[v<sub>4</sub>故障]]> | <![CDATA[v<sub>5</sub>故障]]> |
<![CDATA[b<sub>1</sub>→v<sub>1</sub>]]> | 0 | 29% | 23% | 28% | 25% |
<![CDATA[b<sub>1</sub>→v<sub>2</sub>]]> | 34% | 0 | 29% | 35% | 31.5% |
<![CDATA[b<sub>1</sub>→v<sub>3</sub>]]> | 15.3% | 16.7% | 0 | 16% | 14% |
<![CDATA[b<sub>1</sub>→v<sub>4</sub>]]> | 30.3% | 32.5% | 26% | 0 | 28.2% |
<![CDATA[b<sub>1</sub>→v<sub>5</sub>]]> | 20.8% | 22.5% | 17.5% | 21.7% | 0 |
区块选择节点方案二:基于区块协助概率增益的节点选择方案具体步骤及案例如下:
在方案一中,我们考虑区块选择节点后的区块总协助概率,找到使区块最小总协助概率增益ΔG(bi,vj)最大的节点,但是没有考虑到节点存储区块的成本,因为区块选择协助概率高的节点,可能存储此区块的成本同样也高,由于区块在节点群中具有存储成本的限制θ(bi),因此我们需要从单位成本的角度考虑问题。为了优化算法1的不足,我们定义区块在单位成本下的协助概率,即节点vk发生故障时,区块bi选择节点vj的单位成本协助概率为:
因此基于存储成本的节点选择算法思想是区块每次选择节点时,优先考虑区块总协助概率最小的故障场景fmin=1,即在vmin故障时,区块总协助概率最低;因此在满足区块bi存储成本限制θ(bi)的条件下,选择vmin故障场景中单位成本协助概率u(bi,vj,vk)最高的节点vmax,从而提高所有区块的最小总协助概率。
根据上述思想,基于存储成本的节点选择算法的具体步骤如下:首先初始化区块bi的节点选择集A(bi)和在vk发生故障时区块bi的总协助概率G(bi,vk)(行1),初始化区块总协助概率最小的故障节点vmin,计算在节点vk故障下节点vj存储区块bi的协助概率t(bi,vj,vk)以及区块的单位成本协助概率u(bi,vj,fk)(行3-7),初始化节点集V′(行8),当节点集V′为空则结束循环(行9),每次循环,选择在vmin发生故障时,u(bi,vj,fmin)最大的节点vmax(行10),如果节点vmax存储成本r(bi,vmax)没有超过限制θ(bi)(行11),更新加入vmax后每个故障场景的区块总协助概率G(bi,vk)(行12),找到更新后区块总协助概率最小的故障节点vmin,更新区块存储成本θ(bi)(行13),区块bi选择节点vmax(行14),将vmax从节点集V′中删除(行15),选择区块总协助概率G(bi,vk)中最小总协助概率G(bi,vmin)(行16),计算所有区块的最小总协助概率G(行17)。
时间复杂度分析:行2至行7需要计算在节点vk故障下节点vj存储区块bi的协助概率O(mn3),行9遍历节点集V′需要的时间开销为O(n),行10查找vmin发生故障时区块协助概率u(bi,vj,vmin)最大的节点vmaxO(n),行11计算加入节点vmax后每个节点故障时的区块总协助概率O(n),行13中选择区块总协助概率最差的故障节点vminO(n),行16查询最小G(bi,vk),存在n个故障节点情况,时间复杂度为为O(n),因此算法总时间复杂度为O(mn3)。
基于存储成本的节点选择算法的具体例子:我们继续使用算法1中的模拟数据,首先计算不同节点发生故障时节点存储区块b1的协助概率(表1),通过节点存储区块b1的成本计算单位成本协助概率,具体数据如表2。首先默认v1发生故障时的区块总协助概率最小;当v1发生故障时,单位成本协助概率最大的是节点v4,具体是u(b1,v4,v1)=10.10%,v4存储区块b1的成本r(b1,v3)=3,满足θ(b1),更新选择结果集A(b1)={v4}和当前不同节点故障时的总协助概率G(b1,vk),其中最小的是G(b1,v4)=0,我们将v4设置为vmin,表示当前v4发生故障的情况下区块总协助概率最小,更新剩余存储成本限制θ(b1)=8。
由上一段可知,vmin是节点v4,因此当v4发生故障时,在剩余节点V-A(b1)中单位成本协助概率最大的是节点v2,具体为u(b1,v2,v4)=8.75%,且c(b1,v2)满足θ(b1),更新A(b1)={v4,v2}和G(b1,vk),其中最小的是G(b1,v2)=32.5%,我们将v2设置vmin,更新剩余存储成本限制θ(b1)=4。第三次我们考虑v2发生故障时的总协助概率,对于节点v1、节点v3和节点v5,其中单位成本协助概率最大的是节点v3,具体是u(b1,v3,v2)=8.35%,且c(b1,v3)刚好满足θ(b1),更新A(b1)={v4,v2,v3}和G(b1,vk),G(b1,vk)中最小的是G(b1,v2)=49.2%,将v2设置vmin,更新剩余存储成本限制θ(b1)=2。此时节点v1和节点v5的存储成本都超过θ(b1),结束节点选择。区块b1的最小总协助概率为G=G(b1,v2)=49.2%,结果集为A(b1)={v4,v2,v3}。具体步骤如图3所示。
表2.节点发生故障时节点存储区块b1的单位成本协助概率(保留2位)
u | <![CDATA[v<sub>1</sub>故障]]> | <![CDATA[v<sub>2</sub>故障]]> | <![CDATA[v<sub>3</sub>故障]]> | <![CDATA[v<sub>4</sub>故障]]> | <![CDATA[v<sub>5</sub>故障]]> |
<![CDATA[b<sub>1</sub>→v<sub>1</sub>]]> | 0 | 5.80% | 4.60% | 5.60% | 5.00% |
<![CDATA[b<sub>1</sub>→v<sub>2</sub>]]> | 8.50% | 0 | 7.25% | 8.75% | 7.88% |
<![CDATA[b<sub>1</sub>→v<sub>3</sub>]]> | 7.65% | 8.35% | 0 | 8.00% | 7.00% |
<![CDATA[b<sub>1</sub>→v<sub>4</sub>]]> | 10.10% | 10.80% | 8.67% | 0 | 9.40% |
<![CDATA[b<sub>1</sub>→v<sub>5</sub>]]> | 5.20% | 5.62% | 4.38% | 5.43% | 0 |
区块选择节点方案三:基于区块协助概率增益的节点选择方案具体步骤及案例。如下:
对于方案一和方案二,区块每次选择节点需要考虑不同故障节点下的区块协助概率,每次区块选择节点后,所有故障节点情况下的区块协助总概率G(bi,vk)需要重新计算。为了降低计算开销,我们将备选节点在不同节点故障下区块协助概率取平均值,从而备选节点只有一个区块平均协助概率,在存储成本的限制θ(bi)下,区块只需要考虑平均协助概率最小的节点即可。我们将区块bi平均协助概率定义为z(bi,vj)。下面给出z(bi,vj)的具体计算过程。
其中t(bi,vj,vk)表示当节点vk发生故障时,节点vj存储区块bi的协助概率;接下来对所有节点故障下的t(bi,vj,vk)取均值:
展开t(bi,vj,vk):
通过化简可知:
为了得到最优的结果,我们利用算法2的思想,考虑单位成本下的区块平均协助概率为:
根据上述思想,基于故障节点的节点选择算法的具体步骤如下:首先初始化区块bi的节点选择集A(bi)和在vk发生故障时区块bi的总协助概率G(bi,vk)(行1),计算节点vj存储区块bi在单位成本下的平均协助概率(行2-4)对节点按照大小降序排序得到有序节点集V′(行5),遍历节点集V′(行6),当前节点vj存储区块bi的成本没有超过限制θ(bi)时(行7),区块bi选择节点vj,更新区块资源量限制θ(bi)(行8),通过节点选择集A(bi),计算区块bi所选的节点在故障节点vk中的总协助概率G(bi,vk)(行9),找到区块总协助概率G(bi,vk)中最小总协助概率G(bi,vmin)(行10),计算所有区块的最小总协助概率G(行11)。
时间复杂度分析:行2遍历所有区块的时间复杂度为O(m),行3至行4需要计算每个节点在单位成本下的区块平均协助概率的因此时间复杂度为O(n2),行5对节点按照的大小降序排序,其时间复杂度为O(n log n),行6遍历有序节点集V′的时间复杂度为O(n),行9针对每个发生故障的节点,计算在当前故障节点中所选节点集A(bi)的区块协助概率之和O(n2),因此算法的总时间复杂度为O(mn2)。
基于故障节点的节点选择算法的具体例子:我们模拟的数据继续采用算法1的数据,在算法3中首先我们计算不同节点存储区块b1的单位成本区块平均协助概率分别为 通过对单位成本区块平均协助概率进行按大到小排序得到有序节点集V′={v4,v2,v3,v1,v5},对有序节点集V′按顺序选择节点,所选节点集A(b1)中的节点存储区块bi成本之和需要小于群内区块bi存储成本限制,所以满足以上条件的节点为r(b1,v4)+r(b1,v2)+r(b1,v3)=9<11,因此A(b1)={v4,v2,v3},通过节点集A(b1),计算每个节点发生故障时区块总协助概率分别为G(b1,v1)=79.6%,G(b1,v2)=49.2%,G(b1,v3)=55.0%,G(b1,v4)=51.0%,G(b1,v5)=73.7%;找到其中最小值为G(b1,v2)=49.2%。
通过以上计算,我们可知区块b1最后的选择结果为A(b1)={v4,v2,v3},它们在节点v2发生故障时,对区块b1总协助概率为G(b1,v2)=49.2%,在本例中,我们只考虑一个区块,因此G=G(b1,v2)=49.2%。在图4中展示了基于故障节点的节点选择过程。
在以上算法中,我们给出了区块选择节点的具体三种方法,其中我们使用的区块集合B是m个区块组成的完整区块链副本,这m个区块表示当前区块总数。但在区块链的技术中,区块数量是动态增加的,每隔一段时间新增的数据将会被打包成新块在区块链网络中广播。因此当节点群接收到新区块bnew时,给定新区块的成本限制θ(bnew),通过上述三种算法任意一种将新区块bnew存放到不同节点中去。
下面将展开步骤7进行详细说明:给出节点群内部动态节点的执行案例。
在我们的问题定义中,节点群是由n个节点构建的集合,这些节点参与构建节点群能够互相协作,减少自身对区块的存储,从而降低存储成本。在上述方案中节点个数是固定的,考虑到实际情况下,群内节点是动态的存在,当节点群正常运行时,假如新节点vnew加入群中,我们需要对新节点vnew进行区块分配,从提高区块最小总协助概率(即优化目标)。
动态节点方案一:节点动态新增方案具体步骤及案例如下:
不同的区块对新节点存在不同的存储成本,设新节点vnew存储区块bi的成本为c(bi,vnew),A(bi)表示在新节点没有加入时区块bi选择的节点集合,θ(bi)表示区块bi当前剩余成本。
新节点的加入并不能提高区块bi存储成本限制,因此我们检查新节点vnew存储区块bi的成本c(bi,vnew)是否超过剩余成本θ(bi)。如果没有超过,新节点vnew存储区块bi将直接提高最小总协助概率增益;
如果超过了成本限制θ(bi),我们需要考虑将vnew替换已存储区块bi的节点vj,即节点vj不再存储区块bi,由新节点vnew来存储。因此在满足c(bi,vnew)≤θ(bi)+c(bi,vj)的条件下,E(bi,vmin)表示vnew替换vj的区块bi后的最小协助概率,G(bi,vmin)表示替换区块之前的最小协助概率,ΔGj=E(bi,vmin)-G(bi,vmin)表示vnew替换vj的区块bi后的增益,如果ΔGj大于0,则表示vnew替换vj中的区块bi将会提高当前最小协助概率,根据优化目标,我们需要找到ΔGj>0中最大增益对应的节点vex,将vnew替换掉vex的区块bi。
根据上述思想,节点动态新增算法的具体步骤为:首先初始化增益集ΔGj,替换节点vex,最大增益Gmax,更新节点集V(行1);更新节点vnew加入后的所有节点的区块协助概率t(bi,vj,vk)(行2),考察每个区块是否能加入新节点vnew(行3),如果新节点vnew存储区块bi的成本c(bi,vnew)没有超过剩余成本限制θ(bi),直接将区块bi加入新节点vnew(行4-5),否则进行区块替换,首先计算当前区块bi分配节点集A(bi)在当前不同节点故障下的区块总协助概率G(bi,vk),vk表示故障节点,找到G(bi,vk)中最小总协助概率G(bi,vmin)(行6-8),遍历A(bi)中所有节点(行9),在满足区块存储成本限制下(行10),计算替换vj的区块bi后节点vk故障时的区块总协助概率E(bi,vk),找到最小总协助概率E(bi,vmin),计算替换后的增益ΔGj(行11-15),找到增益ΔGj大于0中的最大增益Gmax以及对应节点vex(行16),如果存在节点vex,删除节点集A(bi)中的节点vex,将vnew加入节点集A(bi)(行17)。
时间复杂度分析:行2更新所有节点的区块协助概率的时间复杂度为O(m(n+1)2),行3考察每个区块是否可以加入新节点vnew的时间复杂度为O(m),行7计算区块总协助概率G(bi,vk)的时间复杂度为O((n+1)2),行8查找区块总协助概率G(bi,vk)中最小总协助概率G(bi,vmin)的时间复杂度为O(n+1),行9遍历节点集A(bi)的时间复杂度为O(n),行12当新节点vnew替换节点vj中的区块bi后,重新计算不同节点发生故障时的区块总协助概率的时间复杂度为O(n+1),行13查找E(bi,vk)中最小总协助概率E(bi,vmin)的时间复杂度为O(n+1),因此总时间复杂度为O(m(n+1)2)。
节点动态新增算法例子:我们继续使用算法1的模拟数据以及分配结果A(b1)={v1,v2,v3},θ(b1)=0。为了简化例子的复杂性,我们依然考虑只有一个区块b1的具体分配。设新节点vnew存储区块b1的成本开销为c(b1,vnew)=4,由于存在新节点的加入,我们需要更新所有节点的区块协助概率,具体数据如表3。通过A(b1)={v1,v2,v3}可以计算出不同节点故障下的区块总协助概率最小的是45%,对应节点v2发生故障。对于节点v1,其c(b1,v1)=5,所以c(b1,v1)+θ(b1)>c(b1,vnew),因此vnew可以替换v1中的区块b1,通过行11-15的计算,E(b1,v2)=45%,我们可知ΔG1=0,不满足替换条件。至于节点v2,其c(b1,v2)=4,所以c(b1,v2)+θ(b1)>c(b1,vnew),因此vnew可以替换v2中的区块b1,通过行11-15的计算,E(b1,v2)=42%最小,我们可知ΔG2=-2%,不满足替换条件。至于节点v3,c(b1,v3)=2,不满足成本约束条件。所以区块b1无法存入新节点vnew。
表3.新节点加入后区块b1的协助概率(不保留小数)
t | <![CDATA[v<sub>1</sub>故障]]> | <![CDATA[v<sub>2</sub>故障]]> | <![CDATA[v<sub>3</sub>故障]]> | <![CDATA[v<sub>4</sub>故障]]> | <![CDATA[v<sub>5</sub>故障]]> | <![CDATA[v<sub>new</sub>故障<!-- 14 -->]]> |
<![CDATA[b<sub>1</sub>→v<sub>1</sub>]]> | 0 | 28% | 23% | 27% | 25% | 26% |
<![CDATA[b<sub>1</sub>→v<sub>2</sub>]]> | 32% | 0 | 29% | 33% | 31% | 32% |
<![CDATA[b<sub>1</sub>→v<sub>3</sub>]]> | 16% | 17% | 0 | 16% | 15% | 16% |
<![CDATA[b<sub>1</sub>→v<sub>4</sub>]]> | 29% | 31% | 26% | 0 | 28% | 29% |
<![CDATA[b<sub>1</sub>→v<sub>5</sub>]]> | 21% | 22% | 18% | 21% | 0 | 21% |
<![CDATA[b<sub>1</sub>→v<sub>new</sub>]]> | 26% | 28% | 23% | 27% | 25% | 0 |
动态节点方案二:节点动态删除方案具体步骤及案例如下:
上述介绍了新节点加入到群内的区块分配方案,既然有节点的加入,也会有节点的离开。虽然我们有考虑节点故障的情况,但是节点故障或者离线并不是永久离开群内,对于节点主动离开的或者节点群强制节点离开的情况,我们称这种情况为节点动态删除。
假设节点vdel从节点群中删除,其区块集Q(vdel)中所有的区块也将会被删除,我们并不担心会有区块发生丢失,只是会降低节点vdel存储的区块bi在节点群中的区块总协助概率。由于节点vdel已经删除,因此节点vdel存储的区块总存储成本会下降。为了尽可能减少区块bi总协助概率降低,在满足θ(bi)+c(bi,vdel)≥c(bi,vj)以及节点vj并未存储区块bi的条件下,我们可以将区块bi分配给节点vj,如果存在多个节点满足以上条件,根据优化目标,我们利用算法2的核心思想,区块bi尽可能选择单位成本协助概率u(bi,vj,vk)更高的节点。下面我们给出节点动态删除算法具体步骤。
首先更新节点集V(行1),遍历节点vdel的区块集(行2),更新删除节点vdel后的单位成本协助概率,更新区块bi的剩余存储成本θ(bi),以及区块bi选择的节点集A(bi)(行3-4),更新当前区块bi分配节点集A(bi)在当前不同节点故障下的区块总协助概率G(bi,vk),找到G(bi,vk)中最小的区块总协助概率对应的故障节点vmin(行5-6),初始化未分配区块bi的节点集V′(行7),当V′为空时,结束循环(行8)。每次循环找到vmin发生故障时单位成本协助概率u(bi,bj,vmin)最高的节点vmax,vmax属于节点集V′(行9),对于满足c(bi,vmax)≤θ(bi)的节点vmax(行10),更新加入vmax后,不同节点故障下的区块总协助概率G(bi,vk),重新寻找最小总协助概率的故障节点vmin,将vmax加入A(bi),更新存储成本限制θ(bi)(行11-13),将vmax从节点集V′中删除(行14)。
时间复杂度分析:行2遍历节点vdel的区块集的时间复杂度为O(m),行3更新单位成本协助概率所用的时间复杂度O((n-1)2),行5更新区块总协助概率G(bi,vk)的时间复杂度为O((n-1)2),行6找到G(bi,vk)中最小的区块总协助概率对应的故障节点vmin的时间复杂度为O(n-1),行8遍历节点集V′的时间复杂度为O(n-1),行9查找vmin发生故障时u(bi,vj,vmin)最大的节点vmax时间复杂度为O(n-1),行11加入节点vmax更新每个故障节点的总协助概率为O(n-1),行12找到行11中更新后的最小总协助概率的时间复杂度为O(n-1),因此算法总复杂度为O(m(n-1)2)。
节点动态删除算法的例子:对于节点动态删除算法的数据和结果集,我们使用算法1的模拟数据和算法2的分配结果集A(b1)={v4,v2,v3},θ(b1)=2。同样只考虑区块b1的具体方案,在本例中删除的节点为v2。节点v2被删除后,更新区块b1方案下的单位成本协助概率u(b1,vj,vk),具体计算数据如表4。由于节点v2的存储成本为c(b1,v2)=4,因此更新后剩余存储成本θ(b1)增加为6,分配结果集A(b1)={v4,v3}。通过对结果集A(b1)的计算,我们可知当前最小的区块总协助概率为18.0%,对应的是节点v4发生故障时的区块总协助概率,相比算法2的结果下降了31.2%。根据算法5可知,当节点v4发生故障时,节点v1的u(b1,v1,v4)=6.6%,节点v5的u(b1,v5,v4)=6.3%,其中节点v1的区块单位协助概率是最大的且c(b1,v1)=5>θ(b1),因此我们选择节点v1存储区块b1,最终结果集A(b1)={v4,v3,v1}。
表4.删除节点v2后的区块b1的单位成本协助概率(保留1位)
实现上述实施例的区块链网络节点群可容错协助存储机制适用于目前物联网设备,要求物联网设备拥有计算、存储、通信等基础功能,当设备或节点运行时,执行上述实施例中的区块链网络节点群可容错协助存储机制,例如,执行以上步骤1至步骤7的内容,其中步骤6中可选任选一种启发式方案实施。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是在本发明的发明构思下,利用本发明说明书及附图内容所作的等效结构变换,或直接/间接运用在其他相关的技术领域均包括在本发明的专利保护范围内。
Claims (9)
1.一种基于物联网设备的区块链网络节点群可容错协助存储机制,其特征在于,包括以下步骤:
步骤1、使用物联网设备作为节点搭建节点群,所有节点协同运行同一个区块链副本;
步骤2、根据区块占用节点的存储资源、CPU的计算资源以及通信资源,计算节点存储区块的成本;
步骤3、通过系统对区块的总访问次数,量化区块对节点群的重要性,为每个区块设置存储成本限制;
步骤4、节点需要将对自身不重要的原区块进行淘汰,通过节点对区块的需求量化淘汰率,从而进一步根据淘汰率计算节点存储区块带来的可协助概率;
步骤5、构建数学模型,给出优化目标以及约束条件,具体如下:
设由m个区块组成的完整区块链副本B={b1,b2,…,bm},一组群内节点集V={v1,v2,…,vn},x(bi,vj)表示决策变量,区块bi选择节点vj存储,即决策变量x(bi,vj)=1;区块bi被节点vj存储的成本为c(bi,vj),区块bi在群内的总存储成本不超过其成本限制θ(bi);节点选择问题是为区块选择节点存储,但同一节点不能多次存储同一区块;表示当节点vk发生故障时,所选择的节点能够给其他节点的提供区块bi协助的概率之和(即区块总协助概率),表示找到一个vk,当它发生故障时,所选节点提供区块协助概率之和最小;因此可知vk发生故障时,对群内区块协助概率影响是最大的,所以我们需要找到一种分配方式使在vk发生故障下,让最小的区块总协助概率最大化;即优化目标是在满足区块被节点存储的总成本不超过存储成本上限θ(bi)的条件下,找到区块总协助概率最差的故障节点vk,并选择一种分配方式最大化此故障节点下的区块总协助概率:
约束条件:区块bi选择不同节点存储产生的成本总和不超过节点群对区块bi的存储成本限制;区块bi分配给同一节点最多一次,具体公式如下;
步骤6、通过设计了三种启发式方案实现每个区块对群中节点的选择;
步骤7、考虑到实际场景中节点群内节点是动态的,因此基于约束条件的前提下,设计对应目标函数的两种节点动态新增删除方案。
2.根据权利要求1所述的基于物联网设备的区块链网络节点群可容错协助存储机制,其特征在于,所述节点需要将对自身不重要的原区块进行淘汰,通过节点对区块的需求量化淘汰率,包括:
数据打包成新的区块时,节点群会通过区块链网络接收到新区块,因此群内节点存储区块的数量是不断增长的;依照物联网设备或节点的低容量,低计算资源等特性,让节点对自身不重要的原区块进行淘汰,通过节点对区块的需求量化淘汰率,提高区块链技术应用的可扩展性。
3.根据权利要求1所述的基于物联网设备的区块链网络节点群可容错协助存储机制,其特征在于,所述为每个区块设置存储成本限制,让区块合理选择节点存储区块,避免造成资源浪费,节省节点存储带来的成本开销。
4.根据权利要求1所述的基于物联网设备的区块链网络节点群可容错协助存储机制,其特征在于,所述节点vk发生故障为节点群中任意一个节点发生故障;因为在实际组建的节点群中,节点难免发生故障或离线,本发明考虑节点群发生故障的场景时的总协助概率,通过目标函数以及约束条件,为区块选择合适的节点集存储,最优化每个区块的总协助概率;以至于节点发生故障离线的时候,节点群中的正常节点依旧可以对整个区块链副本任意一个区块进行协助,对整个节点群正常运行提供了较高的保障,提高了节点群的稳定性。
5.根据权利要求2所述的基于物联网设备的区块链网络节点群可容错协助存储机制,其特征在于,所述物联网设备需满足计算、存储、通信等基本能力。
6.根据权利要求1所述的基于物联网设备的区块链网络节点群可容错协助存储机制,其特征在于,所述区块协助概率t(bi,vj,vk)包括以下计算流程:
7.根据权利要求4所述的基于物联网设备的区块链网络节点群可容错协助存储机制,其特征在于,所述通过目标函数以及约束条件,为区块选择合适的节点集存储之前,需要对数学模型分析,将最大最小背包问题Max-min knapsack problem(MMKP)规约到本发明中数学模型中的节点选择问题,从而证明节点选择问题是NP-hard。
8.根据权利要求1所述的基于物联网设备的区块链网络节点群可容错协助存储机制,其特征在于,所述设计了三种启发式方案实现每个区块对群中节点的选择,具体包括:
从节点存储区块为区块总协助概率带来的增益、节点存储区块在单位成本下的区块单位协助概率以及在不同节点故障时节点对区块的平均协助概率这三种角度,分别提出了基于区块协助概率增益的节点选择启发式方案,基于存储成本的节点选择启发式方案和基于故障节点的节点选择启发式方案。
9.根据权利要求1所述的基于物联网设备的区块链网络节点群可容错协助存储机制,其特征在于,所述两种节点动态新增删除方案包括:
基于目标函数和约束条件,针对群内实际场景中的设备或节点的动态变化,提出了节点动态新增方案和节点动态删除方案。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211614423.3A CN116016540A (zh) | 2022-12-15 | 2022-12-15 | 一种基于物联网设备的区块链网络节点群可容错协助存储机制 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211614423.3A CN116016540A (zh) | 2022-12-15 | 2022-12-15 | 一种基于物联网设备的区块链网络节点群可容错协助存储机制 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116016540A true CN116016540A (zh) | 2023-04-25 |
Family
ID=86028984
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211614423.3A Pending CN116016540A (zh) | 2022-12-15 | 2022-12-15 | 一种基于物联网设备的区块链网络节点群可容错协助存储机制 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116016540A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117424912A (zh) * | 2023-12-14 | 2024-01-19 | 湖北省楚天云有限公司 | 基于区块链的物联网节点集群数据存储方法、系统及介质 |
-
2022
- 2022-12-15 CN CN202211614423.3A patent/CN116016540A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117424912A (zh) * | 2023-12-14 | 2024-01-19 | 湖北省楚天云有限公司 | 基于区块链的物联网节点集群数据存储方法、系统及介质 |
CN117424912B (zh) * | 2023-12-14 | 2024-04-05 | 湖北省楚天云有限公司 | 基于区块链的物联网节点集群数据存储方法、系统及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liu et al. | A communication efficient collaborative learning framework for distributed features | |
Liu et al. | Fedbcd: A communication-efficient collaborative learning framework for distributed features | |
US9805140B2 (en) | Striping of directed graphs and nodes with improved functionality | |
CN109983456B (zh) | 存储器内密钥范围搜索方法和系统 | |
US11971880B2 (en) | Techniques for in-memory data searching | |
Li et al. | FedHiSyn: A hierarchical synchronous federated learning framework for resource and data heterogeneity | |
CN115755954B (zh) | 巡检路径规划方法、系统、计算机设备及存储介质 | |
CN116016540A (zh) | 一种基于物联网设备的区块链网络节点群可容错协助存储机制 | |
Cao et al. | Collaborative attributes and resources for single-stage virtual network mapping in network virtualization | |
Spasojevic et al. | Voting as the optimal static pessimistic scheme for managing replicated data | |
Kashef et al. | Handling Large-Scale Data Using Two-Tier Hierarchical Super-Peer P2P Network | |
US10599614B1 (en) | Intersection-based dynamic blocking | |
CN113902127A (zh) | 一种区块链赋能的异步联邦学习方法 | |
CN111324429A (zh) | 一种基于多代血统参考距离的微服务组合调度方法 | |
CN117407921A (zh) | 基于必连和勿连约束的差分隐私直方图发布方法及系统 | |
CN112699134A (zh) | 基于图剖分的分布式图数据库的存储与查询方法 | |
CN110867224B (zh) | 用于大规模脑病历分割的多粒度Spark超信任模糊方法 | |
CN110175172B (zh) | 基于稀疏二分图的极大二分团并行枚举方法 | |
CN107908713A (zh) | 一种基于Redis集群的分布式动态杜鹃过滤系统及其过滤方法 | |
CN116647879A (zh) | 基于双智能体深度强化学习的多类型任务卸载系统及方法 | |
Ho et al. | Adaptive communication for distributed deep learning on commodity GPU cluster | |
CN111369052B (zh) | 简化路网ksp优化算法 | |
CN113052629B (zh) | 基于cecu体系智能算法模型的网络用户画像方法 | |
CN110597809A (zh) | 一种支持树状数据结构的一致性算法系统及其实现方法 | |
Adhikari et al. | Fast Transaction Scheduling in Blockchain Sharding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |