CN117473020B - 数据存取方法、***及计算机存储介质和终端设备 - Google Patents
数据存取方法、***及计算机存储介质和终端设备 Download PDFInfo
- Publication number
- CN117473020B CN117473020B CN202311817487.8A CN202311817487A CN117473020B CN 117473020 B CN117473020 B CN 117473020B CN 202311817487 A CN202311817487 A CN 202311817487A CN 117473020 B CN117473020 B CN 117473020B
- Authority
- CN
- China
- Prior art keywords
- data
- fragments
- fragment
- original
- hash value
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 42
- 239000012634 fragment Substances 0.000 claims abstract description 162
- 238000013500 data storage Methods 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 claims description 3
- 238000011084 recovery Methods 0.000 description 9
- 230000002159 abnormal effect Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- 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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- 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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- 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
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及数据存取方法、***及计算机存储介质和终端设备,包括:将原始数据分片,分发给不同的区块链节点存储;并将各分片的存储位置、哈希值,存储在本地数据库;向m个区块链节点中的若干个正常节点请求获取对应数据分片的信息,判断获取数据分片的哈希值与存储的对应数据分片的哈希值是否有若干个一致,直到获取到了重构原始数据的最少分片数量的数据分片时,重构原始数据,得到待读取的数据。该方案,不仅能减少区块链存储资源的占用、提高存储资源的利用率,而且能够保障恢复的原始数据完整、准确。
Description
技术领域
本发明涉及区块链技术领域,特别是涉及一种基于区块链的数据存取方法。
背景技术
区块链是一种分布式数据库技术,区块链网络中每个节点都按照块链式结构存储完整的数据且区块链网络的每个节点上存储的数据都是独立的、地位等同的。当区块链网络中的某个节点因为受到攻击而被破坏时,该节点上存储的完整数据就会丢失,另外其他节点也无法获取到存储在该节点上的数据,将会导致数据缺失的问题。
目前,对于区块链数据的存储备份,一是:完全存储方式,即在1个或多个备份节点中存储待备份数据的完整原始数据。该方式虽然存储方式简单,但需要大量的存储空间来保存备份数据,随着数据量的增加,备份所需的存储空间也会不断增加,其不仅会占用较多的区块链存储资源,而且当原始数据节点和备份数据的节点都失效或被破坏时,原始数据将不能恢复,同时不能有效的保证数据的完整性。二是:将数据进行分片,将分片数据存储在多个节点上来实现的,可以在单一节点受到攻击时,即使单一节点的数据丢失仍然不影响数据的完整性。但是,现有技术的分片,大多采用直接拆分拼接的方式,且没有对数据的完整性、准确性进行验证,可能获得的数据存在着被篡改的风险,其数据恢复准确性低。
因此,如何改善该数据备份和恢复的方式,提供一种更完善的数据存取方式,是该领域亟待解决的技术问题。
发明内容
为解决上述技术问题,本发明提供一种数据存取方法,包括:
数据存储步骤:
A1:将原始数据分成m个数据分片,分发给m个不同的区块链节点进行存储;
A2:计算各数据分片的哈希值,并将各数据分片的存储位置、数据分片的哈希值,存储在本地数据库;
t为重构原始数据所需的最少数据分片的个数,1≤t≤m,初始化时tj=t;
数据读取步骤:
B1:向m个区块链节点中的至少tj个正常节点请求获取对应数据分片的信息,得到Tj个数据分片;
B2:判断获取的Tj个数据分片的哈希值与存储的对应数据分片的哈希值是否至少有tj个一致;
B3:若有,则根据获取的至少t个一致哈希值对应的数据分片,重构原始数据,得到对应待读取的数据;
B4:若无,则根据判断结果确定当前已有一致哈希值的数据分片数量t’,计算当前还需获取最少数据分片的个数tj=t-t’,返回步骤B1,直到获取至少t个一致哈希值对应的数据分片,根据获取的至少t个一致哈希值对应的数据分片,重构原始数据,得到待读取的数据。
进一步地,步骤B1前,还包括:
判断待读取数据,是否为某个正常节点单独存储的数据分片;
若是,则根据数据分片的存储位置,向对应节点请求获取对应数据分片的信息;并判断获取的数据分片的哈希值与存储的对应数据分片的哈希值是否一致,若一致,则数据读取成功;
若待读取数据不是某个正常节点单独存储的数据分片,或,获取的数据分片的哈希值与存储的对应数据分片的哈希值不一致,则执行步骤B1-B4,完成数据读取步骤。
进一步地,所述将原始数据分成m个数据分片的步骤,包括:
确定分片数量m和重构原始数据所需的最少数据分片t;
确定t-1个随机系数,构建一个度数为t-1的多项式;
计算多项式的自变量x依次为1至m的整数时多项式的值,将原始数据分成m个数据分片。
进一步地,所述重构原始数据的步骤,包括利用拉格朗日插值算法对数据进行重构。
进一步地,分片数量m,根据当前原始数据的长度、信息重要性程度、区块链***中当前可用的节点数量而确定。
进一步地,重构原始数据所需的最少数据分片t,根据当前原始数据的长度、分片数量m、每片分片数据的长度而确定。
另一方面,本发明还提供一种数据存取***,包括数据拥有者、数据分片模块、数据重构模块和区块链节点,用于执行上述任意的数据存取方法。
进一步地,数据拥有者,经数据分片模块,将原始数据分成m个数据分片,并计算各数据分片的哈希值;将各数据分片分发给m个不同的区块链节点,数据分片的存储位置、哈希值存储在本地数据库;
数据拥有者,经数据重构模块,从区块链***中读取待读取信息。
另一方面,本发明还提供一种计算机存储介质,存储有可执行程序代码;所述可执行程序代码,用于执行上述任意的数据存取方法。
另一方面,本发明还提供一种终端设备,包括存储器和处理器;所述存储器存储有可被处理器执行的程序代码;所述程序代码用于执行上述任意的数据存取方法。
本发明提供了一种数据存取方法、***及计算机存储介质和终端设备,涉及区块链数据的安全性和可靠性,可用于对区块链数据的存储和恢复,即数据存取。尤其涉及一种区块链数据的分片存储方法,设计了区块链数据的分片方案,同时基于哈希函数数据查询者可以有效的验证数据是否被篡改。优选的通过共享技术将数据分成多个数据分片并存储在不同的节点上,可以有效节省每个区块上的存储资源,并且即使部分节点出现异常或者其上的数据丢失、篡改时,也可将原始数据恢复出来。
附图说明
图1为本发明数据存取方法的一个实施例的流程图;
图2为本发明数据存取方法的区块链***的结构示意图;
图3为本发明数据存取方法的另一个实施例的流程图;
图4为本发明数据存取方法的另一个实施例的流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,若本发明实施例中有涉及方向性指示,诸如上、下、左、右、前、后……,则该方向性指示仅用于解释在某一特定姿态下,各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变。另外,若本发明实施例中有涉及“第一、第二”、“S1、S2”、“步骤一、步骤二”等的描述,则该类描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量或者表明方法的执行顺序等,本领域技术人员可以理解的凡是在发明技术构思下,不违背其发明要点的,都应该列入本发明的保护范围。
如图1 所示,本发明提供一种数据存取方法,包括:
A:数据存储:
A1:将原始数据分成m个数据分片,分发给m个不同的区块链节点进行存储;
具体的,数据拥有者,可选但不仅限于为个人数据拥有者或企业数据拥有者等,如个人数据拥有者包括:个人在使用各种在线服务、社交媒体平台、移动应用程序等过程中,所产生的大量个人数据;企业数据拥有者包括:企业在运营过程中会产生大量的业务数据,如客户数据、销售数据、供应链数据等。更为具体的,如图2-3所示,将原始数据分成m个数据分片,示例为图3所示的数据分片1至数据分片5,并向区块链***中的5个不同节点发送数据备份请求,将数据分片1至数据分片5随机分发给区块链***中的5个节点,示例为图2、3中的节点A-节点E,进行分片存储。具体的,该数据分片的数量m,可根据分片要求、重构要求、当前可用节点数量等而确定。
A2:计算各数据分片的哈希值,并将各数据分片的存储位置、数据分片的哈希值,存储在本地数据库;
示例的,分别计算数据分片1至数据分片5的哈希值Hi,其中1≤i≤m,然后将数据分片1至数据分片5,具体存储在哪个节点中,如图3所示,数据分片3存储在节点A、数据分片2存储在节点B......,将每个数据分片的存储位置、哈希值,可选但不仅限于以列表形式,一一对应的映射存储在数据拥有者的本地数据库中。
B:数据读取:
B1:向m个区块链节点中的至少tj个正常节点请求获取对应数据分片的信息,得到Tj个数据分片;其中,j为循环计数,初始化时j=1,每循环一次j+1;t1=t;1≤t≤m,为重构原始数据所需的最少数据分片的个数;Tj为第j次循环时,实际得到的数据分片的个数;
具体的,重构原始数据所需的最少数据分片的个数t,可根据步骤A中将原始数据分成m个数据分片的具体分片形式而定,看至少得多少个数据分片,才能重构原始数据。从至少t个正常节点获取该节点存储的对应数据分片的信息,也就是说获取至少t个正常节点的数据分片。
值得注意的是,此时获取的数据分片,可能为t个,也可能大于t个,具体看向多少个正常节点发送了数据请求,该实际得到的数据分片的个数记为T。
更为具体的,正常节点,为能正常访问的节点,可选但不仅限于不存在节点失效、发生故障等情况,而导致无法正常访问、无法得到其数据分片的节点。
示例的,数据拥有者,如图2-3所示,假设重构原始数据所需的最少数据分片的个数t=3,则在区块链***中上述存储有数据分片1-5的节点A-E,这5个节点中的至少3个正常节点发送数据恢复请求,如节点A、B、E请求获取对应数据分片的信息——节点A的数据分片3、节点B的数据分片2,节点E的数据分片1,后续经过判断如果这三个节点的数据分片没有被篡改,则可重构原始数据;当然,也可获得节点A、B、D;A、C、D等其他三个节点的数据分片,甚至是4个、5个节点的数据分片,也就是在5个节点中任意获取至少3个节点的数据分片,有种获取方式,获得至少3个数据分片,以重构原始数据。具体,实际获得的数据分片的个数,可记为T,T≥t。
B2:判断获取的Tj个数据分片的哈希值与存储的对应数据分片的哈希值是否至少有tj个一致;
B3:若有,则根据获取的至少t个一致哈希值对应的数据分片,重构原始数据,得到对应待读取的数据;
B4:若无,则根据判断结果确定当前已有一致哈希值的数据分片数量t’,进入下一次循环,计算当前还需获取最少数据分片的个数tj=t-t’,返回步骤B1,直到获取至少t个一致哈希值对应的数据分片,根据获取的至少t个一致哈希值对应的数据分片,重构原始数据,得到待读取的数据。
同样示例的,以图3所示m=5,t=3为例:j=1,即第一次循环时,首先B1:向5个区块链节点中的至少3个正常节点请求获取对应数据分片的信息,假设向4个节点发送了数据恢复请求,得到了4个数据分片;那么B2:判断这4个数据分片的哈希值与之前本地数据库存储的对应数据分片的哈希值是否有3个一致,即是否有重构原始数据所需的最少数据分片——3个:B3:若有,则可根据获取的至少3个一致哈希值对应的数据分片,重构原始数据,得到对应待读取的数据;B4:若无,则说明当前得到的4个数据分片中,存在哈希值不一致的数据分片,即数据可能被篡改而不能用于重构原始数据,那么根据判断结果则可确定当前已有一致哈希值的数据分片数量t’,假设当前得到的4个数据分片中只有1个数据分片的哈希值与之前对应存储的哈希值一致,即当前已有一致哈希值的数据分片数量为1,那么需要进入下一次循环,此时j=2,计算当前还需获取最少数据分片的个数t2=3-1=2;返回步骤B1:向5个区块链节点中的至少2个正常节点请求获取对应数据分片的信息,假设向3个节点发送了数据恢复请求,得到了3个数据分片;那么B2:判断这3个数据分片的哈希值与之前本地数据库存储的对应数据分片的哈希值是否至少有2个一致;B3:若有,则可根据获取的至少3个一致哈希值对应的数据分片(第一次循环时,有1个数据分片的哈希值与之前对应存储的哈希值一致;第二次循环式,有至少2个与之前对应存储的哈希值一致),重构原始数据,得到对应待读取的数据;B4,若无,则根据判断结果确定当前已有一致哈希值的数据分片数据t’,假设只有2个,则再一次进入下一次循环,j=3,计算当前还需获取最少数据分片的个数t3=t-t’=3-2=1,再次返回步骤B1,直到获取至少3个一致哈希值对应的数据分片,根据获取的至少3个一致哈希值对应的数据分片,重构原始数据,得到待读取的数据。
在该实施例中,给出了本发明的数据存取方法,其在数据存储时,一方面:采用数据分片结构的思想,将原始数据分成m个数据分片,分发给m个不同的区块链节点进行存储;相较于传统完全存储的方式,其数据量减少、所需的存储空间也大大减少,节省了很多区块链存储资源;更重要的是,其在分配时对各数据分片计算哈希值,并存储在本地数据库,同时引入重构原始数据所需的最少数据分片的思想,在后续得到数据分片时,通过哈希值判断每个数据分片是否正确、通过判断正确的数据分片数量是否满足重构原始数据所需的最少数据分片数量,以保障重构数据的可行性和准确性,能够防止数据被篡改或者数据无法重构,是一种更完善更有效的数据备份恢复、存取方法。
优选的,步骤B1前,还包括:
B0:判断待读取数据,是否为某个正常节点单独存储的数据分片;
若是,则根据数据分片的存储位置,向对应节点请求获取对应数据分片的信息;并判断获取的数据分片的哈希值与存储的对应数据分片的哈希值是否一致,若一致,则数据读取成功;
若待读取数据不是某个正常节点单独存储的数据分片,或,获取的数据分片的哈希值与存储的对应数据分片的哈希值不一致,则执行步骤B1-B4。
在该实施例中,给出了本发明的一个优选实施例,增设步骤B0,根据待读取数据,即根据数据读取者的自身需求,有时只需要获取部分数据分片上的信息,有时需要获取获取完整原始数据的信息,判断待读取数据是否为某个正常节点单独存储的数据分片,若是则可根据数据分片i的存储位置而向区块链***中的该节点请求获取数据分片i的信息,如果该节点处于正常状态,则直接将数据分片i返回给数据拥有者;进而判断其哈希值是否与之前对应存储的哈希值(如存储位置、哈希值映射存储的列表)一致,验证返回的数据是否正确,若一致则读取成功了,无需再重构数据。但是,若待读取数据不是某个正常节点单独存储的数据分片,或,获取的数据分片的哈希值与存储的对应数据分片的哈希值不一致;也就是说:待读取数据不是单个数据分片、或者存储该数据分片的节点存在失效或发生故障等情况导致处于异常状态、或者返回的数据的哈希值与之前对应存储的哈希值不一致,其数据已被篡改,则说明读取未成功,此时则需要执行步骤B1-B4,重构原始数据,再进行对应读取。该初始判断步骤,能够进一步提高数据读取的效率。
更为优选的,A:数据存储中,数据拥有者的原始数据存储在本地数据库中,为了防止数据的丢失,因此将数据在区块链上进行备份,将原始数据分成m个数据分片,分发给m个不同的区块链节点进行存储。
具体的,A1:将原始数据分成m个数据分片的步骤,即数据分片步骤,可选但不仅限于包括:
A11:确定分片数量m和重构原始数据所需的最少数据分片t;具体的,数据拥有者在进行数据备份时,可选但不仅限于根据当前原始数据的长度、信息重要性程度、区块链***中当前可用的节点数量等,而确定分片数量m,即将原始数据总共分成多少个分片;再根据当前原始数据的长度、具体分成的片数、每片数据的长度等,而确定在后续数据重构时,能够完整重构原始数据所需的最少数据分片t,1≤t≤m。
A12:确定t-1个随机系数,构建一个度数为t-1的多项式;其中,原始数据作为多项式的常数项;t-1个随机数作为多项式其他项的系数;具体的,可选但不仅限于采用随机数生成器生成t-1个随机系数,确保这些系数大于0且小于一个给定的有限域,优选为大素数;构建一个多项式。令原始数据等于多项式的常数项/>;t-1个随机数作为多项式其他项的系数/>。
A13:计算多项式的自变量x依次为1至m的整数时多项式的值,将原始数据分成m个数据分片。具体的,对于每个生成的分片索引,计算多项式的自变量x分别等于1、2、直到m时,的值,将各/>作为一个分片,即计算出多项式f(x)在不同的x值上的结果,得到m个分片。
具体的A2:计算每一个数据分片(x, f(x))的哈希值,得到Hi。数据拥有者将每个数据分片的存储位置、每个数据分片的哈希值保留在本地,将数据分片(x, f(x))分发给相应的节点。
在该实施例中,给出了本发明的数据分片的一个优选实施例,基于秘密共享方案,将待备份存储的原始数据进行分片,并分发给m个不同的区块链节点。一方面,单个节点仅保存部分原始数据,既降低了单个节点的负担,也使得单个节点无法重构完整的原始数据,能够进一步保障原始数据的安全性;同时,至少t个节点能提供数据分片,且进一步验证其数据准确性的基础上,即可重构完整的原始数据,能够在部分节点出现异常、数据被篡改等情况下,仍能完整重构原始数据。
B:数据读取:数据拥有者在对完整的原始数据进行恢复时,首先根据在本地数据库中存储的数据分片的存储信息,依次向区块链节点发送获取数据分片的请求,收到区块链节点返回的数据分片后,通过比对所接收到的数据分片的哈希值与在本地存储的哈希值,能够判断所收到的数据是否完整。如果哈希值匹配,即表示数据完整无误,验证通过则保留,否则,舍弃,直到获取/>个正确的数据分片为止。
更为具体的,当数据拥有者收到个正确的数据分片后,重构原始数据,可选但不仅限于:利用拉格朗日插值算法对数据进行重构,即可获得存储在区块链***中的原始数据。
另一方面,如图3所示,本发明提供一种数据存取***,包括数据拥有者、数据分片模块、数据重构模块和区块链节点;用于执行上述任意的数据存取方法;
数据拥有者,经数据分片模块,将原始数据分成m个数据分片,并计算各数据分片的哈希值;将各数据分片分发给m个不同的区块链节点,数据分片的存储位置、哈希值存储在本地数据库;
数据拥有者,经数据重构模块,从区块链***中读取待读取信息。
在该实施例中,给出了本发明的一种数据存取***,数据拥有者会向区块链***请求对本地数据的备份,此时数据分片模块首先对原始数据进行分片,再分发给不同的区块链节点存储,区块链节点负责对数据拥有者上传的数据进行存储。同时数据拥有者有权对数据进行访问,请求数据恢复,此时,在存储的过程中,部分存储节点可能出现故障失效等问题,那么采用本发明的数据存取***,则只要能获得最少重构数量的数据分片,可通过验证数据分片的哈希值与之前存储的数据分片的哈希值一致,则可确定获取的数据分片没有被篡改,是完整的、正确的,可以重构原始数据。
有益效果:
本发明专利涉及区块链数据的安全性和可靠性,可用于对区块链数据的存储和恢复,即数据存取。尤其涉及一种区块链数据的分片存储方法,设计了区块链数据的分片方案,同时基于哈希函数数据查询者可以有效的验证数据是否被篡改。优选的通过秘密共享技术将数据分成多个数据分片并存储在不同的节点上,可以有效节省每个区块上的存储资源,并且即使部分节点出现异常或者其上的数据丢失、篡改时,也可将原始数据恢复出来。
本发明提出了一个有效节省区块链存储资源的数据存储方案,区别于传统的完全备份存储方式,每个节点都需要完全存储备份的数据,会导致数据的冗余存储,浪费大量的存储资源的不同,本发明的数据存储方式,将原始数据分成若干数据分片,采用数据分片的方式对数据进行存储,每个节点只需存储原始数据的部分数据,这些分片数据不需要在多个不同的节点上进行备份,存储节点也不需要存储全部数据的备份,从而减少区块链存储资源的占用,提高了存储资源的利用率,并简化了备份过程。
本发明提出了一种高效可靠的数据恢复方案,区别于现有技术当在多个节点上备份存储时,如果多个备份节点存在失效或发生故障的问题,会导致数据无法完全恢复,也不知道恢复的数据是否为原始数据,是否正确完整的不同,本发明的数据读取恢复方式,在数据存储时,预存每个数据分片的哈希值,并引入重构原始数据的最少数据分片的思想,恢复时,只需获取大于等于t个正确的分片数据即可恢复出原始数据,示例的:在有m个存储节点,重构原始数据所需的最少数据分片为t的情况下,本发明数据存取方法中,允许存储节点中有m-t个节点失效或发生故障或数据被篡改,也能完整恢复原始数据,大大增加了数据恢复的可能性和准确性。
(3)本发明提出了一种保证数据完整性的数据存取方式,解决了传统方式不能有效验证分片数据完整性、准确性的问题,采用哈希函数来对数据的完整性、准确性进行验证,在数据分片后,同时对各个数据分片进行哈希,得到所有数据分片的哈希值。在获取数据时,根据数据分片的哈希值对比预先计算的哈希值来判断所收到的数据是否是完整的,进一步提高了重构原始数据的准确性。
值得注意的,数据分片过程中,可选但不仅限于基于秘密共享方案,如门限秘密共享、可验证秘密共享、弹性秘密共享等,本发明的关键在于,将原始数据分成若干数据分片,并对每个分片计算哈希值;后续数据恢复时,首先获取至少t个数据分片,判断是否有至少t个哈希一致,即是否有t个完整的、正确的数据分片,有则可进行重构原始数据的步骤,没有则需要再次获取t-t’个数据分片,直到存在能够重构原始数据所需的最少数据分片,再重构原始数据,进一步保障了重构原始数据的准确性和完整性。
另一方面,本发明还提供一种计算机存储介质,存储有可执行程序代码;所述可执行程序代码,用于执行上述任意的数据存取方法。
另一方面,本发明还提供一种终端设备,包括存储器和处理器;所述存储器存储有可被处理器执行的程序代码;所述程序代码用于执行上述任意的数据存取方法。
示例性的,所述程序代码可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述程序代码在终端设备中的执行过程。
所述终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。终端设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,终端设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器可以是终端设备的内部存储单元,例如硬盘或内存。所述存储器也可以是终端设备的外部存储设备,例如终端设备上配备的插接式硬盘,智能存储卡(SmartMedia Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)等。进一步地,所述存储器还可以既包括终端设备的内部存储单元也包括外部存储设备。所述存储器用于存储所述程序代码以及终端设备所需的其他程序和数据。所述存储器还可以用于暂时地存储已经输出或者将要输出的数据。
上述图像识别方法、计算机存储介质和终端设备基于上述数据生成方法而创造,其技术作用和有益效果在此不再赘述,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种数据存取方法,其特征在于,包括:
数据存储步骤:
A1:将原始数据分成m个数据分片,分发给m个不同的区块链节点进行存储;分片的步骤,包括:确定分片数量m和重构原始数据所需的最少数据分片t;确定t-1个随机系数,构建一个度数为t-1的多项式;计算多项式的自变量x依次为1至m的整数时多项式的值,将原始数据分成m个数据分片;
A2:计算各数据分片的哈希值,并将各数据分片的存储位置、数据分片的哈希值,存储在本地数据库;
t为重构原始数据所需的最少数据分片的个数,1≤t≤m,初始化时tj=t;
数据读取步骤:
B1:向m个区块链节点中的至少tj个正常节点请求获取对应数据分片的信息,得到Tj个数据分片;
B2:判断获取的Tj个数据分片的哈希值与存储的对应数据分片的哈希值是否至少有tj个一致;
B3:若有,则根据获取的至少t个一致哈希值对应的数据分片,重构原始数据,得到对应待读取的数据;
B4:若无,则根据判断结果确定当前已有一致哈希值的数据分片数量t’,计算当前还需获取最少数据分片的个数tj=t-t’,返回步骤B1,直到获取至少t个一致哈希值对应的数据分片,根据获取的至少t个一致哈希值对应的数据分片,重构原始数据,得到待读取的数据。
2.根据权利要求1所述的数据存取方法,其特征在于,步骤B1前,还包括:
判断待读取数据,是否为某个正常节点单独存储的数据分片;
若是,则根据数据分片的存储位置,向对应节点请求获取对应数据分片的信息;并判断获取的数据分片的哈希值与存储的对应数据分片的哈希值是否一致,若一致,则数据读取成功;
若待读取数据不是某个正常节点单独存储的数据分片,或,获取的数据分片的哈希值与存储的对应数据分片的哈希值不一致,则执行步骤B1-B4,完成数据读取步骤。
3.根据权利要求1所述的数据存取方法,其特征在于,所述重构原始数据的步骤,包括利用拉格朗日插值算法对数据进行重构。
4.根据权利要求1-3任意一项所述的数据存取方法,其特征在于,分片数量m,根据当前原始数据的长度、信息重要性程度、区块链***中当前可用的节点数量而确定。
5.根据权利要求4所述的数据存取方法,其特征在于,重构原始数据所需的最少数据分片t,根据当前原始数据的长度、分片数量m、每片分片数据的长度而确定。
6.一种数据存取***,其特征在于,包括数据拥有者、数据分片模块、数据重构模块和区块链节点,用于执行权利要求1-5任意一项所述的数据存取方法。
7.根据权利要求6所述的数据存取***,其特征在于,
数据拥有者,经数据分片模块,将原始数据分成m个数据分片,并计算各数据分片的哈希值;将各数据分片分发给m个不同的区块链节点,数据分片的存储位置、哈希值存储在本地数据库;
数据拥有者,经数据重构模块,从区块链***中读取待读取信息。
8.一种计算机存储介质,其特征在于,存储有可执行程序代码;所述可执行程序代码,用于执行权利要求1-5任意一项所述的数据存取方法。
9.一种终端设备,其特征在于,包括存储器和处理器;所述存储器存储有可被处理器执行的程序代码;所述程序代码用于执行1-5任意一项所述的数据存取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311817487.8A CN117473020B (zh) | 2023-12-27 | 2023-12-27 | 数据存取方法、***及计算机存储介质和终端设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311817487.8A CN117473020B (zh) | 2023-12-27 | 2023-12-27 | 数据存取方法、***及计算机存储介质和终端设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117473020A CN117473020A (zh) | 2024-01-30 |
CN117473020B true CN117473020B (zh) | 2024-03-22 |
Family
ID=89638270
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311817487.8A Active CN117473020B (zh) | 2023-12-27 | 2023-12-27 | 数据存取方法、***及计算机存储介质和终端设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117473020B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109194646A (zh) * | 2018-08-30 | 2019-01-11 | 东北大学 | 一种基于区块链的安全认证数据存取方法 |
WO2021003985A1 (zh) * | 2019-07-08 | 2021-01-14 | 深圳壹账通智能科技有限公司 | 区块链数据归档存储方法、装置、计算机设备和存储介质 |
CN113285812A (zh) * | 2021-07-26 | 2021-08-20 | 西南石油大学 | 基于sgx和以太坊区块链的云存储自审计方法 |
CN114723444A (zh) * | 2022-01-21 | 2022-07-08 | 佛山赛思禅科技有限公司 | 一种用于并行投票共识的数据分片方法 |
KR20230018876A (ko) * | 2021-07-30 | 2023-02-07 | 서강대학교산학협력단 | 샤드를 기반으로 한 데이터 분산 저장 방법 및 이를 이용한 블록체인 네트워크 시스템 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210303633A1 (en) * | 2020-03-30 | 2021-09-30 | International Business Machines Corporation | Shard hashing |
-
2023
- 2023-12-27 CN CN202311817487.8A patent/CN117473020B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109194646A (zh) * | 2018-08-30 | 2019-01-11 | 东北大学 | 一种基于区块链的安全认证数据存取方法 |
WO2021003985A1 (zh) * | 2019-07-08 | 2021-01-14 | 深圳壹账通智能科技有限公司 | 区块链数据归档存储方法、装置、计算机设备和存储介质 |
CN113285812A (zh) * | 2021-07-26 | 2021-08-20 | 西南石油大学 | 基于sgx和以太坊区块链的云存储自审计方法 |
KR20230018876A (ko) * | 2021-07-30 | 2023-02-07 | 서강대학교산학협력단 | 샤드를 기반으로 한 데이터 분산 저장 방법 및 이를 이용한 블록체인 네트워크 시스템 |
CN114723444A (zh) * | 2022-01-21 | 2022-07-08 | 佛山赛思禅科技有限公司 | 一种用于并行投票共识的数据分片方法 |
Non-Patent Citations (1)
Title |
---|
基于跳跃Hash和异步共识组的区块链动态分片模型;潘吉飞;黄德才;;计算机科学;20200331(03);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN117473020A (zh) | 2024-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3934165B1 (en) | Consensus method of consortium blockchain, and consortium blockchain system | |
CN109831487B (zh) | 分片文件验证方法及终端设备 | |
CN110750382B (zh) | 用于提高数据修复性能的最小存储再生码编码方法及*** | |
CN111880740A (zh) | 数据处理方法、装置、计算机***及可读存储介质 | |
US11563560B2 (en) | Blockchain-based data evidence storage method and apparatus | |
US11366932B2 (en) | Consensus method and data verification method, apparatus, and system of consortium blockchain | |
CN111930555B (zh) | 基于纠删码的文件处理方法、装置及计算机设备 | |
US10346066B2 (en) | Efficient erasure coding of large data objects | |
CN109101360B (zh) | 一种基于布隆过滤器和交叉编码的数据完整性保护方法 | |
CN117473020B (zh) | 数据存取方法、***及计算机存储介质和终端设备 | |
CN110209347B (zh) | 一种可追溯的数据存储方法 | |
CN110991358A (zh) | 一种基于区块链的文本比对方法及装置 | |
CN115935414A (zh) | 基于区块链的数据校验方法、装置、电子设备和存储介质 | |
CN109154880B (zh) | 在分散存储网络中一致的存储数据 | |
CN113159952B (zh) | 基于区块链存储数字资产的方法、***、设备及存储介质 | |
US10719379B2 (en) | Fault isolation in transaction logs | |
CN116192395A (zh) | 用于分散式数据存储的可信*** | |
CN113935071A (zh) | 基于区块链***的数据处理方法、装置、设备和介质 | |
CN116755640B (zh) | 联盟链的数据处理方法、装置、计算机设备和存储介质 | |
CN110209727B (zh) | 一种数据存储方法、终端设备及介质 | |
CN117009982B (zh) | 镜像文件的安全验证方法、装置、电子设备及存储介质 | |
CN115599312B (zh) | 基于存储集群的大数据处理方法及ai*** | |
CN111522685B (zh) | 分布式存储方法和装置、服务器、计算机可读存储介质 | |
CN111061357B (zh) | 节能方法、装置、电子设备及存储介质 | |
CN116722978A (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 |