CN111694502A - 区块链数据存储方法、装置、设备及存储介质 - Google Patents
区块链数据存储方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111694502A CN111694502A CN201910192716.9A CN201910192716A CN111694502A CN 111694502 A CN111694502 A CN 111694502A CN 201910192716 A CN201910192716 A CN 201910192716A CN 111694502 A CN111694502 A CN 111694502A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- storage
- hash value
- transaction data
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
-
- 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
Abstract
本发明实施例提供一种区块链数据存储方法、装置、设备及存储介质。本发明实施例的方法,在需要存储交易数据时,区块链节点不直接将交易数据存储在本地,而是将区块链数据存储到对应集群的数据节点上,区块链节点本地只需存储交易数据的散列值以及交易数据的散列值与存储节点的存储映射信息,通过交易数据的散列值可以唯一确定实际存储该交易数据的存储节点;区块链节点本身无需存储完整的交易数据,且集群数据节点的容量很大,且可以无限扩展,避免了区块链节点存储空间不够用的情况发生,并且每个区块链节点对应集群均存储区块链数据,可以避免中心化的风险,确保区块链数据的安全性。
Description
技术领域
本发明实施例涉及区块链技术领域,尤其涉及一种区块链数据存储方法、装置、设备及存储介质。
背景技术
随着区块链技术的发展,目前区块链技术已经应用越来越广泛。但随着存储数量的越来越多,账本越来越大。单节点的存储限制,已经成为区块链技术中一个非常大的问题。
目前,一种区块链数据存储方案是:区块链节点存储所有的交易数据,当区块链节点空间不够无法继续存储时,通过磁盘扩容等方式扩充区块链节点的存储空间;但是,随着交易数据的增加,数据量终究会达到区块链节点的存储上限,导致单一区块链节点的磁盘无法处理。
另一种区块链数据存储方案是:区块链节点不存储所有的交易数据,而是存储与当前用户有关的交易数据,或者只存储区块头数据。当一个区块链节点不再存储全量数据,而只是存储区块头数据或者部分交易数据时,为了保证数据的全量,势必有一些区块链节点作为全量节点存储全量数据,这些全量节点仍然会很容易出现存储空间不够的问题。另外,全量数据被少数的全量节点存储,不符合区块链的设计初衷,增加了中心化的风险,导致区块链数据存储的安全性低。
发明内容
本发明实施例提供一种区块链数据存储方法、装置、设备及存储介质,用以解决现有技术中区块链节点存储空间不够用,以及全量数据被少数的全量节点存储,增加了中心化的风险,导致区块链数据存储的安全性低的问题。
本发明实施例的第一个方面是提供一种区块链数据存储方法,包括:
区块链节点计算交易数据的散列值;
所述区块链节点根据所述交易数据及其散列值,确定对应集群中的一个数据节点,作为所述交易数据的存储节点;
所述区块链节点将所述交易数据及其散列值发送给所述存储节点,以使所述存储节点存储所述交易数据及其散列值;
所述区块链节点存储所述交易数据的散列值、和所述散列值与所述存储节点的存储映射信息。
本发明实施例的第二个方面是提供一种区块链数据存储方法,包括:
数据节点接收区块链节点发送的交易数据及其散列值;
所述数据节点根据所述散列值验证所述交易数据;
若验证通过,则所述数据节点将所述交易数据与其散列值对应存储。
本发明实施例的第三个方面是提供一种区块链数据存储装置,包括:
散列值计算模块,用于区块链节点计算交易数据的散列值;
存储节点匹配模块,用于所述区块链节点根据所述交易数据及其散列值,确定对应集群中的一个数据节点,作为所述交易数据的存储节点;
通信模块,用于所述区块链节点将所述交易数据及其散列值发送给所述存储节点,以使所述存储节点存储所述交易数据及其散列值;
存储模块,用于所述区块链节点存储所述交易数据的散列值、和所述散列值与所述存储节点的存储映射信息。
本发明实施例的第四个方面是提供一种区块链数据存储装置,包括:
通信模块,用于数据节点接收区块链节点发送的交易数据及其散列值;
验证模块,用于所述数据节点根据所述散列值验证所述交易数据;
存储模块,用于若验证通过,则所述数据节点将所述交易数据与其散列值对应存储。
本发明实施例的第五个方面是提供一种区块链节点,包括:
存储器,处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时实现上述第一个方面所述的方法。
本发明实施例的第六个方面是提供一种数据节点,包括:
存储器,处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器运行所述计算机程序时实现上述第二个方面所述的方法。
本发明实施例的第七个方面是提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述第一个方面所述的方法。
本发明实施例的第八个方面是提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述第二个方面所述的方法。
本发明实施例提供的区块链数据存储方法、装置、设备及存储介质,本发明实施例提供的区块链数据存储方法,在需要存储交易数据时,区块链节点不直接将交易数据存储在本地,而是将区块链数据存储到对应集群的数据节点上,区块链节点本地只需存储交易数据的散列值以及交易数据的散列值与存储节点的存储映射信息,通过交易数据的散列值可以唯一确定实际存储该交易数据的存储节点;区块链节点本身无需存储完整的交易数据,且集群数据节点的容量很大,且可以无限扩展,避免了区块链节点存储空间不够用的情况发生,并且每个区块链节点对应集群均存储区块链数据,可以避免中心化的风险,确保区块链数据的安全性。
附图说明
图1为本发明实施例一提供的区块链数据存储方法流程图;
图2为本发明实施例二提供的区块链数据存储方法流程图;
图3为本发明实施例三提供的区块链数据存储方法的总体流程图;
图4为本发明实施例四提供的另一区块链数据存储方法总体流程图;
图5为本发明实施例五提供的区块链数据存储装置的结构示意图;
图6为本发明实施例七提供的区块链数据存储装置的结构示意图;
图7为本发明实施例九提供的区块链节点的结构示意图;
图8为本发明实施例九提供的数据节点的结构示意图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明实施例构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明实施例的一些方面相一致的装置和方法的例子。
首先对本发明实施例所涉及的名词进行解释:
遍历(Traversal):是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。然遍历的概念也适合于多元素集合的情况,例如数组等。
此外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。在以下各实施例的描述中,“多个”的含义是两个以上,除非另有明确具体的限定。
下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
实施例一
图1为本发明实施例一提供的区块链数据存储方法流程图。本实施例中的方法应用于区块链节点,区块链节点对应一个包括多个数据节点的集群,该集群用于存储交易数据,区块链节点本地不存储完整的交易数据。
如图1所示,该方法具体步骤如下:
步骤S101、区块链节点计算交易数据的散列值。
本实施例中,在需要存储交易数据时,区块链节点首先根据预先设定的安全散列算法(Secure Hash Algorithm,缩写为SHA)计算交易数据的散列值,该散列值可以唯一标识该交易数据。
其中,预先设定的安全散列算法是区块链节点与集群中各数据节点实现约定使用的安全散列算法。安全散列算法可以为SHA-256算法,或者还可以为其他的安全散列算法,本实施例此处不做具体限定。
步骤S102、区块链节点根据交易数据及其散列值,确定对应集群中的一个数据节点,作为交易数据的存储节点。
其中,存储节点是指集群中用于存储该交易数据的数据节点。
本实施例中,在得到交易数据的散列值之后,区块链节点可以从集群中找到一个能够存储该交易数据的数据节点,将该数据节点作为该交易数据的存储节点。
步骤S103、区块链节点将交易数据及其散列值发送给存储节点,以使存储节点存储交易数据及其散列值。
在确定交易数据的存储节点之后,区块链节点将交易数据及其散列值发送给对应集群中的存储节点。存储节点在接收到区块链节点发送的交易数据及其散列值后,可以将交易数据及其散列值对应存储。
步骤S104、区块链节点存储交易数据的散列值、和散列值与存储节点的存储映射信息。
在将交易数据及其散列值存储到对应的存储节点之后,区块链节点本地不再存储完整的交易数据,而是存储交易数据的散列值、和散列值与存储节点的存储映射信息。
其中,散列值与存储节点的存储映射信息,用于记录交易数据的散列值与交易数据的存储节点之间的对应关系,使得区块链节点根据交易数据的散列值,能够唯一确定实际存储交易数据的存储节点。
本发明实施例的方法,在需要存储交易数据时,区块链节点不直接将交易数据存储在本地,而是将区块链数据存储到对应集群的数据节点上,区块链节点本地只需存储交易数据的散列值以及交易数据的散列值与存储节点的存储映射信息,通过交易数据的散列值可以唯一确定实际存储该交易数据的存储节点;区块链节点本身无需存储完整的交易数据,且集群数据节点的容量很大,且可以无限扩展,避免了区块链节点存储空间不够用的情况发生,并且每个区块链节点对应集群均存储区块链数据,可以避免中心化的风险,确保区块链数据的安全性。
实施例二
图2为本发明实施例二提供的区块链数据存储方法流程图。区块链节点对应一个包括多个数据节点的集群,该集群用于存储交易数据,区块链节点本地不存储完整的交易数据。本实施例中的方法应用于集群中的数据节点,数据节点可以是集群中的用于存储交易数据的节点。
如图2所示,该方法具体步骤如下:
步骤S201、数据节点接收区块链节点发送的交易数据及其散列值。
本实施例中,在需要存储交易数据时,区块链节点首先根据预先设定的安全散列算法(Secure Hash Algorithm,缩写为SHA)计算交易数据的散列值,该散列值可以唯一标识该交易数据。
其中,预先设定的安全散列算法是区块链节点与集群中各数据节点实现约定使用的安全散列算法。安全散列算法可以为SHA-256算法,或者还可以为其他的安全散列算法,本实施例此处不做具体限定。
本实施例中,在得到交易数据的散列值之后,区块链节点可以从集群中找到一个能够存储该交易数据的数据节点,将该数据节点作为该交易数据的存储节点;然后将交易数据及其散列值发送给对应集群中的存储节点。
步骤S202、数据节点根据散列值验证交易数据。
数据节点在接收到区块链节点发送的交易数据及其散列值后,可以根据交易数据的散列值对交易数据进行验证,以验证交易数据的正确性。
具体的,数据节点可以采用预先设定的安全散列算法,计算交易数据的散列值,比对计算得到的散列值与接收到的散列值是否一致;若一致,则可以确定交易数据是正确的,验证通过;若不一致,则可以确定交易数据不正确,可能交易数据已被篡改、或丢失部分数据等,验证不通过。
可选的,若验证不通过,则数据节点可以向区块链节点反馈存储失败响应信息,存储失败响应信息包括导致存储失败的原因。例如,提示交易数据验证出错等信息。
步骤203、若验证通过,则数据节点将交易数据与其散列值对应存储。
若步骤S202中根据散列值验证交易数据通过,则数据节点将交易数据与其散列值对应存储。
本实施例中,在将交易数据及其散列值存储到对应的存储节点之后,区块链节点本地不再存储完整的交易数据,而是存储交易数据的散列值、和散列值与存储节点的存储映射信息。
其中,散列值与存储节点的存储映射信息,用于记录交易数据的散列值与实际存储交易数据的数据节点之间的对应关系,使得区块链节点根据交易数据的散列值,能够唯一确定实际存储交易数据的数据节点。
本发明实施例的方法,在需要存储交易数据时,区块链节点不直接将交易数据存储在本地,而是将区块链数据存储到对应集群的数据节点上,区块链节点本地只需存储交易数据的散列值以及交易数据的散列值与存储节点的存储映射信息,通过交易数据的散列值可以唯一确定实际存储该交易数据的存储节点;区块链节点本身无需存储完整的交易数据,且集群数据节点的容量很大,且可以无限扩展,避免了区块链节点存储空间不够用的情况发生,并且每个区块链节点对应集群均存储区块链数据,可以避免中心化的风险,确保区块链数据的安全性。
实施例三
图3为本发明实施例三提供的区块链数据存储方法的总体流程图。在上述实施例一或者实施例二的基础上,本实施例中,如图3所示,该方法具体步骤如下:
步骤S301、区块链节点计算交易数据的散列值。
本实施例中,在需要存储交易数据时,区块链节点首先根据预先设定的安全散列算法(Secure Hash Algorithm,缩写为SHA)计算交易数据的散列值,该散列值可以唯一标识该交易数据。
其中,预先设定的安全散列算法是区块链节点与集群中各数据节点实现约定使用的安全散列算法。安全散列算法可以为SHA-256算法,或者还可以为其他的安全散列算法,本实施例此处不做具体限定。
步骤S302、区块链节点根据散列值,查询对应集群中各数据节点的存储关系映射信息,确定散列值的匹配节点,以及散列值与匹配节点的匹配映射信息。
其中,匹配节点是指根据交易数据的散列值和各数据节点的存储关系映射信息,匹配到的默认用于存储该交易数据的数据节点。
本实施例中,区块链节点预先存储了其对应的集群的配置信息,集群的配置信息包括集群中各个数据节点的存储关系映射信息,以及各数据节点的通信地址信息等。
本实施例中,数据节点的存储关系映射信息可以包括数据节点的通信地址,以及数据节点的至少一条存储映射规则。存储映射规则包括存储标识长度和存储映射字节值,存储标识长度用于表示存储映射字节值的字节数。
该步骤中,按照集群的集群配置信息中数据节点的存储映射规则的优先顺序,区块链节点依次将交易数据的散列值,与数据节点的存储映射规则进行匹配。若散列值与数据节点的任意一条存储映射规则匹配成功,则确定该数据节点为该交易数据的匹配节点。
具体的,区块链节点根据将交易数据的散列值与一条存储映射规则进行匹配时,区块链节点根据存储映射规则中的存储标识长度,从交易数据的散列值中的预设位置获取与存储标识长度等长的部分值。
若与存储标识长度等长的部分值与该存储映射规则的存储映射字节值匹配成功,则确定该交易数据的散列值与该存储映射规则匹配成功,并且将该存储映射规则的存储标识长度,作为该交易数据的散列值与该匹配节点的匹配映射信息。
若与存储标识长度等长的部分值与该存储映射规则的存储映射字节值匹配不成功,则确定该交易数据的散列值与该存储映射规则匹配不成功。
其中,预设位置可以是预设的起始位置,或者预设的接收位置。预设位置具体是交易数据的散列值中的哪个位置,可以由技术人员根据实际需要进行设定,本实施例此处不做具体限定。
例如,假设预设位置是起始位置,且预设位置是散列值中第一个位置;那么,从散列值中的预设位置获取与存储标识长度等长的部分值,是指获取散列值的第一个位置起与存储标识长度等长的部分。
例如,假设预设位置是结束位置,且预设位置是散列值中最后一个位置;那么,从散列值中的预设位置获取与存储标识长度等长的部分值,是指获取散列值的最后的与存储标识长度等长的部分。
例如,假设一个数据节点的存储关系映射信息如下表1所示:
表1
如表1所示,这一数据节点包括以下三条存储映射规则:1)存储标识长度为2字节,存储映射字节值为“AB-EF”范围内;2)存储标识长度为2字节,存储映射字节值为“FA”;3)存储标识长度为3字节,存储映射字节值为“ABC”。假设预设位置为散列值的最后位置,这一数据节点用于存储以下三类交易数据:散列值最后的长度为2字节的部分值在“AB-EF”范围内的交易数据,散列值最后的长度为2字节的部分值为“FA”的交易数据,散列值最后的长度为3字节的部分值为“ABC”的交易数据。
可选的,集群的集群配置信息中,数据节点的存储映射规则可以按照存储标识长度进行优先级排序,存储标识长度值越大,存储映射规则的优先级越高,这样可以避免存储冲突。
另外,通过设置存储映射规则的优先级,可以使得存储节点利用更高效。例如对于一个目前存储利用率比较低的数据节点,可以通过修改优先级配置,使得该数据节点的存储映射规则具有较高的优先级,从而使得数据优先存储至该数据节点,从而提升该数据节点的存储利用率。
本实施例中,一个数据节点可以有一条或者多条存储映射规则。存储映射规则,存储标识长度的大小都可以由技术人员根据各个数据节点的性能和经验进行设定,本实施例此处不做具体限定。
可选的,数据节点的通信地址可以为IP地址、MAC地址或者IPV6地址等,本实施例此处不做具体限定。
另外,数据节点的存储映射规则中的存储标识长度和存储映射字节值是可配置、可变化的,因此通过对集群的配置信息进行修改,可以平行扩展数据节点。
集群的配置信息可以存储在配置文件、内存中、或者其他位置,本实施例此处不做具体限定。
步骤S303、区块链节点向匹配节点发送存储权限请求,存储权限请求至少包括交易数据的大小和匹配映射信息。
在确定匹配节点之后,区块链节点向匹配节点发送存储权限请求。作为交易数据的匹配节点,数据节点接收区块链节点发送的存储权限请求。
步骤S304、匹配节点根据交易数据的大小,以及散列值与数据节点的匹配映射信息,验证自身是否满足存储条件,并向区块链节点反馈验证结果。
在接收到区块链节点发送的存储权限请求之后,匹配节点需要验证自身是否满足该交易数据的存储条件,并向区块链节点反馈验证结果。
具体的,数据节点根据交易数据的大小,以及散列值与数据节点的匹配映射信息,验证自身是否满足存储条件,可以采用如下方式实现:
数据节点根据自身的存储关系映射信息,验证匹配映射信息是否正确;数据节点根据交易数据的大小,验证存储空间是否足够存储交易数据。若匹配映射信息正确,且存储空间足够存储交易数据,则验证结果为满足存储条件。若匹配映射信息不正确,或者存储空间不够存储交易数据,则验证结果为不满足存储条件。
其中,数据节点根据自身的存储关系映射信息,验证匹配映射信息是否正确,是指数据节点验证根据匹配映射信息、是否将存储权限请求中的散列值与自身的任意一条存储映射规则匹配成功。若能够将存储权限请求中的散列值与自身的任意一条存储映射规则匹配成功,则确定匹配映射信息正确。若能够将存储权限请求中的散列值与自身的每条存储映射规则均匹配不成功,则确定匹配映射信息不正确。
可选的,匹配节点验证自身的存储空间是否足够存储交易数据,包括:验证匹配节点的剩余存储空间是否足够存储交易数据。例如,可以根据匹配节点已经使用的存储空间占比,确定匹配节点的剩余存储空间的大小,若需要存储的交易数据大于或者等于剩余存储空间,则匹配节点无法正确存储交易数据。
可选的,匹配节点还可以验证交易数据的大小是否在匹配节点的单次存储数据的大小范围。由于数据节点本身的存储设备(例如磁盘等)的区别,不同的数据节点本身适用于存储的数据类型不一致,不同的数据节点适于的单个数据文件的大小不同,可以预先设定每个数据节点的单次存储数据的大小范围。
可选的,存储权限请求还可以包括认证信息,用于区块链节点和匹配节点双方进行权限认证。那么,该步骤中,匹配节点还可以首先根据存储权限请求的认证信息,对区块链节点的权限信息进行验证,在验证区块链节点的权限信息满足预设权限规则时,执行该步骤以及后续步骤。其中,认证信息和预设权限规则可以由技术人员根据实际需要和经验进行设定,本实施例此处不做具体限定。
另外,存储权限请求还可以包括区块链节点和数据节点双方约定需要交互的信息,本实施例此处不做具体限定。
步骤S305、若验证结果为匹配节点不满足存储条件,则区块链节点依次判断集群中其他数据节点是否满足存储条件,直到找到一个满足存储条件的数据节点,作为交易数据的存储节点。
具体的,该步骤S305具体可以采用如下方式实现:
若验证结果为匹配节点不满足存储条件,则区块链节点依次将集群中其他数据节点作为目标节点,通过以下步骤判断目标节点是否满足存储条件:
步骤一、生成与目标节点匹配的虚拟映射信息。
具体的,区块链节点可以根据目标节点的存储映射规则,生成一个符合该目标节点的一条存储映射规则的虚拟映射信息,该虚拟映射信息包括存储标识长度和虚拟存储映射字节,其中虚拟映射信息的存储标识长度与该条存储映射规则的存储标识长度一致,虚拟存储映射字节与该条存储映射规则的存储映射字节值匹配。
步骤二、区块链节点向目标节点发送存储权限请求,存储权限请求至少包括交易数据的大小和虚拟映射信息。
该步骤二中,区块链节点将虚拟映射信息作为交易数据的散列值与目标节点的匹配映射信息,连同交易数据的大小一起携带在存储权限请求中发送给区块链节点。
步骤三、目标节点根据交易数据的大小,以及虚拟映射信息,验证自身是否满足存储条件,并向区块链节点反馈验证结果。
该步骤三与上述步骤S304类似,本实施例此处不再赘述。
步骤三、若目标节点反馈验证结果为目标节点不满足存储条件,则区块链节点将集群中的下一个数据节点作为新的目标节点,跳转执行上述步骤一。
步骤四、若目标节点反馈验证结果为目标节点满足存储条件,则区块链节点将目标节点作为存储节点,将虚拟映射信息作为散列值与存储节点的匹配映射信息。
步骤S306、若验证结果为匹配节点满足存储条件,则区块链节点将匹配节点作为交易数据的存储节点。
步骤S307、区块链节点将交易数据及其散列值发送给存储节点。
本实施例中,在确定交易数据的存储节点之后,区块链节点将交易数据及其散列值发送给存储节点。
步骤S308、存储节点根据散列值验证交易数据。
存储节点在接收到区块链节点发送的交易数据及其散列值后,可以根据交易数据的散列值对交易数据进行验证,以验证交易数据的正确性。
具体的,存储节点可以采用预先设定的安全散列算法,计算交易数据的散列值,比对计算得到的散列值与接收到的散列值是否一致;若一致,则可以确定交易数据是正确的,验证通过;若不一致,则可以确定交易数据不正确,可能交易数据已被篡改、或丢失部分数据等,验证不通过。
可选的,若验证不通过,则存储节点可以向区块链节点反馈存储失败响应信息,存储失败响应信息包括导致存储失败的原因。例如,提示交易数据验证出错等信息。
步骤S309、若验证通过,则存储节点将交易数据与其散列值对应存储,并向区块链节点发送存储成功消息。
若步骤S308中根据散列值验证交易数据通过,则存储节点将交易数据与其散列值对应存储。
其中,散列值与存储节点的存储映射信息,用于记录交易数据的散列值与实际存储交易数据的数据节点之间的对应关系,使得区块链节点根据交易数据的散列值,能够唯一确定实际存储交易数据的数据节点。
步骤S310、在接收到存储节点发送的存储成功消息后,区块链节点存储交易数据的散列值、和散列值与存储节点的存储映射信息。
本实施例中,在将交易数据及其散列值存储到对应的存储节点之后,区块链节点本地不再存储完整的交易数据,而是存储交易数据的散列值、和散列值与存储节点的存储映射信息。
区块链节点收到存储成功消息后,将原始区块数据中的交易数据修改为交易数据对应的存储数据,然后写入区块链账本。其中,交易数据对应的存储数据包括:交易数据的散列值,以及交易数据的散列值与交易数据的存储节点的存储映射信息。
需要说明的是,在交易数据的存储节点异常时,区块链节点可通过区块链自身的数据同步特性从其他区块链节点获取该交易数据,并将交易数据恢复到其他数据节点。由于交易数据是通过数据节点的通信地址与另一数据节点的存储映射规则进行映射的,通过将存储有交易数据的恢复数据的另一数据节点的通信地址设置为原存储节点的通信地址,完整存储节点的切换,对区块链数据没有任何影响,方便快捷。
本发明实施例提供了区块链数据存储的一种详细的实施方式,数据节点的存储映射规则中的存储标识长度和存储映射字节值是可配置、可变化的,因此通过对集群的配置信息进行修改,可以平行扩展数据节点;另外,由于交易数据是通过数据节点的通信地址与另一数据节点的存储映射规则进行映射的,通过将存储有交易数据的恢复数据的另一数据节点的通信地址设置为原存储节点的通信地址,完整存储节点的切换,对区块链数据没有任何影响,方便快捷。
实施例四
图4为本发明实施例四提供的另一区块链数据存储方法总体流程图。在上述实施例三的基础上,本实施例中,如图4所示,该方法具体步骤如下:
步骤S401、区块链节点根据查询请求确定目标数据的散列值。
其中,目标数据是指查询请求所请求获取的交易数据。区块链节点接收到交易数据的查询请求之后,可以根据查询请求确定所请求的交易数据的散列值。
步骤S402、区块链节点获取目标数据的散列值与存储节点的存储映射信息,并确定目标数据的存储节点。
区块链节点根据目标数据的散列值,从已存储的区块链数据中查询与该目标数据的散列值对应的存储映射信息;然后根据存储映射信息查询对应集群中各数据节点的存储关系映射信息,确定目标数据的存储节点、以及存储节点的通信地址。具体过程与上述实施例二中区块链节点根据散列值,查询对应集群中各数据节点的存储关系映射信息,确定散列值的匹配节点的过程类似,本实施例此处不再赘述。
步骤S403、区块链节点向目标数据的存储节点发送获取数据请求,获取数据请求包括目标数据的散列值。
区块链节点确定目标数据的存储节点的同时,还可以获取存储节点的通信地址。然后区块链节点根据存储节点的通信地址,向目标数据的存储节点发送获取数据请求。
存储节点接收区块链节点发送的获取数据请求,通过步骤S404-S405目标数据的存储节点根据目标数据的散列值,将存储的目标数据发送给区块链节点。
可选的,存储节点还可以对获取数据请求的合法性进行验证,具体的验证规则可以由技术人员跟实际需要和经验进行设定,本实施例此处不做具体限定。例如,对于短时间内频繁发出获取数据请求的区块链节点的获取数据请求不予处理,以防止存储节点被攻击等等。
步骤S404、存储节点获取已存储的与目标数据的散列值对应的交易数据。
步骤S405、存储节点根据目标数据的散列值,对获取到的交易数据进行验证。
该步骤对获取到的交易数据进行验证的过程与上述步骤S308类似,本实施例此处不再赘述。
若对获取到的交易数据验证不通过,则可以向区块链节点反馈数据获取错误信息,以提示区块链节点发送的目标数据的散列值错误,区块链节点可以重新发送获取数据请求。
步骤S406、若对获取到的交易数据验证通过,则数据节点将获取到的交易数据作为目标数据,并将目标数据发送给区块链节点。
步骤S407、区块链节点根据目标数据的散列值,对接收到的目标数据进行验证。
该步骤对接收到的目标数据进行验证的过程与上述步骤S308类似,本实施例此处不再赘述。
步骤S408、对接收到的目标数据验证通过后,将目标数据发送给查询请求的请求设备。
本发明实施例基于上述实施例提供的区块链数据存储方法,给出了交易数据查询的一种详细的实施方式。
实施例五
图5为本发明实施例五提供的区块链数据存储装置的结构示意图。本发明实施例提供的区块链数据存储装置可以执行区块链数据存储方法实施例提供的处理流程。如图5所示,该区块链数据存储装置50包括:散列值计算模块501,存储节点匹配模块502,通信模块503和存储模块504。
具体地,散列值计算模块501用于区块链节点计算交易数据的散列值。
存储节点匹配模块502用于区块链节点根据交易数据及其散列值,确定对应集群中的一个数据节点,作为交易数据的存储节点。
通信模块503用于区块链节点将交易数据及其散列值发送给存储节点,以使存储节点存储交易数据及其散列值。
存储模块504用于区块链节点存储交易数据的散列值、和散列值与存储节点的存储映射信息。
本发明实施例提供的装置可以具体用于执行上述实施例一所提供的方法实施例,具体功能此处不再赘述。
本发明实施例的方法,在需要存储交易数据时,区块链节点不直接将交易数据存储在本地,而是将区块链数据存储到对应集群的数据节点上,区块链节点本地只需存储交易数据的散列值以及交易数据的散列值与存储节点的存储映射信息,通过交易数据的散列值可以唯一确定实际存储该交易数据的存储节点;区块链节点本身无需存储完整的交易数据,且集群数据节点的容量很大,且可以无限扩展,避免了区块链节点存储空间不够用的情况发生,并且每个区块链节点对应集群均存储区块链数据,可以避免中心化的风险,确保区块链数据的安全性。
实施例六
在上述实施例五的基础上,本实施例中,存储节点匹配模块还用于:
区块链节点根据散列值,查询对应集群中各数据节点的存储关系映射信息,确定散列值的匹配节点,以及散列值与匹配节点的匹配映射信息;区块链节点向匹配节点发送存储权限请求,存储权限请求至少包括交易数据的大小和匹配映射信息,以使匹配节点验证是否满足存储条件,并反馈验证结果;若验证结果为匹配节点满足存储条件,则区块链节点将匹配节点作为交易数据的存储节点。
可选的,存储节点匹配模块还用于:
若验证结果为匹配节点不满足存储条件,则区块链节点依次将集群中其他数据节点作为目标节点,通过以下步骤判断目标节点是否满足存储条件:
步骤一、生成与目标节点匹配的虚拟映射信息,将虚拟映射信息作为散列值与目标节点的匹配映射信息。
步骤二、区块链节点向目标节点发送存储权限请求,存储权限请求至少包括交易数据的大小和虚拟映射信息,以使目标节点验证是否满足存储条件,并反馈验证结果。
步骤三、若目标节点反馈验证结果为目标节点不满足存储条件,则区块链节点将集群中的下一个数据节点作为新的目标节点,跳转执行上述步骤一。
步骤四、若目标节点反馈验证结果为目标节点满足存储条件,则区块链节点将目标节点作为存储节点,将虚拟映射信息作为散列值与存储节点的匹配映射信息。
可选的,通信模块还用于接收存储节点发送的存储成功消息。存储模块还用于:在接收到存储节点发送的存储成功消息后,执行存储交易数据的散列值、和散列值与存储节点的存储映射信息的步骤。
可选的,装置还包括:数据查询模块。
数据查询模块用于:
区块链节点根据查询请求确定目标数据的散列值;区块链节点获取目标数据的散列值与存储节点的存储映射信息,并确定目标数据的存储节点;区块链节点向目标数据的存储节点发送获取数据请求,获取数据请求包括目标数据的散列值,以使目标数据的存储节点根据目标数据的散列值,将存储的目标数据发送给区块链节点;区块链节点接收目标数据。
可选的,数据查询模块用于:
区块链节点根据目标数据的散列值,对接收到的目标数据进行验证;对接收到的目标数据验证通过后,将目标数据发送给查询请求的请求设备。
本发明实施例提供的装置可以具体用于执行上述实施例二和实施例三所提供的方法实施例中区块链节点执行的处理流程,具体功能此处不再赘述。
本发明实施例提供了区块链数据存储的一种详细的实施方式,数据节点的存储映射规则中的存储标识长度和存储映射字节值是可配置、可变化的,因此通过对集群的配置信息进行修改,可以平行扩展数据节点;另外,由于交易数据是通过数据节点的通信地址与另一数据节点的存储映射规则进行映射的,通过将存储有交易数据的恢复数据的另一数据节点的通信地址设置为原存储节点的通信地址,完整存储节点的切换,对区块链数据没有任何影响,方便快捷。
实施例七
图6为本发明实施例七提供的区块链数据存储装置的结构示意图。本发明实施例提供的区块链数据存储装置可以执行区块链数据存储方法实施例提供的处理流程。如图6所示,该区块链数据存储装置60包括:通信模块601,验证模块602和存储模块603。
具体地,通信模块601用于数据节点接收区块链节点发送的交易数据及其散列值。
验证模块602用于数据节点根据散列值验证交易数据。
存储模块603用于若验证通过,则数据节点将交易数据与其散列值对应存储。
本发明实施例提供的装置可以具体用于执行上述实施例二所提供的方法实施例,具体功能此处不再赘述。
本发明实施例的方法,在需要存储交易数据时,区块链节点不直接将交易数据存储在本地,而是将区块链数据存储到对应集群的数据节点上,区块链节点本地只需存储交易数据的散列值以及交易数据的散列值与存储节点的存储映射信息,通过交易数据的散列值可以唯一确定实际存储该交易数据的存储节点;区块链节点本身无需存储完整的交易数据,且集群数据节点的容量很大,且可以无限扩展,避免了区块链节点存储空间不够用的情况发生,并且每个区块链节点对应集群均存储区块链数据,可以避免中心化的风险,确保区块链数据的安全性。
实施例八
在上述实施例七的基础上,本实施例中,通信模块还用于:数据节点接收区块链节点发送的存储权限请求,存储权限请求至少包括交易数据的大小,以及散列值与数据节点的匹配映射信息。
验证模块还用于:数据节点根据交易数据的大小,以及散列值与数据节点的匹配映射信息,验证自身是否满足存储条件。
通信模块还用于:向区块链节点反馈验证结果。
可选的,验证模块还用于:
数据节点根据自身的存储关系映射信息,验证匹配映射信息是否正确;数据节点根据交易数据的大小,验证存储空间是否足够存储交易数据;若匹配映射信息正确,且存储空间足够存储交易数据,则验证结果为满足存储条件;若匹配映射信息不正确,或者存储空间不够存储交易数据,则验证结果为不满足存储条件。
可选的,通信模块还用于数据节点向区块链节点发送存储成功消息。
可选的,该装置还包括:数据查询模块。
数据查询模块用于:
数据节点接收区块链节点发送的获取数据请求,获取数据请求包括目标数据的散列值;数据节点获取已存储的与目标数据的散列值对应的交易数据;数据节点根据目标数据的散列值,对获取到的交易数据进行验证;若对获取到的交易数据验证通过,则数据节点将获取到的交易数据作为目标数据,并将目标数据发送给区块链节点。
本发明实施例提供的装置可以具体用于执行上述实施例二和实施例三所提供的方法实施例中数据节点执行的处理流程,具体功能此处不再赘述。
本发明实施例提供了区块链数据存储的一种详细的实施方式,数据节点的存储映射规则中的存储标识长度和存储映射字节值是可配置、可变化的,因此通过对集群的配置信息进行修改,可以平行扩展数据节点;另外,由于交易数据是通过数据节点的通信地址与另一数据节点的存储映射规则进行映射的,通过将存储有交易数据的恢复数据的另一数据节点的通信地址设置为原存储节点的通信地址,完整存储节点的切换,对区块链数据没有任何影响,方便快捷。
实施例九
图7为本发明实施例九提供的区块链节点的结构示意图。如图7所示,该区块链节点70包括:处理器701,存储器702,以及存储在存储器702上并可由处理器701执行的计算机程序。
处理器701在执行存储在存储器702上的计算机程序时实现上述任一方法实施例中区块链节点执行的方法流程。
本发明实施例的方法,在需要存储交易数据时,区块链节点不直接将交易数据存储在本地,而是将区块链数据存储到对应集群的数据节点上,区块链节点本地只需存储交易数据的散列值以及交易数据的散列值与存储节点的存储映射信息,通过交易数据的散列值可以唯一确定实际存储该交易数据的存储节点;区块链节点本身无需存储完整的交易数据,且集群数据节点的容量很大,且可以无限扩展,避免了区块链节点存储空间不够用的情况发生,并且每个区块链节点对应集群均存储区块链数据,可以避免中心化的风险,确保区块链数据的安全性。
实施例十
图8为本发明实施例九提供的数据节点的结构示意图。如图8所示,该数据节点80包括:处理器801,存储器802,以及存储在存储器802上并可由处理器801执行的计算机程序。
处理器801在执行存储在存储器802上的计算机程序时实现上述任一方法实施例中区块链节点执行的方法流程。
本发明实施例的方法,在需要存储交易数据时,区块链节点不直接将交易数据存储在本地,而是将区块链数据存储到对应集群的数据节点上,区块链节点本地只需存储交易数据的散列值以及交易数据的散列值与存储节点的存储映射信息,通过交易数据的散列值可以唯一确定实际存储该交易数据的存储节点;区块链节点本身无需存储完整的交易数据,且集群数据节点的容量很大,且可以无限扩展,避免了区块链节点存储空间不够用的情况发生,并且每个区块链节点对应集群均存储区块链数据,可以避免中心化的风险,确保区块链数据的安全性。
另外,本发明实施例还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法实施例中区块链节点执行的方法流程。
另外,本发明实施例还提供一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法实施例中数据节点执行的方法流程。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求书指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求书来限制。
Claims (23)
1.一种区块链数据存储方法,其特征在于,包括:
区块链节点计算交易数据的散列值;
所述区块链节点根据所述交易数据及其散列值,确定对应集群中的一个数据节点,作为所述交易数据的存储节点;
所述区块链节点将所述交易数据及其散列值发送给所述存储节点,以使所述存储节点存储所述交易数据及其散列值;
所述区块链节点存储所述交易数据的散列值、和所述散列值与所述存储节点的存储映射信息。
2.根据权利要求1所述的方法,其特征在于,所述区块链节点根据所述交易数据及其散列值,确定对应集群中的一个数据节点,作为所述交易数据的存储节点,包括:
所述区块链节点根据所述散列值,查询对应集群中各数据节点的存储关系映射信息,确定所述散列值的匹配节点,以及所述散列值与所述匹配节点的匹配映射信息;
所述区块链节点向所述匹配节点发送存储权限请求,所述存储权限请求至少包括交易数据的大小和所述匹配映射信息,以使所述匹配节点验证是否满足存储条件,并反馈验证结果;
若验证结果为所述匹配节点满足存储条件,则所述区块链节点将所述匹配节点作为所述交易数据的存储节点。
3.根据权利要求2所述的方法,其特征在于,所述区块链节点向所述匹配节点发送存储权限请求,所述存储权限请求至少包括交易数据的大小,以使所述匹配节点验证是否满足存储条件,并反馈验证结果之后,还包括:
若验证结果为所述匹配节点不满足存储条件,则所述区块链节点依次将所述集群中其他数据节点作为目标节点,通过以下步骤判断所述目标节点是否满足所述存储条件:
步骤一、生成与所述目标节点匹配的虚拟映射信息,将所述虚拟映射信息作为所述散列值与所述目标节点的匹配映射信息;
步骤二、所述区块链节点向所述目标节点发送存储权限请求,所述存储权限请求至少包括交易数据的大小和所述虚拟映射信息,以使所述目标节点验证是否满足所述存储条件,并反馈验证结果;
步骤三、若所述目标节点反馈验证结果为所述目标节点不满足所述存储条件,则所述区块链节点将所述集群中的下一个数据节点作为新的目标节点,跳转执行上述步骤一;
步骤四、若所述目标节点反馈验证结果为所述目标节点满足所述存储条件,则所述区块链节点将所述目标节点作为所述存储节点,将所述虚拟映射信息作为所述散列值与所述存储节点的匹配映射信息。
4.根据权利要求1所述的方法,其特征在于,所述区块链节点将所述交易数据及其散列值发送给对应集群中的存储节点,以使所述存储节点存储所述交易数据及其散列值之后,还包括:
接收所述存储节点发送的存储成功消息;
在接收到所述存储节点发送的存储成功消息后,执行存储所述交易数据的散列值、和所述散列值与所述存储节点的存储映射信息的步骤。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述区块链节点存储所述交易数据的散列值、和所述散列值与所述存储节点的存储映射信息之后,还包括:
所述区块链节点根据查询请求确定目标数据的散列值;
所述区块链节点获取所述目标数据的散列值与存储节点的存储映射信息,并确定所述目标数据的存储节点;
所述区块链节点向所述目标数据的存储节点发送获取数据请求,所述获取数据请求包括所述目标数据的散列值,以使所述目标数据的存储节点根据所述目标数据的散列值,将存储的所述目标数据发送给所述区块链节点;
所述区块链节点接收所述目标数据。
6.根据权利要求5所述的方法,其特征在于,所述区块链节点接收所述目标数据之后,还包括:
所述区块链节点根据所述目标数据的散列值,对接收到的目标数据进行验证;
对接收到的目标数据验证通过后,将所述目标数据发送给所述查询请求的请求设备。
7.一种区块链数据存储方法,其特征在于,包括:
数据节点接收区块链节点发送的交易数据及其散列值;
所述数据节点根据所述散列值验证所述交易数据;
若验证通过,则所述数据节点将所述交易数据与其散列值对应存储。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述数据节点接收所述区块链节点发送的存储权限请求,所述存储权限请求至少包括所述交易数据的大小,以及所述散列值与所述数据节点的匹配映射信息;
所述数据节点根据所述交易数据的大小,以及所述散列值与所述数据节点的匹配映射信息,验证自身是否满足存储条件,并向所述区块链节点反馈验证结果。
9.根据权利要求8所述的方法,其特征在于,所述数据节点根据所述交易数据的大小,以及所述散列值与所述数据节点的匹配映射信息,验证自身是否满足存储条件,包括:
所述数据节点根据自身的存储关系映射信息,验证所述匹配映射信息是否正确;
所述数据节点根据所述交易数据的大小,验证存储空间是否足够存储所述交易数据;
若所述匹配映射信息正确,且存储空间足够存储所述交易数据,则验证结果为满足所述存储条件;
若所述匹配映射信息不正确,或者存储空间不够存储所述交易数据,则验证结果为不满足所述存储条件。
10.根据权利要求7-9任一项所述的方法,其特征在于,若验证通过,则所述数据节点存储所述交易数据及其散列值之后,还包括:
所述数据节点向所述区块链节点发送存储成功消息。
11.根据权利要求7-9任一项所述的方法,其特征在于,所述若验证通过,则所述数据节点将所述交易数据与其散列值对应存储之后,还包括:
所述数据节点接收所述区块链节点发送的获取数据请求,所述获取数据请求包括目标数据的散列值;
所述数据节点获取已存储的与所述目标数据的散列值对应的交易数据;
所述数据节点根据所述目标数据的散列值,对获取到的交易数据进行验证;
若对获取到的交易数据验证通过,则所述数据节点将获取到的交易数据作为目标数据,并将所述目标数据发送给所述区块链节点。
12.一种区块链数据存储装置,其特征在于,包括:
散列值计算模块,用于区块链节点计算交易数据的散列值;
存储节点匹配模块,用于所述区块链节点根据所述交易数据及其散列值,确定对应集群中的一个数据节点,作为所述交易数据的存储节点;
通信模块,用于所述区块链节点将所述交易数据及其散列值发送给所述存储节点,以使所述存储节点存储所述交易数据及其散列值;
存储模块,用于所述区块链节点存储所述交易数据的散列值、和所述散列值与所述存储节点的存储映射信息。
13.根据权利要求12所述的装置,其特征在于,所述存储节点匹配模块还用于:
所述区块链节点根据所述散列值,查询对应集群中各数据节点的存储关系映射信息,确定所述散列值的匹配节点,以及所述散列值与所述匹配节点的匹配映射信息;
所述区块链节点向所述匹配节点发送存储权限请求,所述存储权限请求至少包括交易数据的大小和所述匹配映射信息,以使所述匹配节点验证是否满足存储条件,并反馈验证结果;
若验证结果为所述匹配节点满足存储条件,则所述区块链节点将所述匹配节点作为所述交易数据的存储节点。
14.根据权利要求13所述的装置,其特征在于,所述存储节点匹配模块还用于:
若验证结果为所述匹配节点不满足存储条件,则所述区块链节点依次将所述集群中其他数据节点作为目标节点,通过以下步骤判断所述目标节点是否满足所述存储条件:
步骤一、生成与所述目标节点匹配的虚拟映射信息,将所述虚拟映射信息作为所述散列值与所述目标节点的匹配映射信息;
步骤二、所述区块链节点向所述目标节点发送存储权限请求,所述存储权限请求至少包括交易数据的大小和所述虚拟映射信息,以使所述目标节点验证是否满足所述存储条件,并反馈验证结果;
步骤三、若所述目标节点反馈验证结果为所述目标节点不满足所述存储条件,则所述区块链节点将所述集群中的下一个数据节点作为新的目标节点,跳转执行上述步骤一;
步骤四、若所述目标节点反馈验证结果为所述目标节点满足所述存储条件,则所述区块链节点将所述目标节点作为所述存储节点,将所述虚拟映射信息作为所述散列值与所述存储节点的匹配映射信息。
15.根据权利要求12-14任一项所述的装置,其特征在于,所述装置还包括:数据查询模块,所述数据查询模块用于:
所述区块链节点根据查询请求确定目标数据的散列值;
所述区块链节点获取所述目标数据的散列值与存储节点的存储映射信息,并确定所述目标数据的存储节点;
所述区块链节点向所述目标数据的存储节点发送获取数据请求,所述获取数据请求包括所述目标数据的散列值,以使所述目标数据的存储节点根据所述目标数据的散列值,将存储的所述目标数据发送给所述区块链节点;
所述区块链节点接收所述目标数据。
16.一种区块链数据存储装置,其特征在于,包括:
通信模块,用于数据节点接收区块链节点发送的交易数据及其散列值;
验证模块,用于所述数据节点根据所述散列值验证所述交易数据;
存储模块,用于若验证通过,则所述数据节点将所述交易数据与其散列值对应存储。
17.根据权利要求16所述的装置,其特征在于,
所述通信模块还用于:所述数据节点接收所述区块链节点发送的存储权限请求,所述存储权限请求至少包括所述交易数据的大小,以及所述散列值与所述数据节点的匹配映射信息;
所述验证模块还用于:所述数据节点根据所述交易数据的大小,以及所述散列值与所述数据节点的匹配映射信息,验证自身是否满足存储条件;
所述通信模块还用于:向所述区块链节点反馈验证结果。
18.根据权利要求17所述的装置,其特征在于,所述验证模块还用于:
所述数据节点根据自身的存储关系映射信息,验证所述匹配映射信息是否正确;
所述数据节点根据所述交易数据的大小,验证存储空间是否足够存储所述交易数据;
若所述匹配映射信息正确,且存储空间足够存储所述交易数据,则验证结果为满足所述存储条件;
若所述匹配映射信息不正确,或者存储空间不够存储所述交易数据,则验证结果为不满足所述存储条件。
19.根据权利要求16-18任一项所述的装置,其特征在于,所述装置还包括:数据查询模块,所述数据查询模块用于:
所述数据节点接收所述区块链节点发送的获取数据请求,所述获取数据请求包括目标数据的散列值;
所述数据节点获取已存储的与所述目标数据的散列值对应的交易数据;
所述数据节点根据所述目标数据的散列值,对获取到的交易数据进行验证;
若对获取到的交易数据验证通过,则所述数据节点将获取到的交易数据作为目标数据,并将所述目标数据发送给所述区块链节点。
20.一种区块链节点,其特征在于,包括:
存储器,处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,
所述处理器运行所述计算机程序时实现如权利要求1-6中任一项所述的方法。
21.一种数据节点,其特征在于,包括:
存储器,处理器,以及存储在所述存储器上并可在所述处理器上运行的计算机程序,
所述处理器运行所述计算机程序时实现如权利要求7-11中任一项所述的方法。
22.一种计算机可读存储介质,其特征在于,存储有计算机程序,
所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
23.一种计算机可读存储介质,其特征在于,存储有计算机程序,
所述计算机程序被处理器执行时实现如权利要求7-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910192716.9A CN111694502B (zh) | 2019-03-14 | 2019-03-14 | 区块链数据存储方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910192716.9A CN111694502B (zh) | 2019-03-14 | 2019-03-14 | 区块链数据存储方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111694502A true CN111694502A (zh) | 2020-09-22 |
CN111694502B CN111694502B (zh) | 2023-05-30 |
Family
ID=72475052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910192716.9A Active CN111694502B (zh) | 2019-03-14 | 2019-03-14 | 区块链数据存储方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111694502B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966538A (zh) * | 2020-10-20 | 2020-11-20 | 支付宝(杭州)信息技术有限公司 | 一种区块链数据的恢复方法和装置 |
CN113296707A (zh) * | 2021-05-31 | 2021-08-24 | 尧领有限公司 | 磁盘存储方法及系统、区块链节点、计算机可读存储介质 |
CN114676444A (zh) * | 2022-03-24 | 2022-06-28 | 广州大师明信息服务有限公司 | 一种基于区块链的存储系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5858506B1 (ja) * | 2015-04-09 | 2016-02-10 | 株式会社Orb | 仮想通貨管理プログラム、及び仮想通貨管理方法 |
CN107135264A (zh) * | 2017-05-12 | 2017-09-05 | 成都优孚达信息技术有限公司 | 用于嵌入式设备的数据编码方法 |
US20180191502A1 (en) * | 2015-09-04 | 2018-07-05 | NEC Laboratories Europe GmbH | Method for storing an object on a plurality of storage nodes |
CN108769230A (zh) * | 2018-06-06 | 2018-11-06 | 腾讯科技(深圳)有限公司 | 交易数据存储方法、装置、服务器及存储介质 |
US20180359089A1 (en) * | 2017-06-07 | 2018-12-13 | At&T Intellectual Property I, L.P. | Blockchain-based social media history maps |
US20190182033A1 (en) * | 2016-08-19 | 2019-06-13 | Alibaba Group Holding Limited | Data storage, data check, and data linkage method and apparatus |
US20190296916A1 (en) * | 2016-12-26 | 2019-09-26 | Alibaba Group Holding Limited | Method and apparatus for verifying block data in a blockchain |
US20200026700A1 (en) * | 2017-03-28 | 2020-01-23 | Alibaba Group Holding Limited | Blockchain-based data storage and query method and device |
CN111866085A (zh) * | 2020-06-28 | 2020-10-30 | 北京沃东天骏信息技术有限公司 | 基于区块链的数据存储方法、系统和装置 |
-
2019
- 2019-03-14 CN CN201910192716.9A patent/CN111694502B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5858506B1 (ja) * | 2015-04-09 | 2016-02-10 | 株式会社Orb | 仮想通貨管理プログラム、及び仮想通貨管理方法 |
US20180191502A1 (en) * | 2015-09-04 | 2018-07-05 | NEC Laboratories Europe GmbH | Method for storing an object on a plurality of storage nodes |
US20190182033A1 (en) * | 2016-08-19 | 2019-06-13 | Alibaba Group Holding Limited | Data storage, data check, and data linkage method and apparatus |
US20190296916A1 (en) * | 2016-12-26 | 2019-09-26 | Alibaba Group Holding Limited | Method and apparatus for verifying block data in a blockchain |
US20200026700A1 (en) * | 2017-03-28 | 2020-01-23 | Alibaba Group Holding Limited | Blockchain-based data storage and query method and device |
CN107135264A (zh) * | 2017-05-12 | 2017-09-05 | 成都优孚达信息技术有限公司 | 用于嵌入式设备的数据编码方法 |
US20180359089A1 (en) * | 2017-06-07 | 2018-12-13 | At&T Intellectual Property I, L.P. | Blockchain-based social media history maps |
CN108769230A (zh) * | 2018-06-06 | 2018-11-06 | 腾讯科技(深圳)有限公司 | 交易数据存储方法、装置、服务器及存储介质 |
CN111866085A (zh) * | 2020-06-28 | 2020-10-30 | 北京沃东天骏信息技术有限公司 | 基于区块链的数据存储方法、系统和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111966538A (zh) * | 2020-10-20 | 2020-11-20 | 支付宝(杭州)信息技术有限公司 | 一种区块链数据的恢复方法和装置 |
CN113296707A (zh) * | 2021-05-31 | 2021-08-24 | 尧领有限公司 | 磁盘存储方法及系统、区块链节点、计算机可读存储介质 |
CN114676444A (zh) * | 2022-03-24 | 2022-06-28 | 广州大师明信息服务有限公司 | 一种基于区块链的存储系统 |
CN114676444B (zh) * | 2022-03-24 | 2023-10-10 | 苏州极岸科技有限公司 | 一种基于区块链的存储系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111694502B (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107396360B (zh) | 区块验证方法及装置 | |
CN109831487B (zh) | 分片文件验证方法及终端设备 | |
CN111694502B (zh) | 区块链数据存储方法、装置、设备及存储介质 | |
WO2017041606A1 (zh) | 程序文件校验方法及装置、服务器和终端 | |
CN109361740A (zh) | 一种区块链的区块生成方法、装置、设备和介质 | |
CN110989922B (zh) | 一种分布式数据存储方法及系统 | |
CN112487492B (zh) | 数据验证方法、系统及设备 | |
CN104468843A (zh) | 一种文件上传方法及装置 | |
CN111177225B (zh) | 账户状态存在性证明方法及装置和状态查询方法及装置 | |
CN110995513A (zh) | 物联网系统中的数据发送、接收方法、物联网设备及平台 | |
WO2022142153A1 (zh) | 电表升级方法、系统、智能电表及存储介质 | |
CN109040255B (zh) | 物联网设备接入方法、装置、设备及存储介质 | |
CN112734431B (zh) | 查询Fabric区块链账本数据的方法和装置 | |
CN113888164A (zh) | 区块链交易池实现方法、装置、计算机设备和存储介质 | |
CN109858285B (zh) | 区块链数据的处理方法、装置、设备和介质 | |
CN111290998A (zh) | 迁移数据的校对方法、装置、设备及存储介质 | |
CN109101232B (zh) | 一种产品开发的方法、装置、计算机设备及存储介质 | |
CN112637231A (zh) | 授权方法、装置、存储介质及服务器 | |
CN112579141A (zh) | 一种嵌入式系统的固件更新方法、装置、设备及存储介质 | |
CN112636984A (zh) | 联盟链配置更新方法、设备及计算机介质 | |
CN112286565A (zh) | 一种基于存储容器的嵌入式系统差分升级方法 | |
CN110765125B (zh) | 一种存储数据的方法及装置 | |
CN108365962B (zh) | 一种证书吊销列表查询方法及装置 | |
CN113610529A (zh) | 联盟链的区块存储、获取方法、装置、节点和存储介质 | |
CN106326310B (zh) | 一种手机客户端软件的资源加密更新方法 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |