CN115811519A - 一种基于联盟链的体检档案存储方法、装置、设备及介质 - Google Patents
一种基于联盟链的体检档案存储方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN115811519A CN115811519A CN202211431635.8A CN202211431635A CN115811519A CN 115811519 A CN115811519 A CN 115811519A CN 202211431635 A CN202211431635 A CN 202211431635A CN 115811519 A CN115811519 A CN 115811519A
- Authority
- CN
- China
- Prior art keywords
- node
- physical examination
- nodes
- credit value
- archive
- 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
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明涉及区块链技术领域及数字医疗领域,公开了一种体检档案存储方法、装置、设备及介质,方法包括:从联盟链中的多个节点中确定超级节点;通过超级节点接收客户端发送的携带有体检档案的档案存储请求;将档案存储请求向多个从属节点进行广播,使多个从属节点获得所述体检档案;通过超级节点接收多个从属节点对体检档案进行共识而生成的反馈信息;当基于多个反馈信息识别出同意存储的共识结果后,将体检档案存储到联盟链中;在本发明中,不再通过所有节点互相通信来发送确认消息,而是将所有从属节点的共识消息直接发送至超级节点,由超级节点来负责消息确认,当超级节点收集到2f+1消息时,即完成确认,大大降低了对网络带宽的消耗及整个过程的时间复杂度。
Description
技术领域
本发明涉及区块链技术领域及数字医疗领域,尤其涉及一种基于联盟链的体检档案存储方法、装置、设备及介质。
背景技术
为了给客户提供更好的服务,需要在HMO(Health Maintenance Organizations,健康维护组织)范畴中实现跨医疗机构的用户体检档案的存储,考虑到数据存储的安全性和不可篡改性,在跨医疗机构的用户体检档案的存储时使用联盟链链的技术进行数据存储。在联盟链存储中,集群能达成共识的办法,主要采用基于PBFT(Practical ByzantineFault Tolerance,拜占庭协定)的算法实现。
而现在基于PBFT算法实现的缺陷及不足主要如下:通信复杂度过高,可拓展性比较低,一般的***在达到100左右的节点个数时,性能下降非常快。
发明内容
本发明提供一种基于联盟链的体检档案存储方法、装置、计算机设备及介质,以解决现有技术中采用PBTF算法进行共识导致的性能下降快的技术问题。
第一方面,提供了一种基于联盟链的体检档案存储方法,所述方法包括:
从所述联盟链中的多个节点中确定超级节点;
通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求;
将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;
通过所述超级节点接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;
当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中。
于本发明一实施例中,所述从所述联盟链中的多个节点中确定超级节点,包括:
获取每一个节点的信用值;
根据所述每一个节点的信用值及超级节点的信用值分布范围判断所述节点是否为超级节点;
当所述节点的信用值在所述超级节点的信用值分布范围内,则所述节点为超级节点。
于本发明一实施例中,当基于所述多个反馈信息识别出不同意存储的共识结果后,所述方法还包括:
获取每一个节点的信用值;
根据所述每一个节点的信用值及恶意节点的信用值分布范围判断所述节点是否为恶意节点;
当所述节点的信用值在所述恶意节点的信用值分布范围内,则所述节点为恶意节点;
删除所述恶意节点。
于本发明一实施例中,通过以下公式计算所述节点的信用值:
节点的信用值计算公式为:
其中,NCi表示第i个节点的信用值,表示第i个节点的信用初始值;T(i)表示第i个节点的加减次数,RP(i)表示第i个节点最后获得的信用值,tpre表示上一次产生区块的时间,tcur表示当前产生区块的时间,其中,当节点完成一次共识,所述节点的信用值增加,当节点共识失败,所述节点的信用值减小。
于本发明一实施例中,若存在多个节点的信用值在超级节点的信用值范围内,则随机选择一个节点作为超级节点;或选择信用值最高的节点作为超级节点;或以节点加入联盟链的时间戳作为选择依据,将加入联盟链最早的节点作为超级节点。
于本发明一实施例中,同意存储的共识结果的获取方法包括:
获取所述超级节点接收到的表示验证通过的反馈信息的数量是否超过预设阈值;
在超过所述预设阈值的情况下,得到同意存储的共识结果。
于本发明一实施例中,所述对所述体检档案进行存储之后,还包括:
为所述体检档案建立目标索引,并发布所述目标索引,以使所述区块链联盟链中的各个节点将所述目标索引存储到关联各个节点的索引库中。
第二方面,提供了一种基于联盟链的体检档案存储装置,所述装置包括:
节点确定模块,用于从所述联盟链中的多个节点中确定超级节点;
第一接收模块,用于通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求;
广播模块,用于将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;
第二接收模块,用于通过所述超级节点接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;
存储模块,用于当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中。
第三方面,提供了一种计算机设备,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述基于联盟链的体检档案存储方法的步骤。
第四方面,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述基于联盟链的体检档案存储方法的步骤。
上述的基于联盟链的体检档案存储方法、装置、计算机设备及存储介质,所实现的方案中,可以从所述联盟链中的多个节点中确定超级节点;通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求;将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;通过所述超级节点接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中;在本发明中,不再通过所有节点互相通信来发送确认消息,而是将所有从属节点的共识消息直接发送至超级节点,由超级节点来负责消息确认,当超级节点收集到2f+1消息时,即完成确认。假设全网节点数为M,那么完成一次共识,需要Z次通信,Z=M(M-1)+2(M-1),当节点超过100时,对网络带宽的消耗及整个过程的时间复杂度将大量降低。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一示例性实施例示出的一种基于联盟链的体检档案存储方法的一应用环境示意图;
图2是本申请一示例性实施例示出的一种基于联盟链的体检档案存储方法的一流程示意图;
图3是本申请一示例性实施例示出的确定所述超级节点的方法的流程示意图;
图4是本申请一示例性实施例示出的在基于所述多个反馈信息识别出不同意存储的共识结果后的流程图;
图5是本申请一示例性实施例示出的一种基于联盟链的体检档案存储装置的一结构示意图;
图6是本申请一示例性实施例示出的计算机设备的一结构示意图;
图7是本申请一示例性实施例示出的计算机设备的另一结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供的一种基于联盟链的体检档案存储方法,可应用在如图1的应用环境中,其中,客户端通过有线网络或无线网络与服务端进行通信。应该理解,图1中的客户端和服务端的数目仅仅是示意性的。根据实际需要,可以具有任意数目的客户端和服务端。在本发明中,服务端可以作为联盟链中的一个节点,从所述联盟链中的多个节点中确定超级节点;通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求,并将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中。在本发明中,不再通过所有节点互相通信来发送确认消息,而是将所有从属节点的共识消息直接发送至超级节点,由超级节点来负责消息确认,当超级节点收集到2f+1消息时,即完成确认。假设全网节点数为M,那么完成一次共识,需要Z次通信,Z=M(M-1)+2(M-1),当节点超过100时,对网络带宽的消耗及整个过程的时间复杂度将大量降低。
其中,客户端可以但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备。服务端可以用独立的服务器或者是多个服务器组成的服务器集群,可以是提供各种服务的服务器,其可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)以及大数据和人工智能平台等基础云计算服务的云服务器,本处不对此进行限制。下面通过具体的实施例对本发明进行详细的描述。
本申请的实施例分别提出一种基于联盟链的体检档案存储方法、一种基于联盟链的体检档案存储装置、一种计算机设备、一种计算机可读存储介质,以下将对这些实施例进行详细描述。
请参阅图2,图2是本申请的一示例性实施例示出的一种基于联盟链的体检档案存储方法的流程图。该方法可以应用于图1所示的实施环境,并由该实施环境中的服务端具体执行。应理解的是,该方法也可以适用于其它的示例性实施环境,并由其它实施环境中的设备具体执行,本实施例不对该方法所适用的实施环境进行限制。
区块链作为一项新兴技术,是由分布式***、共识算法、密码学、点对点网络等多种技术深度融合实现的去中心化的分布式账本技术,提供了一种在去信任化的环境中进行信息和价值传递的可信通道。
就应用范围而言,区块链主要包括三种形式,分别是公有区块链、联盟区块链以及私有区块链。其中公有区块链是一种完全去中心化的交易***,无官方管理机构和中心服务器,节点按照***规则自由接入网络并基于共识机制开展工作,由于其本身没有管理机制和监督机制,任何人都可以参与公有区块链,并且访问链式结构的存储数据,因此存在区块链网络被攻击的风险,隐私性和安全性难以得到保障。联盟区块链有若干机构联合发起,新节点通过联盟的认可才能加入,主要应用于企业组织内部,由于只有特定允许的成员节点访问区块链网络,交易数据得以保护,安全性较强,因此可以很好的支持企业级应用程序。私有区块链是面向企业内部,节点数据有限且按照企业要求的***规则运作,由于其仅允许一个公司或者个人拥有对区块链执行记账或数据更新的写入权限,因此其本质与分布式存储的无大差别。
联盟区块链(简称联盟链),面向特定群体,只有经过授权的节点才可以加入特定的区块链网络。联盟链中节点需要实现认证注册,共识过程中通常不涉及加密,成员节点之间有共同的目标,但在维护校验数据等方面并不完全信任彼此。相对于公有链,联盟链节点之间通常有着良好的连接、较高的验证和确认速度、更快的出块时间、较低成本的***维护费用。联盟链可实现内部成员共同负责账本维护,同时注册机制可限制参与节点的行为,灵活权限处理,在一定程度上构建出了一个去中心、分布式的体系,摆脱了由唯一中心机构带来的单点故障等安全隐患,解决信任问题,可适用于金融、供应链、公益等应用场景。而共识算法作为联盟链中的关键技术,直接影响着联盟链的交易处理能力、可扩展性和安全性。
请参阅图2,图2为本申请一示例性的一种基于联盟链的体检档案存储方法的流程图,该体检档案存储方法至少包括步骤S210至步骤S250,详细介绍如下:
步骤S210,从所述联盟链中的多个节点中确定超级节点;
需要说明的是,在联盟链场景中,客户端通常不会与联盟链中的所有节点之间都存在网络连接。通常情况下,客户端可以和联盟链中的一个或几个节点之间预先建立好网络连接,该网络连接可以是可靠的网络连接。具体连接方式比如可以是基于传输控制协议(TCP,Transmission Control Protocol)的网络连接方式。在客户端有对一个或多个体检档案有存储需求时,可将携带有该一个或多个体检档案的存储请求发送给与其存在网络连接的节点。具体地,在本实施例中,选择一个节点作为超级节点来接收客户端发送的携带有体检档案的档案存储请求。
对于联盟链来说,每对体检档案进行一次存储,需要经过联盟链网络中所有节点的共识,每一次PBFT(Practical Byzantine Fault Tolerance,拜占庭容错算法)三段式共识过程都需要多次交互,通信次数多,时间复杂度高,共识效率严重下降,且联盟链网络中节点的数量越多,耗时也更久。且PBFT算法通过随机选择器从所有节点中选出超级节点,这种方式使得拜占庭节点(即恶意节点)也有担任超级节点的可能性,一旦恶意节点担任超级节点,将引起视图更换从而导致***性能大大降低,且影响共识结果,并给整个联盟链的交易安全带来极大的安全隐患,因此PBFT算法无法兼顾共识的高效性和***的安全性。为此,本实施例为避免通过随机选择出超级节点,提供了一种根据各节点的信用值确定所述超级节点的方法,请参阅图3,图3为本申请一示例性实施例示出的确定所述超级节点的方法的流程示意图,如图3所示,具体包括:
步骤S310,获取每一个节点的信用值;
信用值是评价节点在共识过程中的具体行为表现,通过信用分数的累积,多次顺利完成区块生成的节点将拥有更高的信用值,信用值越高的节点发生错误的可能性就越小,被信任的概率就越大,在下一轮被选取为超级节点中就占有一定的优势。
步骤S320,根据所述每一个节点的信用值及超级节点的信用值分布范围判断所述节点是否为超级节点;
由于联盟链中超级节点和从属节点,则首先需要确定超级节点和从属节点对应的信用值分布范围,不同类型的节点信用值分布范围不同。比如,超级节点的信用值分布范围为(0.8,1],而从属节点的信用值分布范围为[0,0.8]。需要说明的是,信用值的分布范围可以根据实际情况预先设定,本申请对此不作限定。
步骤S330,当所述节点的信用值在所述超级节点的信用值分布范围内,则所述节点为超级节点。
也就是说,若一个节点的信用值在(0.8,1]内,则该节点为超级节点,若一个节点的信用值在[0,0.8]内,则该节点为从属节点。
步骤S220,通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求;
在一实施例中,超级节点在接收到经客户端的档案存储请求之后,需要对档案存储请求是否正确进行校验。如果校验结果表征客户端档案存储请求不正确,表明客户端的请求为非法请求,则可以直接将其丢弃。如果校验结果表征档案存储请求正确,则向客户端发送档案存储请求的响应信息,以获得超级节点的验证结果。
步骤S230,将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;
超级节点在接收档案存储请求后,向所述链联盟链中所有剩余节点广播该档案存储请求,使所有节点都能获得该档案存储请求中携带的体检档案,大大提升了交易效率,扩展了共享容量。
在一实施例中,可以通过以下公式来计算节点的信用值:
其中,NCi表示第i个节点的信用值,表示第i个节点的信用初始值;T(i)表示第i个节点的加减次数,RP(i)表示第i个节点最后获得的信用值,tpre表示上一次产生区块的时间,tcur表示当前产生区块的时间,其中,当节点完成一次共识(成功产生和验证区块后),所述节点的信用值增加,当节点共识失败(故障或有恶意行为),所述节点的信用值减小。需要说明的是,在连续产生区块时,tpre与tcur之间的差值为0。
在一实施例中,若存在多个节点的信用值在超级节点的信用值范围内,则随机选择一个节点作为超级节点;或选择信用值最高的节点作为超级节点;或以节点加入联盟链的时间戳作为选择依据,将加入联盟链最早的节点作为超级节点。
举例来说,若有节点A、节点B、节点C三个节点的信用值分别为0.81、0.85、0.9,则均满足(0.8,1],在选择超级节点时,可以将节点A、节点B、节点C中的任意一个作为超级节点,或者由于节点C的信用值最高,选择节点C作为超级节点。若节点A加入联盟链的时间早于节点B加入联盟链的时间,而节点B加入联盟链的时间早于节点C加入联盟链的时间,因此,可以将节点A选择为超级节点。
步骤S240,接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;
这里,对所述体检档案进行共识可以理解为对所述体检档案进行校验,多个从属节点对体检档案进行验证生成多个反馈信息(验证结果),这时多个从属节点将各个的反馈信息发送发超级节点,由超级节点综合多个反馈信息来判断对体检档案的校验是否通过。
步骤S250,当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中。
在一实施例中,同意存储的共识结果的获取方法包括:获取所述超级节点接收到的表示验证通过的反馈信息的数量是否超过预设阈值;在超过所述预设阈值的情况下,得到同意存储的共识结果。
其中,该预设阈值可以为根据联盟链中的节点总数设置的一个合适的数量,比如该预设数量可为节点总数的90%。当接收到合适数量的节点的共识反馈信息后,即可以计算出共识结果,避免长时间的等待其中的一个或几个普通节点的反馈而导致上链共识运算效率过低。
超级节点在获取到的多个其他从属节点的共识反馈信息后,可以统计各种结果的数量,当识别出某一种校验结果的数量达到预设的共识达成共识阈值时,则说明形成了共识。在达成同意存储的共识后,可对体检档案进行存储。
具体地,当超级节点收集到2f+1个消息时,即完成确认,同意存储,f表示联盟链中拜占庭节点的数量。
在联盟链中,包括超级节点和从属节点,而从属节点包括恶意节点和普通节点。恶意节点可能会故意停止运行,也可能故意发送错误的信息阻碍正常的节点之间达成共识,因此,可以将恶意节点进行清除。请参阅图4,图4为本申请一示例性实施例示出的当基于所述多个反馈信息识别出不同意存储的共识结果后的方法,具体包括步骤S410~步骤S440:
步骤S410,获取每一个节点的信用值;
信用值是评价节点在共识过程中的具体行为表现,通过信用分数的累积,多次顺利完成区块生成的节点将拥有更高的信用值,信用值越高的节点发生错误的可能性就越小,被信任的概率就越大,信用值越低的节点发生错误的可能性就越大,被信任的概率就越小,若小于一定值后,将节点作为恶意节点。
步骤S420,根据所述每一个节点的信用值及恶意节点的信用值分布范围判断所述节点是否为恶意节点;
由于从属节点包括普通节点和恶意节点,则首先需要确定普通节点和恶意节点对应的信用值分布范围,不同类型的节点信用值分布范围不同。比如,普通节点的信用值分布范围为(0.2,0.8],而恶意节点的信用值分布范围为[0,0.2]。需要说明的是,信用值的分布范围可以根据实际情况预先设定,本申请对此不作限定。
步骤S430,当所述节点的信用值在所述恶意节点的信用值分布范围内,则所述节点为恶意节点;
也就是说,若一个节点的信用值在[0,0.2]内,则该节点为恶意节点,若一个节点的信用值在(0.2,0.8]内,则该节点为普通节点,普通节点可以参与到共识过程中。
步骤S440,删除所述恶意节点。
从联盟链中将恶意节点删除。
需要说明的是,一个恶意节点最开始可能并不是恶意节点。例如,根据节点初始信用值判断该节点为普通节点甚至超级节点,经多次作恶行为后信用值值减小,到一定时候信用值分数小于设定阈值,该节点将会被网络内定为不信任节点,即恶意节点,返回信息到联盟链内每个节点,再由超级节点处理删除该节点的请求,最终经交互后确认将该节点移出联盟链,这样可以减少网内的拜占庭节点从而提高算法的效率,降低无效的网络开销。
当然,若一个节点最开始为恶意节点,在完成共识后增大该节点的信用值,这样经过几次共识后,该节点最后的信用值可能大于设定阈值,达到普通节点的信用值分布范围,从而完成由恶意节点到普通节点的转换。
在一实施例中,所述对所述体检档案进行存储之后,还包括:
为所述体检档案建立目标索引,并发布所述目标索引,以使所述区块链联盟链中的各个节点将所述目标索引存储到关联各个节点的索引库中。
具体地,联盟链的节点会为体检档案建立索引并发布,联盟链的各个节点会维护一个索引库。联盟链中作为需求方的节点根据实际需求可以在自身维护的索引库中进行查询,基于查询得到的索引,可以进一步获得该索引对应的体检档案。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
可见,在上述方案中,通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求,并将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中;在本发明中,不再通过所有节点互相通信来发送确认消息,而是将所有从属节点的共识消息直接发送至超级节点,由超级节点来负责消息确认,当超级节点收集到2f+1消息时,即完成确认。假设全网节点数为M,那么完成一次共识,需要Z次通信,Z=M(M-1)+2(M-1),当节点超过100时,对网络带宽的消耗及整个过程的时间复杂度将大量降低。同时,在本方案中,当节点完成一次共识(成功产生和验证区块后),所述节点的信用值增加,当节点共识失败(故障或有恶意行为),所述节点的信用值减小,这样,一方面保证了恶意节点受到惩罚而诚实节点得到奖励,另一方面,实现了快速剔除网络中恶意节点的方法。从而提升了对网络中恶意节点的约束,快速创建诚实节点的话语权,实现了动态的网络监控。
在一实施例中,提供一种基于联盟链的体检档案存储装置,该基于联盟链的体检档案存储装置与上述实施例中基于联盟链的体检档案存储方法一一对应。如图5所示,该基于联盟链的体检档案存储装置,所述联盟链中的多个节点中包括超级节点和多个从属节点,所述装置包括:节点确定模块510、第一接收模块520、广播模块530、第二接收模块540、存储模块550。各功能模块详细说明如下:
节点确定模块510,用于从所述联盟链中的多个节点中确定超级节点;
需要说明的是,在联盟链场景中,客户端通常不会与联盟链中的所有节点之间都存在网络连接。通常情况下,客户端可以和联盟链中的一个或几个节点之间预先建立好网络连接,该网络连接可以是可靠的网络连接。具体连接方式比如可以是基于传输控制协议(TCP,Transmission Control Protocol)的网络连接方式。在客户端有对一个或多个体检档案有存储需求时,可将携带有该一个或多个体检档案的存储请求发送给与其存在网络连接的节点。具体地,在本实施例中,选择一个节点作为超级节点来接收客户端发送的携带有体检档案的档案存储请求。
第一接收模块520,用于通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求;
在一实施例中,超级节点在接收到经客户端的档案存储请求之后,需要对档案存储请求是否正确进行校验。如果校验结果表征客户端档案存储请求不正确,表明客户端的请求为非法请求,则可以直接将其丢弃。如果校验结果表征档案存储请求正确,则向客户端发送档案存储请求的响应信息,以获得超级节点的验证结果。
广播模块530,用于将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;
超级节点在接收档案存储请求后,向所述链联盟链中所有剩余节点广播该档案存储请求,使所有节点都能获得该档案存储请求中携带的体检档案,大大提升了交易效率,扩展了共享容量。
第二接收模块540,用于通过所述超级节点接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;
这里,对所述体检档案进行共识可以理解为对所述体检档案进行校验,多个从属节点对体检档案进行验证生成多个反馈信息(验证结果),这时多个从属节点将各个的反馈信息发送发超级节点,由超级节点综合多个反馈信息来判断对体检档案的校验是否通过。
存储模块550,用于当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中。
在一实施例中,同意存储的共识结果的获取方法包括:获取所述超级节点接收到的表示验证通过的反馈信息的数量是否超过预设阈值;在超过所述预设阈值的情况下,得到同意存储的共识结果。
其中,该预设阈值可以为根据联盟链中的节点总数设置的一个合适的数量,比如该预设数量可为节点总数的90%。当接收到合适数量的节点的共识反馈信息后,即可以计算出共识结果,避免长时间的等待其中的一个或几个普通节点的反馈而导致上链共识运算效率过低。
超级节点在获取到的多个其他从属节点的共识反馈信息后,可以统计各种结果的数量,当识别出某一种校验结果的数量达到预设的共识达成共识阈值时,则说明形成了共识。在达成同意存储的共识后,可对体检档案进行存储。
具体地,当超级节点收集到2f+1个消息时,即完成确认,同意存储,f表示联盟链中拜占庭节点的数量。
对于联盟链来说,每对体检档案进行一次存储,需要经过联盟链网络中所有节点的共识,每一次PBFT(Practical Byzantine Fault Tolerance,拜占庭容错算法)三段式共识过程都需要多次交互,通信次数多,时间复杂度高,共识效率严重下降,且联盟链网络中节点的数量越多,耗时也更久。且PBFT算法通过随机选择器从所有节点中选出超级节点,这种方式使得拜占庭节点(即恶意节点)也有担任超级节点的可能性,一旦恶意节点担任超级节点,将引起视图更换从而导致***性能大大降低,且影响共识结果,并给整个联盟链的交易安全带来极大的安全隐患,因此PBFT算法无法兼顾共识的高效性和***的安全性。为此,本实施例为避免通过随机选择出超级节点,因此,所述节点确定模块510,用于:获取每一个节点的信用值;根据所述每一个节点的信用值及超级节点的信用值分布范围判断所述节点是否为超级节点;当所述节点的信用值在所述超级节点的信用值分布范围内,则所述节点为超级节点。
信用值是评价节点在共识过程中的具体行为表现,通过信用分数的累积,多次顺利完成区块生成的节点将拥有更高的信用值,信用值越高的节点发生错误的可能性就越小,被信任的概率就越大,在下一轮被选取为超级节点中就占有一定的优势。
由于联盟链中超级节点和从属节点,则首先需要确定超级节点和从属节点对应的信用值分布范围,不同类型的节点信用值分布范围不同。比如,超级节点的信用值分布范围为(0.8,1],而从属节点的信用值分布范围为[0,0.8]。需要说明的是,信用值的分布范围可以根据实际情况预先设定,本申请对此不作限定。
也就是说,若一个节点的信用值在(0.8,1]内,则该节点为超级节点,若一个节点的信用值在[0,0.8]内,则该节点为从属节点。
在联盟链中,包括超级节点和从属节点,而从属节点包括恶意节点和普通节点。恶意节点可能会故意停止运行,也可能故意发送错误的信息阻碍正常的节点之间达成共识,因此,可以将恶意节点进行清除。因此,在一实施例中,所述节点确定模块还用于当基于所述多个反馈信息识别出不同意存储的共识结果后,获取每一个节点的信用值;
根据所述每一个节点的信用值及恶意节点的信用值分布范围判断所述节点是否为恶意节点;当所述节点的信用值在所述恶意节点的信用值分布范围内,则所述节点为恶意节点;删除所述恶意节点。
由于从属节点包括普通节点和恶意节点,则首先需要确定普通节点和恶意节点对应的信用值分布范围,不同类型的节点信用值分布范围不同。比如,普通节点的信用值分布范围为(0.2,0.8],而恶意节点的信用值分布范围为[0,0.2]。需要说明的是,信用值的分布范围可以根据实际情况预先设定,本申请对此不作限定。
也就是说,若一个节点的信用值在[0,0.2]内,则该节点为恶意节点,若一个节点的信用值在(0.2,0.8]内,则该节点为普通节点,普通节点可以参与到共识过程中。若存在恶意节点,则从联盟链中将恶意节点删除。
需要说明的是,一个恶意节点最开始可能并不是恶意节点。例如,根据节点初始信用值判断该节点为普通节点甚至超级节点,经多次作恶行为后信用值值减小,到一定时候信用值分数小于设定阈值,该节点将会被网络内定为不信任节点,即恶意节点,返回信息到联盟链内每个节点,再由超级节点处理删除该节点的请求,最终经交互后确认将该节点移出联盟链,这样可以减少网内的拜占庭节点从而提高算法的效率,降低无效的网络开销。
当然,若一个节点最开始为恶意节点,在完成共识后增大该节点的信用值,这样经过几次共识后,该节点最后的信用值可能大于设定阈值,达到普通节点的信用值分布范围,从而完成由恶意节点到普通节点的转换。
在一实施例中,通过以下公式计算所述节点的信用值:
节点的信用值计算公式为:
其中,NCi表示第i个节点的信用值,表示第i个节点的信用初始值;T(i)表示第i个节点的加减次数,RP(i)表示第i个节点最后获得的信用值,tpre表示上一次产生区块的时间,tcur表示当前产生区块的时间,其中,当节点完成一次共识(成功产生和验证区块后),所述节点的信用值增加,当节点共识失败(故障或有恶意行为),所述节点的信用值减小。需要说明的是,在连续产生区块时,tpre与tcur之间的差值为0。
在一实施例中,所述节点确定模块,用于若存在多个节点的信用值在超级节点的信用值范围内,则随机选择一个节点作为超级节点;或选择信用值最高的节点作为超级节点;或以节点加入联盟链的时间戳作为选择依据,将加入联盟链最早的节点作为超级节点。
举例来说,若有节点A、节点B、节点C三个节点的信用值分别为0.81、0.85、0.9,则均满足(0.8,1],在选择超级节点时,可以将节点A、节点B、节点C中的任意一个作为超级节点,或者由于节点C的信用值最高,选择节点C作为超级节点。若节点A加入联盟链的时间早于节点B加入联盟链的时间,而节点B加入联盟链的时间早于节点C加入联盟链的时间,因此,可以将节点A选择为超级节点。
在一实施例中,所述装置还包括共识模块,用于:
获取所述超级节点接收到的表示验证通过的反馈信息的数量是否超过预设阈值;
在超过所述预设阈值的情况下,得到同意存储的共识结果。
其中,该预设阈值可以为根据联盟链中的节点总数设置的一个合适的数量,比如该预设数量可为节点总数的90%。当接收到合适数量的节点的共识反馈信息后,即可以计算出共识结果,避免长时间的等待其中的一个或几个普通节点的反馈而导致上链共识运算效率过低。
超级节点在获取到的多个其他从属节点的共识反馈信息后,可以统计各种结果的数量,当识别出某一种校验结果的数量达到预设的共识达成共识阈值时,则说明形成了共识。在达成同意存储的共识后,可对体检档案进行存储。
具体地,当超级节点收集到2f+1个消息时,即完成确认,同意存储,f表示联盟链中拜占庭节点的数量。
在一实施例中,所述装置还包括:索引构建模块,用于为所述体检档案建立目标索引,并发布所述目标索引,以使所述区块链联盟链中的各个节点将所述目标索引存储到关联各个节点的索引库中。
具体地,联盟链的节点会为体检档案建立索引并发布,联盟链的各个节点会维护一个索引库。联盟链中作为需求方的节点根据实际需求可以在自身维护的索引库中进行查询,基于查询得到的索引,可以进一步获得该索引对应的体检档案。
本发明提供了一种基于联盟链的体检档案存储装置,所述装置包括:节点确定模块510,用于从所述联盟链中的多个节点中确定超级节点;第一接收模块520,用于通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求;广播模块530,用于将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;第二接收模块540,用于通过所述超级节点接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;存储模块550,用于当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中。在本发明中,不再通过所有节点互相通信来发送确认消息,而是将所有从属节点的共识消息直接发送至超级节点,由超级节点来负责消息确认,当超级节点收集到2f+1消息时,即完成确认。假设全网节点数为M,那么完成一次共识,需要Z次通信,Z=M(M-1)+2(M-1),当节点超过100时,对网络带宽的消耗及整个过程的时间复杂度将大量降低。
关于基于联盟链的体检档案存储装置的具体限定可以参见上文中对于基于联盟链的体检档案存储方法的限定,在此不再赘述。上述基于联盟链的体检档案存储装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务端,其内部结构图可以如图6所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性和/或易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的客户端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于联盟链的体检档案存储方法服务端侧的功能或步骤。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是客户端,其内部结构图可以如图7所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部服务器通过网络连接通信。该计算机程序被处理器执行时以实现一种基于联盟链的体检档案存储方法客户端侧的功能或步骤。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
从所述联盟链中的多个节点中确定超级节点;
通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求;
将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;
通过所述超级节点接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;
当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
从所述联盟链中的多个节点中确定超级节点;
通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求;
将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;
通过所述超级节点接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;
当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中。
需要说明的是,上述关于计算机可读存储介质或计算机设备所能实现的功能或步骤,可对应参阅前述方法实施例中,服务端侧的相关描述,为避免重复,这里不再一一描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于联盟链的体检档案存储方法,其特征在于,所述方法包括:
从所述联盟链中的多个节点中确定超级节点;
通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求;
将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;
通过所述超级节点接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;
当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中。
2.根据权利要求1所述的基于联盟链的体检档案存储方法,其特征在于,所述从所述联盟链中的多个节点中确定超级节点,包括:
获取每一个节点的信用值;
根据所述每一个节点的信用值及超级节点的信用值分布范围判断所述节点是否为超级节点;
当所述节点的信用值在所述超级节点的信用值分布范围内,则所述节点为超级节点。
3.根据权利要求1所述的基于联盟链的体检档案存储方法,其特征在于,当基于所述多个反馈信息识别出不同意存储的共识结果后,所述方法还包括:
获取每一个节点的信用值;
根据所述每一个节点的信用值及恶意节点的信用值分布范围判断所述节点是否为恶意节点;
当所述节点的信用值在所述恶意节点的信用值分布范围内,则所述节点为恶意节点;
删除所述恶意节点。
5.根据权利要求4所述的基于联盟链的体检档案存储方法,其特征在于,若存在多个节点的信用值在超级节点的信用值范围内,则随机选择一个节点作为超级节点;或选择信用值最高的节点作为超级节点;或以节点加入联盟链的时间戳作为选择依据,将加入联盟链最早的节点作为超级节点。
6.根据权利要求1所述的基于联盟链的体检档案存储方法,其特征在于,同意存储的共识结果的获取方法包括:
获取所述超级节点接收到的表示验证通过的反馈信息的数量是否超过预设阈值;
在超过所述预设阈值的情况下,得到同意存储的共识结果。
7.根据权利要求1或6所述的基于联盟链的体检档案存储方法,其特征在于,所述对所述体检档案进行存储之后,还包括:
为所述体检档案建立目标索引,并发布所述目标索引,以使所述区块链联盟链中的各个节点将所述目标索引存储到关联各个节点的索引库中。
8.一种体检档案存储装置,其特征在于,所述装置包括:
节点确定模块,用于从所述联盟链中的多个节点中确定超级节点;
第一接收模块,用于通过所述超级节点接收客户端发送的携带有体检档案的档案存储请求;
广播模块,用于将所述档案存储请求向所述多个从属节点进行广播,使所述多个从属节点获得所述体检档案;
第二接收模块,用于通过所述超级节点接收所述多个从属节点对所述体检档案进行共识而生成的多个反馈信息;
存储模块,用于当基于所述多个反馈信息识别出同意存储的共识结果后,将所述体检档案存储到所述联盟链中。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的基于联盟链的体检档案存储方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的基于联盟链的体检档案存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211431635.8A CN115811519A (zh) | 2022-11-15 | 2022-11-15 | 一种基于联盟链的体检档案存储方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211431635.8A CN115811519A (zh) | 2022-11-15 | 2022-11-15 | 一种基于联盟链的体检档案存储方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115811519A true CN115811519A (zh) | 2023-03-17 |
Family
ID=85483222
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211431635.8A Pending CN115811519A (zh) | 2022-11-15 | 2022-11-15 | 一种基于联盟链的体检档案存储方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115811519A (zh) |
-
2022
- 2022-11-15 CN CN202211431635.8A patent/CN115811519A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Li et al. | An optimized byzantine fault tolerance algorithm for consortium blockchain | |
WO2021114929A1 (zh) | 基于区块链的模型联合训练方法及装置 | |
CN112311735B (zh) | 可信认证方法,网络设备、***及存储介质 | |
US20190075022A1 (en) | Changing an existing blockchain trust configuration | |
KR101986081B1 (ko) | 블록체인에서 특정 노드들간 블록을 공유 및 검증하는 방법 | |
CN111737360B (zh) | 基于区块链的设备管理方法、装置、计算机设备 | |
CN110569251A (zh) | 一种数据处理方法、相关设备及计算机可读存储介质 | |
CN108615195B (zh) | 资源转移信息的传输方法和装置、存储介质、电子装置 | |
CN111523890A (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
CN110119390B (zh) | 基于区块链的金融信息外包管理*** | |
CN113395363A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN110892675B (zh) | 用于监控区块链的方法和设备 | |
CN112527912A (zh) | 基于区块链网络的数据处理方法、装置及计算机设备 | |
CN112671908B (zh) | 网络管理方法、装置、电子设备及可读存储介质 | |
CN112202564A (zh) | 交易传递方法、装置、电子设备及可读存储介质 | |
CN115796261A (zh) | 一种基于区块链的轻量级分组共识的联邦学习方法 | |
CN116244725A (zh) | 基于区块链的文件处理方法及装置、设备、文件投稿*** | |
CN115293769B (zh) | 一种基于区块链的动态管理和校验节点*** | |
KR20210109767A (ko) | 블록 체인 모니터링 기반 자산 탈취 방지 서비스 제공 방법 및 그 장치 | |
CN115811519A (zh) | 一种基于联盟链的体检档案存储方法、装置、设备及介质 | |
Diarra | Choosing a consensus protocol for uses cases in distributed ledger technologies | |
CN112291262B (zh) | 一种零信任环境下账户终端担保派生关系的构建方法和*** | |
CN114978651A (zh) | 一种隐私计算存证方法、装置、电子设备及存储介质 | |
CN115455460A (zh) | 一种基于区块链的数据存储方法、装置、设备及介质 | |
KR102253506B1 (ko) | 블록체인 기반 분산 원장 관리 장치 및 방법 |
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 |