CN117349366A - 基于区块链的数据存储和共享方法、装置及存储介质 - Google Patents
基于区块链的数据存储和共享方法、装置及存储介质 Download PDFInfo
- Publication number
- CN117349366A CN117349366A CN202311152585.4A CN202311152585A CN117349366A CN 117349366 A CN117349366 A CN 117349366A CN 202311152585 A CN202311152585 A CN 202311152585A CN 117349366 A CN117349366 A CN 117349366A
- Authority
- CN
- China
- Prior art keywords
- node
- consensus
- nodes
- data storage
- blockchain
- 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
- 238000013500 data storage Methods 0.000 title claims abstract description 100
- 238000000034 method Methods 0.000 title claims abstract description 54
- 238000004364 calculation method Methods 0.000 claims description 18
- 238000012795 verification Methods 0.000 claims description 18
- 238000012163 sequencing technique Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 20
- 230000036541 health Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000012790 confirmation Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 2
- 238000012216 screening Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Computing Systems (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于区块链的数据存储和共享方法、装置及存储介质,属于区块链技术领域。本发明在进行数据存储时,计算各节点的支持度;根据所述支持度确定初始主节点以及共识节点集合;获取生成当前区块的生成时间;在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点;通过所述下一轮主节点以及所述共识节点集合进行数据存储和共享,通过各节点的支持度确定共识节点集合,提高共识节点的诚实度,且通过随机数确定下一轮主节点,增加了主节点号的不可预测性,保证数据不会伪造或篡改判断,保证了数据存储和共享的安全。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于区块链的数据存储和共享方法、装置及存储介质。
背景技术
区块链技术已广泛应用于金融(如加密货币)、供应链、房地产领域,并具有更新、更广泛的应用特点。区块链不仅专注于让用户通过对等网络轻松访问数据,而且还使用加密机制确保数据的安全性。随着过去十年医疗保健技术的巨大进步,电子医疗数据的存储、访问和管理变得繁琐。电子健康记录(EHR)处理需要隐私以及改进的可访问性。区块链技术提供了在EHR的安全性和易访问性方面找到平衡的机会。此外,将EHR存储在区块链上将确保在EHR上进行的交易是透明的,同时保证HER上的数据不会受到未经授权的修改。
现有的数据存储和共享方法使用的实用拜占庭容错协议进行数据存储和共享,这种方法中所有节点会以相等的概率获得承担主节点的机会,在这种情况下,一旦非诚实节点获得担任主节点的机会就有可能破坏共识效率,从而造成数据存储时数据安全得不到保障。
发明内容
本发明的主要目的在于提供一种基于区块链的数据存储和共享方法、装置及存储介质,旨在解决现有技术进行数据存储时数据安全得不到保障的技术问题。
为实现上述目的,本发明提供了一种基于区块链的数据存储和共享方法,所述方法包括以下步骤:
在进行数据存储时,计算各节点的支持度;
根据所述支持度确定初始主节点以及共识节点集合;
获取生成当前区块的生成时间;
在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点;
通过所述下一轮主节点以及所述共识节点集合进行数据存储和共享。
可选地,所述根据所述支持度确定初始主节点以及共识节点集合,包括:
将各个节点的支持度进行降序排列,得到支持度集合;
将所述支持度集合中最大支持度对应的节点作为初始主节点;
将所述支持度集合中各支持度与预设共识阈值进行比较;
将支持度大于所述预设共识阈值的节点作为共识节点,得到共识节点集合。
可选地,所述在进行数据存储时,计算各节点的支持度,包括:
在进行数据存储时,获取各节点之间的投票信息;
通过预设模糊隶属度函数将所述投票信息转化为各节点的模糊值;
通过所述模糊值计算各节点的支持度。
可选地,所述在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点,包括:
在所述生成时间小于等于预设时间阈值时,通过所述当前区块获取所述当前区块内的当前共识节点集合;
获取所述当前共识节点集合中各个当前共识节点的时间戳;
根据各个当前共识节点的时间戳得到时间戳范围;
将所述共识节点集合中共识节点的时间戳在所述时间戳范围内的共识节点汇总,得到目标共识节点集合;
通过所述目标共识节点集合计算随机数;
通过所述随机数确定下一轮主节点。
可选地,所述通过所述目标共识节点集合计算随机数,包括:
获取所述目标共识节点集合中各个目标共识节点的时间戳和签名信息;
通过所述目标共识节点的时间戳对各个所述目标共识节点进行排序,将所述时间戳最小的目标共识节点作为计算共识节点;
将所述计算共识节点的时间戳和签名信息进行异或计算,得到初始随机数;
对所述初始随机数进行字符串截取,得到随机数。
可选地,所述通过所述随机数确定下一轮主节点,包括:
获取各个目标共识节点的时间戳中的最大时间戳;
将所述最大时间戳和所述随机数添加至所述当前区块的头部进行交易验证;
在所述当前区块的交易验证通过时,确定所述当前区块有效,并通过所述随机数得到目标主节点编号;
根据所述目标主节点编号确定下一轮主节点。
可选地,所述获取生成当前区块的生成时间,包括:
通过所述初始主节点生成区块提案;
将所述区块提案广播至所述共识节点集合中的各个共识节点,并接收所述共识节点基于一致性协议对所述区块提案的反馈信息;
在所述反馈信息为所述共识节点达成共识的情况下,通过所述初始主节点使用所述一致性协议生成当前区块;
根据所述当前区块获取生成所述当前区块的生成时间。
可选地,所述获取生成当前区块的生成时间之后,还包括:
将所述生成时间与预设时间阈值进行比较;
在所述生成时间大于所述预设时间阈值时,返回所述计算各节点的支持度的步骤。
此外,为实现上述目的,本发明还提出一种基于区块链的数据存储和共享装置,所述基于区块链的数据存储和共享装置包括:
计算模块,用于在进行数据存储时,计算各节点的支持度;
确定模块,用于根据所述支持度确定初始主节点以及共识节点集合;
获取模块,用于获取生成当前区块的生成时间;
所述确定模块,还用于在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点;
数据存储和共享模块,用于通过所述下一轮主节点以及所述共识节点集合进行数据存储和共享。
此外,为实现上述目的,本发明还提出一种基于区块链的数据存储和共享设备,所述基于区块链的数据存储和共享设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于区块链的数据存储和共享程序,所述基于区块链的数据存储和共享程序配置为实现如上文所述的基于区块链的数据存储和共享方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有基于区块链的数据存储和共享程序,所述基于区块链的数据存储和共享程序被处理器执行时实现如上文所述的基于区块链的数据存储和共享方法的步骤。
本发明在进行数据存储时,计算各节点的支持度;根据所述支持度确定初始主节点以及共识节点集合;获取生成当前区块的生成时间;在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点;通过所述下一轮主节点以及所述共识节点集合进行数据存储和共享,通过各节点的支持度确定共识节点集合,提高共识节点的诚实度,且通过随机数确定下一轮主节点,增加了主节点号的不可预测性,保证数据不会伪造或篡改判断,保证了数据存储和共享的安全。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的基于区块链的数据存储和共享设备的结构示意图;
图2为本发明基于区块链的数据存储和共享方法第一实施例的流程示意图;
图3为本发明基于区块链的数据存储和共享方法一实施例的共识过程示意图;
图4为本发明基于区块链的数据存储和共享方法第二实施例的流程示意图;
图5为本发明基于区块链的数据存储和共享方法第三实施例的流程示意图;
图6为本发明基于区块链的数据存储和共享方法第四实施例的流程示意图;
图7为本发明基于区块链的数据存储和共享方法一实施例的数据存储流程示意图;
图8为本发明基于区块链的数据存储和共享方法一实施例的数据共享流程示意图;
图9为本发明基于区块链的数据存储和共享装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的基于区块链的数据存储和共享设备结构示意图。
如图1所示,该基于区块链的数据存储和共享设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(Wireless-Fidelity,Wi-Fi)接口)。存储器1005可以是高速的随机存取存储器(Ran用户m Access Memory,RAM),也可以是稳定的非易失性存储器(Non-Volatile Memory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对基于区块链的数据存储和共享设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及基于区块链的数据存储和共享程序。
在图1所示的基于区块链的数据存储和共享设备中,网络接口1004主要用于与网络服务器进行数据通信;用户接口1003主要用于与用户进行数据交互;本发明基于区块链的数据存储和共享设备中的处理器1001、存储器1005可以设置在基于区块链的数据存储和共享设备中,所述基于区块链的数据存储和共享设备通过处理器1001调用存储器1005中存储的基于区块链的数据存储和共享程序,并执行本发明实施例提供的基于区块链的数据存储和共享方法。
本发明实施例提供了一种基于区块链的数据存储和共享方法,参照图2,图2为本发明基于区块链的数据存储和共享方法第一实施例的流程示意图。
本实施例中,所述基于区块链的数据存储和共享方法包括以下步骤:
步骤S10:在进行数据存储时,计算各节点的支持度。
需要说明的是,本实施例的执行主体可为基于区块链的数据存储和共享设备,还可为其他可实现相同或相似的设备,本实施例对此不作限制,本实施例以基于区块链的数据存储和共享设备为例进行说明。
本实施例中,存储的数据为医疗数据,在现有的医疗信息系统很少的情况下,如传统的医院信息系统(HIS)或电子病历(EMRs),大量的医疗数据保存在集中式数据库中,难以在平台和机构之间进行医疗数据的传递,从而给寻求医疗服务的患者带来不便。对于患者来说,隐私泄露主要发生在敏感医疗数据的流通和存储中。就医院而言,由于治疗史以及患者的完整诊断记录的限制,无法对患者的病情进行适当和全面的了解。此外,医院中不存在用于共享收集患者数据的安全有效的共享技术。集中式的医疗数据存储也存在泄露、数据丢失等不可预知的风险以及高昂的管理成本。本申请使用改进的实用拜占庭容错协议(improved Practical Byzantine Fault Tolerance,impro-PBFT)在进行数据存储和共享时,较原始的PBFT的优势主要体现在通信次数的降低,对数据存储与共享的模型进行设计,实现电子健康档案安全存储,同时实现患者的就诊记录在各医疗场所之间实现共享并且借助区块链技术,在数据共享的同时保证患者就诊记录不可篡改,具有一定的安全性。
需要说明的是,各节点的支持度可通过节点之间相互投票计算得到,各节点的支持度为各节点的模糊隶属度值,模糊隶属度值表示对某个决策的支持程度。
步骤S20:根据所述支持度确定初始主节点以及共识节点集合。
应理解的是,可通过各个节点的支持度确定初始主节点以及共识节点集合,例如将支持度最高的节点作为初始主节点,并通过设置阈值对共识节点进行筛选,从而得到共识节点集合。
目前的PBFT算法中所有节点会以相等的概率获得承担主节点的机会,在这种情况下,一旦非诚实节点获得担任主节点的机会就有可能破坏共识效率。
因此,本实施例通过各节点的支持度确定初始主节点以及共识节点集合,确定的共识节点为诚实节点,提高数据存储时的安全性。
初始主节点可负责接收来自客户端的数据提交请求,作为提案(proposal)引入到共识算法中。主节点是第一个提出共识意见的节点,它提供了一个初始的数据状态。共识节点接收主节点的提案后,对数据进行验证,确保数据的合法性和正确性。它们验证交易的有效性,防止恶意的或非法的数据进入系统。
步骤S30:获取生成当前区块的生成时间。
当前区块可通过初始主节点生成得到,并在生成当前区块时,获取初始主节点生成当前区块的时间,即生成时间。
可选地,获取生成当前区块的生成时间的步骤具体包括:通过所述初始主节点生成区块提案;将所述区块提案广播至所述共识节点集合中的各个共识节点,并接收所述共识节点基于一致性协议对所述区块提案的反馈信息;在所述反馈信息为所述共识节点达成共识的情况下,通过所述初始主节点使用所述一致性协议生成当前区块;根据所述当前区块获取生成所述当前区块的生成时间。
可以理解的是,在得到初始主节点后,初始主节点可通过提出的impro-PBFT一致性协议生成当前区块,初始主节点首先生成一个区块的提案,提案中包括了需要添加到区块链中的交易以及数据信息,再将生成的区块提案广播至共识节点集合中的各个共识节点,通知各个共识节点此区块提案,广播可以通过点对点通信、多播或其他通信手段进行。
在具体实施中,当共识节点接收到区块提案后,会根据一致性协议的规则对区块提案进行投票和协商,根据协议的规则,共识节点将根据收到的提案投票情况逐步达成共识。达成共识意味着共识节点在提案上达成一致的意见,认为提案是有效的,并将共识节点针对此区块提案的反馈信息发送至初始主节点。反馈信息可为共识节点达成共识,还可为共识节点未达成共识。
当反馈信息为共识节点达成共识的情况下,初始主节点会使用一致性协议生成当前区块,当前区块包含了达成共识的区块提案以及元数据,元数据包括有时间戳、前一个区块的哈希等数据。因此可根据当前区块获取生成当前区块的生成时间。
由于已经根据支持度生成了共识节点集合,可以在很大程度上保证参与共识的所有节点都是诚实节点,如图3所示,图3为共识过程示意图,与目前的PBFT算法相比,本实施例在准备阶段和提交阶段消除了复杂的消息广播,所有节点都能够自己作出判断,因此初始主节点能够收集所有共识节点的判断并进行统计,然后做出最终的决定,不会伪造或篡改判断,保证了整个系统的安全。同时,经过简化,共识阶段所需的通信次数减少到O(n),这在一定程度上降低了通信的复杂性。
生成的当前区块会被添加到区块链中,成为区块链的一部分。同时,共识节点也会确认这个区块,确保它的合法性和有效性。并且,初始主节点会将当前区块广播至其他共识节点,使共识节点添加当前区块到自己的区块链中,保证所有节点在区块链上保持一致的状态。
步骤S40:在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点。
在具体实施中,在当前区块生成后,需要进行下一个区块的提案,从而生成下一个区块,因此需要确定下一轮主节点,通过将生成当前区块的生成时间与预设时间阈值进行比较,若生成时间小于等于预设时间阈值,则生成的当前区块可添加到区块链,并确定下一轮主节点,从而生成下一区块。
在具体实施中,若生成时间大于预设时间阈值,说明初始主节点不符合当前的要求,则返回计算各节点的支持度的步骤,重新确定初始主节点,并执行生成当前区块的步骤。
步骤S50:通过所述下一轮主节点以及所述共识节点集合进行数据存储和共享。
应理解的是,当确定下一轮主节点后,可通过下一轮主节点以及共识节点集合进行下一区块的生成,从而生成所需要的区块,并进行数据存储以及数据共享。
本实施例在进行数据存储时,计算各节点的支持度;根据所述支持度确定初始主节点以及共识节点集合;获取生成当前区块的生成时间;在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点;通过所述下一轮主节点以及所述共识节点集合进行数据存储和共享,通过各节点的支持度确定共识节点集合,提高共识节点的诚实度,且通过随机数确定下一轮主节点,增加了主节点号的不可预测性,保证数据不会伪造或篡改判断,保证了数据存储和共享的安全。
参考图4,图4为本发明基于区块链的数据存储和共享方法第二实施例的流程示意图。
基于上述第一实施例,本实施例基于区块链的数据存储和共享方法所述步骤S20,具体包括:
步骤S201:将各个节点的支持度进行降序排列,得到支持度集合。
需要说明的是,当得到各个节点的支持度后,可将各个节点的支持度进行降序排列,从而得到排列后的支持度集合,例如支持度为0.5、0.8、0.9、0.6,通过将支持度降序排列,得到的支持度集合为{0.9、0.8、0.6、0.5}。
步骤S202:将所述支持度集合中最大支持度对应的节点作为初始主节点。
在具体实施中,可获取支持度集合中的最大支持度,例如支持度集合为{0.9、0.8、0.6、0.5},则最大支持度为0.9,并获取最大支持度所对应的节点,将其作为初始主节点。
步骤S203:将所述支持度集合中各支持度与预设共识阈值进行比较。
在具体实施中,预设共识阈值可提前设置得到,例如0.8、0.7等,本实施例对此不作限制。通过将支持度集合中的各个支持度与预设共识阈值比较,从而对支持度集合中的各个支持度进行筛选,以筛选共识节点。
步骤S204:将支持度大于所述预设共识阈值的节点作为共识节点,得到共识节点集合。
可以理解的是,通过将支持度大于预设共识阈值的节点作为共识节点,将共识节点进行汇总,得到共识节点集合。
本实施例通过将各个节点的支持度进行降序排列,得到支持度集合;将所述支持度集合中最大支持度对应的节点作为初始主节点;将所述支持度集合中各支持度与预设共识阈值进行比较;将支持度大于所述预设共识阈值的节点作为共识节点,得到共识节点集合,通过各节点的支持度确定初始主节点和共识节点集合,降低非诚实节点担任主节点的概率,提高数据存储和共享的安全性。
参考图5,图5为本发明基于区块链的数据存储和共享方法第三实施例的流程示意图。
基于上述第一实施例,本实施例基于区块链的数据存储和共享方法所述步骤S10,具体包括:
步骤S101:在进行数据存储时,获取各节点之间的投票信息。
需要说明的是,当需要进行数据存储时,可通过节点之间进行相互投票,并记录各节点的投票信息。
步骤S102:通过预设模糊隶属度函数将所述投票信息转化为各节点的模糊值。
应理解的是,本申请预设模糊隶属度函数用模糊集vague进行表示,将模糊集的隶属度定义为相应元素的支持度、反对度和不确定度,从而计算得到模糊值,并将模糊值分为真隶属关系tA(u)和假隶属关系fA(u),其中,tA(u)和fA(u)∈[0,1],tA(u)+fA(u)≤1,当集合为离散集时,模糊值可以表示为下式1:
式1中,M为各节点的模糊值,tA(u)为真隶属关系,fA(u)为假隶属关系。
步骤S103:通过所述模糊值计算各节点的支持度。
在具体实施中,当得到模糊值后,可计算各节点的支持度,计算如下式2:
式2中,u为各节点的支持度,fA(u)和tA(u)代表了各节点的模糊值,由此可计算得到各节点的支持度。
例如当节点的模糊值为[0.5,0.8]时,很容易计算tA(u)=0.5,fA(u)=0.2,根据模糊值的定义,在投票模型中,模糊值[0.5,0.8]可以理解为“提议投5票赞成,3票弃权,2票反对(假设参加投票的人数为10人)”,对于弃权,vague集给出了如下定义:当正面和负面票数较多时,弃权倾向于正面票数;否则更像是否决票。
基于模糊集对PBFT算法进行改进,充分考虑了非诚实节点的不良影响,打破了以往的信誉评分标准,同时也使共识节点的选择更加合理。
本实施例在进行数据存储时,获取各节点之间的投票信息;通过预设模糊隶属度函数将所述投票信息转化为各节点的模糊值;通过所述模糊值计算各节点的支持度,可通过各节点的模糊值快速准确的计算出各节点的支持度,提高各节点的支持度计算的准确性。
参考图6,图6为本发明基于区块链的数据存储和共享方法第四实施例的流程示意图。
基于上述第一实施例,本实施例基于区块链的数据存储和共享方法所述步骤S40,具体包括:
步骤S401:在所述生成时间小于等于预设时间阈值时,通过所述当前区块获取所述当前区块内的当前共识节点集合。
在具体实施中,当生成时间小于预设时间阈值时,可获取当前区块中的当前共识节点集合,当前共识节点集合的当前共识节点位于当前区块内。
步骤S402:获取所述当前共识节点集合中各个当前共识节点的时间戳。
需要说明的是,当前共识节点集合中的各个当前共识节点的时间戳可直接获取得到,当前共识节点的时间戳位于当前区块内部,可通过时间戳进行后续计算。
步骤S403:根据各个当前共识节点的时间戳得到时间戳范围。
应理解的是,可将各个当前共识节点的时间戳进行汇总,从而得到时间戳范围,例如当前共识节点的时间戳包括15:30、16:05、18:20,则时间戳范围为[15:30~18:20]。
步骤S404:将所述共识节点集合中共识节点的时间戳在所述时间戳范围内的共识节点汇总,得到目标共识节点集合。
在具体实施中,可获取共识节点集合中各个共识节点的时间戳,将共识节点的时间戳在所述时间戳范围内的共识节点进行汇总,从而得到目标共识节点集合,例如共识节点的时间戳包括:共识节点1:8:30,共识节点2:12:30,共识节点3:15:40,共识节点4:17:30,共识节点5:20:30,则在时间戳范围内的共识节点为共识节点3以及共识节点4,即目标共识节点集合为共识节点3和4。
步骤S405:通过所述目标共识节点集合计算随机数。
需要说明的是,在得到目标共识节点集合后,可通过目标共识节点集合计算随机数,从而可通过随机数确定下一轮主节点。
作为一种实施例,通过所述目标共识节点集合计算随机数的步骤具体包括:获取所述目标共识节点集合中各个目标共识节点的时间戳和签名信息;通过所述目标共识节点的时间戳对各个所述目标共识节点进行排序,将所述时间戳最小的目标共识节点作为计算共识节点;将所述计算共识节点的时间戳和签名信息进行异或计算,得到初始随机数;对所述初始随机数进行字符串截取,得到随机数。
需要说明的是,在得到目标共识节点集合后,可获取目标共识节点集合中各个目标共识节点的时间戳以及签名信息<C_time(i),C_sign(i)>,0≤i≤K,K为目标共识节点的数量,floor[Nc/2]≤K≤Nc,Nc代表消息的总数,floor[Nc/2]为对K向下取整,例如Nc为5,则floor[5/2]=2。
通过各个目标共识节点按照时间戳升序进行排序,将时间戳最小的目标共识节点筛选处理,作为计算共识节点,通过计算共识节点的时间戳和签名信息进行异或计算,得到初始随机数,计算如下式3:
Rsource=C_time(K-1)⊕C_sign(K-1)(式3)
Rsource为初始随机数,C_time为计算共识节点的时间戳,C_sign为计算共识节点的签名。
应理解的是,由于计算的初始随机数可能存在字符串较长的情况,为了不影响计算,可对初始随机数进行字符串截取,得到随机数,具体可截取初始随机数字符串最后32位,SubStringEnd32(string)→S,从而得到随机数。
步骤S406:通过所述随机数确定下一轮主节点。
在具体实施中,可通过将随机数添加至区块的头部,从而验证当前区块是否有效,以根据随机数确定下一轮主节点。
可选地,通过所述随机数确定下一轮主节点的步骤具体包括:获取各个目标共识节点的时间戳中的最大时间戳;将所述最大时间戳和所述随机数添加至所述当前区块的头部进行交易验证;在所述当前区块的交易验证通过时,确定所述当前区块有效,并通过所述随机数得到目标主节点编号;根据所述目标主节点编号确定下一轮主节点。
需要说明的是,可获取目标共识节点中的最大时间戳,并将最大时间差和随机数添加至当前区块的头部作为区块合法性的重要参数,从而进行校对验证,判断当前区块的头部在网络中是否可以正确交易,若可以正确交通,则确定交易验证通过,当前区块有效,则可直接通过随机数得到目标主节点编号,并将目标主节点编号得到下一轮主节点的编号,得到下一轮主节点,从而可通过下一轮主节点进行下一个区块的生成。
基于提交信息的共识节点对应的时间戳以及签名信息生成的随机数来确定主节点的数量,使得系统中的非诚实节点无法提前预测出主节点的个数,在考虑公平性的同时,可以提高整个系统的安全性。
本实施例相较于目前的PBFT的优势主要体现在通信次数的降低,如果系统中节点个数为m,原始的PBFT在客户端请求阶段所耗费的通信次数为m次,各节点在预备节点、准备阶段以及确认阶段所耗费的通信次数依次为m-1次、(m-1)×(m-1)次以及m×(m-1)次,最后将确认消息回传给客户端所需要的通信次数为n次,综上可以计算得到,原始PBFT的通信次数为2m2次。对于本发明中的impro-PBFT算法,客户端请求阶段所耗费的通信次数为1次,客户端将请求信息传递给私有节点以后,私有节点向各区块链节点进行广播,所需通信次数为m次,同样,在各个区块链节点收到请求信息时,发送回执信息共需消耗通信m次,私有节点在收到回复信息后向各区块链节点发送确认信息共需通信m次,最后将确认消息回传给客户端所需要的通信时间为1次,综上可以计算得到,impro-PBFT的通信次数为次3m+2。显然本发明提出的算法在一定程度上降低了通信的复杂性。
另一方面,impro-PBFT的容错性能由以下决定:
当节点总数为奇数时:2f+3=Q;当节点总数为偶数时:2f+2=Q。因此节点的容错率可以统一为:f=[(Q-2)/2]。其中,[]表示取整函数,f表示拜占庭节点数,Q表示总节点数。因此,在节点大小为100时,impro-PBFT的容错性为49%,随着节点总数的增加,容错率将接近50%。而PBFT算法要求总节点数n≥3m+1(其中,m代表非诚实节点数)。系统的失效节点数量不得超过节点总数的1/3,容错率相对较低。
本实施例在所述生成时间小于等于预设时间阈值时,通过所述当前区块获取所述当前区块内的当前共识节点集合;获取所述当前共识节点集合中各个当前共识节点的时间戳;根据各个当前共识节点的时间戳得到时间戳范围;将所述共识节点集合中共识节点的时间戳在所述时间戳范围内的共识节点汇总,得到目标共识节点集合;通过所述目标共识节点集合计算随机数;通过所述随机数确定下一轮主节点,通过生成的随机数来确定下一轮主节点,使得系统中的非诚实节点无法提前预测出主节点的个数,在考虑公平性的同时,可以提高整个系统的安全性。
作为一种示例,如图7所述,图7为数据存储流程示意图,当用户发起访问请求后,将公钥发送给数据库,相当于授权数据库为其加密健康数据m。数据库收到请求以后会对用户进行身份的校验,当身份检验通过以后,数据库就从关键字集中选择Ki作为m的关键字,并用用户的pk对m进行加密得到密文c。然后分别对Ki和健康数据m进行hsah操作,得到关键字Ki的哈希值B=H(Ki)和健康数据m的hash摘要H(m)。如果m是医疗健康数据则将c存储到医院的本地服务器中,如果m是日常健康数据或者运动健康数据则将c保存到边缘服务器中。医院本地服务器和边缘服务器返回c的存储地址path给数据库。接下来就是数据上链,数据库将交易transl(H(m),B,path,用户ID,数据库ID)签名发送给当前节点DN。DN验证交易有效性,如果交易无效则丢弃。如果交易有效则在网络内部发起共识,共识算法即为上文提到的impro-PBFT。如果网络内部共识节点之间达成共识,则由DN将交易打包成新的区块,并计算区块的hash值,生成时间戳,DN对新的区块进行签名,并将新区块广播给联盟链中的所有共识节点。最后,各个共识节点对新区块进行验证,提取DN的公钥pk验证签名,并提取本地联盟链最后有一个区块的哈希值,比较它与新区块中的前块哈希值是否相等,如果签名和哈希值均验证通过则将新区块添加至本地联盟链中,验证失败则将新区块丢弃。
在存储的数据为医疗健康数据后,若用户去医院进行就诊,医生需要询问用户的健康状况以及以往的病历。为了让医生能够全面的了解到用户的健康情况,如图8所示,图8为数据共享流程示意图,医生可使用系统发送请求以及身份验证,数据用户发送跨域访问请求给用户,用户对数据用户进行授权,并将数据用户的访问请求发送给医院的当值节点x1,当值节点验证用户的身份,根据请求,当值节点将访问请求转发给其他网络中的当值节点x2、x3、x4。各当值节点收到访问请求后,对其进行验证。验证通过后,根据请求在联盟链中搜索数据,如果医院是共识的节点,医院就从联盟链中提取密文存储地址path,然后将访问请求发送到相应的数据存储节点,数据存储服务器将数据密文发送给医院,医院再将数据发送给用户。相反,如果医院不是共识节点,则医院收到访问请求以后将请求发送给医院的当值节点x1,由当值节点x1对用户进行身份的验证,并进行数据的搜索。
当值节点对各自收到的数据密文进行重加密得到重加密密文,将重加密密文发送给医院当值节点x1。医院当值节点x1将收到的加密密文转发给数据用户,数据用户利用自己的私钥进行解密,得到数据明文。现假设x1是大健康联盟链网络的当值节点,x2、x3、x4将访问记录发送给x1,x1对访问记录进行留痕并验证交易是否有效,验证通过,则将交易发送给各网络的当值节点,由各当值节点将交易转发给网络内部共识节点。共识算法仍采用本发明提出的impro-PBFT,由当值节点x1将交易打包形成新的区块,并计算区块的hash值H(trans),生成时间戳timestamp,x1对新区块进行签名,将新区块发送给x2、x3、x4和其所在网络内部共识节点。x2、x3、x4分别转发给各自网络内部的共识节点,所有共识节点对新区块进行验证。共识节点提取x1的公钥验证其签名,并提取本地联盟链最后一个区块的哈希值lastblock_hash,比较新区块中的前块哈希值previous_hash和lastblock_hash是否相等,如果签名和哈希值均验证通过则将新区块添加到本地大健康联盟链中。如果验证失败,则将新区块丢弃。
参照图9,图9为本发明基于区块链的数据存储和共享装置第一实施例的结构框图。
如图9所示,本发明实施例提出的基于区块链的数据存储和共享装置包括:
计算模块10,用于在进行数据存储时,计算各节点的支持度。
确定模块20,用于根据所述支持度确定初始主节点以及共识节点集合。
获取模块30,用于获取生成当前区块的生成时间。
所述确定模块30,还用于在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点。
数据存储和共享模块40,用于通过所述下一轮主节点以及所述共识节点集合进行数据存储和共享。
本实施例在进行数据存储时,计算各节点的支持度;根据所述支持度确定初始主节点以及共识节点集合;获取生成当前区块的生成时间;在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点;通过所述下一轮主节点以及所述共识节点集合进行数据存储和共享,通过各节点的支持度确定共识节点集合,提高共识节点的诚实度,且通过随机数确定下一轮主节点,增加了主节点号的不可预测性,保证数据不会伪造或篡改判断,保证了数据存储和共享的安全。
在一实施例中,所述确定模块30,还用于将各个节点的支持度进行降序排列,得到支持度集合;将所述支持度集合中最大支持度对应的节点作为初始主节点;将所述支持度集合中各支持度与预设共识阈值进行比较;将支持度大于所述预设共识阈值的节点作为共识节点,得到共识节点集合。
在一实施例中,所述计算模块10,还用于在进行数据存储时,获取各节点之间的投票信息;通过预设模糊隶属度函数将所述投票信息转化为各节点的模糊值;通过所述模糊值计算各节点的支持度。
在一实施例中,所述确定模块30,还用于在所述生成时间小于等于预设时间阈值时,通过所述当前区块获取所述当前区块内的当前共识节点集合;获取所述当前共识节点集合中各个当前共识节点的时间戳;根据各个当前共识节点的时间戳得到时间戳范围;将所述共识节点集合中共识节点的时间戳在所述时间戳范围内的共识节点汇总,得到目标共识节点集合;通过所述目标共识节点集合计算随机数;通过所述随机数确定下一轮主节点。
在一实施例中,所述确定模块30,还用于获取所述目标共识节点集合中各个目标共识节点的时间戳和签名信息;通过所述目标共识节点的时间戳对各个所述目标共识节点进行排序,将所述时间戳最小的目标共识节点作为计算共识节点;将所述计算共识节点的时间戳和签名信息进行异或计算,得到初始随机数;对所述初始随机数进行字符串截取,得到随机数。
在一实施例中,所述确定模块30,还用于获取各个目标共识节点的时间戳中的最大时间戳;将所述最大时间戳和所述随机数添加至所述当前区块的头部进行交易验证;在所述当前区块的交易验证通过时,确定所述当前区块有效,并通过所述随机数得到目标主节点编号;根据所述目标主节点编号确定下一轮主节点。
在一实施例中,所述获取模块30,还用于通过所述初始主节点生成区块提案;将所述区块提案广播至所述共识节点集合中的各个共识节点,并接收所述共识节点基于一致性协议对所述区块提案的反馈信息;在所述反馈信息为所述共识节点达成共识的情况下,通过所述初始主节点使用所述一致性协议生成当前区块;根据所述当前区块获取生成所述当前区块的生成时间。
在一实施例中,所述获取模块30,还用于将所述生成时间与预设时间阈值进行比较;在所述生成时间大于所述预设时间阈值时,返回所述计算各节点的支持度的步骤。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有基于区块链的数据存储和共享程序,所述基于区块链的数据存储和共享程序被处理器执行时实现如上文所述的基于区块链的数据存储和共享方法的步骤。
由于本存储介质采用了上述所有实施例的全部技术方案,因此至少具有上述实施例的技术方案所带来的所有有益效果,在此不再一一赘述。
应当理解的是,以上仅为举例说明,对本发明的技术方案并不构成任何限定,在具体应用中,本领域的技术人员可以根据需要进行设置,本发明对此不做限制。
需要说明的是,以上所描述的工作流程仅仅是示意性的,并不对本发明的保护范围构成限定,在实际应用中,本领域的技术人员可以根据实际的需要选择其中的部分或者全部来实现本实施例方案的目的,此处不做限制。
另外,未在本实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的基于区块链的数据存储和共享方法,此处不再赘述。
此外,需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器(Read Only Memory,ROM)/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于区块链的数据存储和共享方法,其特征在于,所述基于区块链的数据存储和共享方法包括:
在进行数据存储时,计算各节点的支持度;
根据所述支持度确定初始主节点以及共识节点集合;
获取生成当前区块的生成时间;
在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点;
通过所述下一轮主节点以及所述共识节点集合进行数据存储和共享。
2.如权利要求1所述的基于区块链的数据存储和共享方法,其特征在于,所述根据所述支持度确定初始主节点以及共识节点集合,包括:
将各个节点的支持度进行降序排列,得到支持度集合;
将所述支持度集合中最大支持度对应的节点作为初始主节点;
将所述支持度集合中各支持度与预设共识阈值进行比较;
将支持度大于所述预设共识阈值的节点作为共识节点,得到共识节点集合。
3.如权利要求1所述的基于区块链的数据存储和共享方法,其特征在于,所述在进行数据存储时,计算各节点的支持度,包括:
在进行数据存储时,获取各节点之间的投票信息;
通过预设模糊隶属度函数将所述投票信息转化为各节点的模糊值;
通过所述模糊值计算各节点的支持度。
4.如权利要求1所述的基于区块链的数据存储和共享方法,其特征在于,所述在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点,包括:
在所述生成时间小于等于预设时间阈值时,通过所述当前区块获取所述当前区块内的当前共识节点集合;
获取所述当前共识节点集合中各个当前共识节点的时间戳;
根据各个当前共识节点的时间戳得到时间戳范围;
将所述共识节点集合中共识节点的时间戳在所述时间戳范围内的共识节点汇总,得到目标共识节点集合;
通过所述目标共识节点集合计算随机数;
通过所述随机数确定下一轮主节点。
5.如权利要求4所述的基于区块链的数据存储和共享方法,其特征在于,所述通过所述目标共识节点集合计算随机数,包括:
获取所述目标共识节点集合中各个目标共识节点的时间戳和签名信息;
通过所述目标共识节点的时间戳对各个所述目标共识节点进行排序,将所述时间戳最小的目标共识节点作为计算共识节点;
将所述计算共识节点的时间戳和签名信息进行异或计算,得到初始随机数;
对所述初始随机数进行字符串截取,得到随机数。
6.如权利要求4所述的基于区块链的数据存储和共享方法,其特征在于,所述通过所述随机数确定下一轮主节点,包括:
获取各个目标共识节点的时间戳中的最大时间戳;
将所述最大时间戳和所述随机数添加至所述当前区块的头部进行交易验证;
在所述当前区块的交易验证通过时,确定所述当前区块有效,并通过所述随机数得到目标主节点编号;
根据所述目标主节点编号确定下一轮主节点。
7.如权利要求1所述的基于区块链的数据存储和共享方法,其特征在于,所述获取生成当前区块的生成时间,包括:
通过所述初始主节点生成区块提案;
将所述区块提案广播至所述共识节点集合中的各个共识节点,并接收所述共识节点基于一致性协议对所述区块提案的反馈信息;
在所述反馈信息为所述共识节点达成共识的情况下,通过所述初始主节点使用所述一致性协议生成当前区块;
根据所述当前区块获取生成所述当前区块的生成时间。
8.如权利要求1至7中任一项所述的基于区块链的数据存储和共享方法,其特征在于,所述获取生成当前区块的生成时间之后,还包括:
将所述生成时间与预设时间阈值进行比较;
在所述生成时间大于所述预设时间阈值时,返回所述计算各节点的支持度的步骤。
9.一种基于区块链的数据存储和共享装置,其特征在于,所述基于区块链的数据存储和共享装置包括:
计算模块,用于在进行数据存储时,计算各节点的支持度;
确定模块,用于根据所述支持度确定初始主节点以及共识节点集合;
获取模块,用于获取生成当前区块的生成时间;
所述确定模块,还用于在所述生成时间小于等于预设时间阈值时,通过随机数确定下一轮主节点;
数据存储和共享模块,用于通过所述下一轮主节点以及所述共识节点集合进行数据存储和共享。
10.一种存储介质,其特征在于,所述存储介质上存储有基于区块链的数据存储和共享程序,所述基于区块链的数据存储和共享程序被处理器执行时实现如权利要求1至8中任一项所述的基于区块链的数据存储和共享方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311152585.4A CN117349366A (zh) | 2023-09-07 | 2023-09-07 | 基于区块链的数据存储和共享方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311152585.4A CN117349366A (zh) | 2023-09-07 | 2023-09-07 | 基于区块链的数据存储和共享方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117349366A true CN117349366A (zh) | 2024-01-05 |
Family
ID=89364034
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311152585.4A Pending CN117349366A (zh) | 2023-09-07 | 2023-09-07 | 基于区块链的数据存储和共享方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117349366A (zh) |
-
2023
- 2023-09-07 CN CN202311152585.4A patent/CN117349366A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Ismail et al. | Lightweight blockchain for healthcare | |
CN110582775B (zh) | 利用utxo基础协议基于区块链管理文件的方法及利用其的文件管理服务器 | |
US10296248B2 (en) | Turn-control rewritable blockchain | |
CN111914027B (zh) | 一种区块链交易关键字可搜索加密方法及系统 | |
US8042193B1 (en) | Systems and methods for controlling data access by use of a universal anonymous identifier | |
CN110990407A (zh) | 基于区块链的数据存储方法、装置、服务器及存储介质 | |
US9698974B2 (en) | Method for creating asymmetrical cryptographic key pairs | |
Silva et al. | Towards a cooperative security system for mobile-health applications | |
CN106850656B (zh) | 一种云环境下多用户文件共享控制方法 | |
WO2022068355A1 (zh) | 基于信息的特征的加密方法、装置、设备及储存介质 | |
KR102465467B1 (ko) | Did 기반의 탈중앙화된 사용자 데이터 저장 및 공유 시스템 | |
CN114884697A (zh) | 基于国密算法的数据加解密方法及相关设备 | |
Le et al. | An anonymous key distribution scheme for group healthcare services in 5G-enabled multi-server environments | |
Zaghloul et al. | $ d $ d-MABE: Distributed Multilevel Attribute-Based EMR Management and Applications | |
WO2019095552A1 (zh) | 区域医疗电子病历安全协同整合系统及方法 | |
Parthasarathy et al. | Secure distributed medical record storage using blockchain and emergency sharing using multi-party computation | |
Chen et al. | A Traceable Blockchain‐Based Vaccination Record Storage and Sharing System | |
WO2022068234A1 (zh) | 基于共享根密钥的加密方法、装置、设备及介质 | |
Wang et al. | Health data security sharing method based on hybrid blockchain | |
Zhu et al. | Enabling efficient and secure health data sharing for Healthcare IoT systems | |
Xie et al. | Verifiable outsourcing EMRs scheme with attribute-based encryption in cloud-edge environments | |
JP3314900B2 (ja) | ゼロ知識証明プロトコルを利用した情報配送方法およびシステム | |
CN117349366A (zh) | 基于区块链的数据存储和共享方法、装置及存储介质 | |
Ding et al. | Secure Multi‐Keyword Search and Access Control over Electronic Health Records in Wireless Body Area Networks | |
Hashim et al. | Performance Evaluation of Blockchain Consensus Algorithms for Electronic Health Record Sharing |
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 |