CN115017226A - 一种数据存储方法、装置、电子设备及存储介质 - Google Patents
一种数据存储方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115017226A CN115017226A CN202110247048.2A CN202110247048A CN115017226A CN 115017226 A CN115017226 A CN 115017226A CN 202110247048 A CN202110247048 A CN 202110247048A CN 115017226 A CN115017226 A CN 115017226A
- Authority
- CN
- China
- Prior art keywords
- data
- block
- storage
- evidence
- field
- 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
- 238000000034 method Methods 0.000 title claims abstract description 45
- 238000013500 data storage Methods 0.000 title claims abstract description 44
- 238000004891 communication Methods 0.000 claims description 19
- 238000004364 calculation method Methods 0.000 claims description 11
- 230000008569 process Effects 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 3
- 238000000151 deposition Methods 0.000 claims 4
- 238000010586 diagram Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000012795 verification Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 230000004931 aggregating effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 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
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
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
- 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/2308—Concurrency control
- G06F16/2315—Optimistic concurrency control
- G06F16/2322—Optimistic concurrency control using timestamps
-
- 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
-
- 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
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2107—File encryption
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2151—Time stamp
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种数据存储方法、装置、电子设备及存储介质,其中,数据存储方法包括:获取存证数据集,存证数据集中包括待存证的学历数据文件及学历数据文件对应的存证信息;基于存证数据集生成区块头和区块体;将区块头和区块体进行组合,生成存证数据区块;将存证数据区块的数据写入dat文件中,将与存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,将与存证数据区块对应的状态数据以键值对的形式写入状态数据库中。本发明实施例能够实现学历数据文件及存证信息的去中心化存储,提高数据的安全性;另外,以键值对的形式存储区块和存证交易相关的元数据和状态数据,可以便于实现快速检索,提高检索效率。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种数据存储方法、装置、电子设备及存储介质。
背景技术
互联网时代电子数据规模的指数级增长,使得数字化生活对电子存证系统的依赖日益增强,尤其在高校学历数据存证方面更为突出。随着学历数据管理系统的发展,其相关标准规范和电子化操作流程趋于完善,并且不断融合新的计算机技术。
但是,现有的学历数据存证管理系统采用集中式数据存储方式组织存储学历数据,中心化服务器单点故障或者受到恶意攻击,必然会导致学历数据被篡改或者泄露的问题,数据存储的安全性较低。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种数据存储方法、装置、电子设备及存储介质。
第一方面,本申请提供了一种数据存储方法,包括:
获取存证数据集,所述存证数据集中包括待存证的学历数据文件及所述学历数据文件对应的存证信息;
基于所述存证数据集生成区块头和区块体;
将所述区块头和区块体进行组合,生成存证数据区块;
将所述存证数据区块的数据写入区块链节点的dat文件中,将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中;
其中,所述区块和存证交易相关的元数据是将存证数据区块的数据写入dat文件时生成的,所述状态数据是执行所述存证数据区块中的存证交易得到的状态数据。
可选地,所述将所述存证数据区块的数据写入区块链节点的dat文件中,包括:
将所述存证数据区块的数据进行序列化编码,得到字节码,将字节码写入dat文件;
其中,在将字节码写入dat文件过程中,若当前正在写入dat文件的数据与已写入dat文件的数据的数据量之和大于所述dat文件的预设存储量,生成新的dat文件,将当前正在写入的数据写入新的dat文件中。
可选地,所述将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,包括:
将区块相关的元数据进行哈希计算得到的摘要作为键,将所述存证数据区块的区块哈希、前块哈希、存证交易树根哈希和状态表根哈希,进行序列化编码生成的数据作为值,得到区块相关的元数据对应的键值对;
将所述存证数据区块的区块头中的存证交易默克尔根进行哈希计算得到的根哈希作为键,将所述存证数据区块的存证交易哈希、存证交易类型和存证交易数据,进行序列化编码生成的数据作为值,得到存证交易相关的元数据对应的键值对;
将区块相关的元数据对应的键值对和所述存证交易相关的元数据对应的键值对写入底层数据库中。
可选地,所述将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中,包括:
基于所述状态数据生成状态对象,将状态对象对应的哈希地址作为键,将所述状态对象作为值,得到所述状态数据对应的键值对;
将所述状态数据对应的键值对写入状态数据库中。
可选地,所述存证数据区块的字段结构包括:区块大小字段及所述区块大小字段的大小、区块头字段及所述区块头字段的大小、存证交易数量字段及所述存证交易数量字段的大小、和,存证交易数据列表字段及所述存证交易数据列表字段的大小。
可选地,所述区块头的字段结构包括:版本号字段及所述版本号字段的大小、前块哈希字段及所述前块哈希字段的大小、时间戳字段及所述时间戳字段的大小、难度目标字段及所述难度目标字段的大小、随机数字段及所述随机数字段的大小、和,默克尔根字段及所述默克尔根字段的大小。
可选地,所述区块体的字段结构包括:版本号字段及所述版本号字段的大小、输入数量字段及所述输入数量字段的大小、输入字段及所述输入字段的大小、输出数量字段及所述输出数量字段的大小、输出字段及所述输出字段的大小、和,存证时间字段及所述存证时间字段的大小。
第二方面,本申请提供了一种数据存储装置,包括:
获取模块,用于获取存证数据集,所述存证数据集中包括待存证的学历数据文件及所述学历数据文件对应的存证信息;
生成模块,用于基于所述存证数据集生成区块头和区块体;
组合模块,用于将所述区块头和区块体进行组合,生成存证数据区块;
写入模块,用于将所述存证数据区块的数据写入区块链节点的dat文件中,将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中;
其中,所述区块和存证交易相关的元数据是将存证数据区块的数据写入dat文件时生成的,所述状态数据是执行所述存证数据区块中的存证交易得到的状态数据。
第三方面,本申请提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的数据存储方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有数据存储方法的程序,所述数据存储方法的程序被处理器执行时实现第一方面任一所述的数据存储方法的步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:
本发明实施例通过首先获取存证数据集,所述存证数据集中包括待存证的学历数据文件及所述学历数据文件对应的存证信息,然后基于所述存证数据集生成区块头和区块体,再将所述区块头和区块体进行组合,最后可以生成存证数据区块,将所述存证数据区块的数据写入区块链节点的dat文件中,将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中。
本发明实施例可以将基于待存证的学历数据文件及存证信息生成存证数据区块,将存证数据区块的数据写入区块链节点,将区块和存证交易相关的元数据写入底层数据库,将状态数据写入状态数据库,实现学历数据文件及存证信息的去中心化存储,提高数据的安全性;另外,以键值对的形式存储区块和存证交易相关的元数据和状态数据,可以便于实现快速检索,提高检索效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据存储方法应用的架构图;
图2为本申请实施例提供的一种数据存储方法的流程图;
图3为本申请实施例提供的一种数据存储模型的示意图;
图4为本申请实施例提供的一种状态数据的存储示意图;
图5为本申请实施例提供的一种数据存储装置的结构图;
图6为本申请实施例提供的一种实际应用中的数据存储方法的示意图;
图7为本申请实施例提供的一种电子设备的结构图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
由于现有的学历数据存证管理系统采用集中式数据存储方式组织存储学历数据,中心化服务器单点故障或者受到恶意攻击,必然会导致学历数据被篡改或者泄露的问题,数据存储的安全性较低。
为此,针对高校学历管理工作中大量文件需要存储,本方法面向学历数据存证场景,本发明实施例提供了一种数据存储方法、装置、电子设备及存储介质,综合运用区块数据存储、加密算法及共识算法等核心技术,从系统结构的存储层、网络层、共识层以及应用层出发,对区块链电子存证平台的具体架构和关键技术进行研究。实现学历存证数据可以实时、高效且安全的存储,保障学历电子存证数据的安全性和有效性,采取的技术处理架构如图1所示。该架构利用区块链底层模型在隐私保护、防篡改、抗攻击方面的特点,在技术上实现区块链存证的学历电子数据真实性、唯一性与完整性。
如图2所示,所述数据存储方法包括以下步骤:
步骤S101,获取存证数据集,所述存证数据集中包括待存证的学历数据文件及所述学历数据文件对应的存证信息;
在本发明实施例中,学历数据文件可以包括:成绩单、学位证书、科研论文、等级证书、获奖证书和个人简历等;存证信息可以包括:身份信息和数据存证交易信息等;其中,身份信息包括:姓名、学号ID、身份证号和电话等;数据存证交易信息包括:用户唯一身份标识、记录创建时间、记录更新时间和生成存证证书等。
在该步骤之前,可以获取用户上传的学历数据文件和存证信息,基于学历数据文件和存证信息构建存证数据集。
学历数据文件可以为Word、PDF、图片等各类形式的电子文件;或者,用户将要存证的电子文件进行Hash计算后的摘要等。
用户上传后学历数据文件和存证信息后,可以利用用户私钥对学历数据文件和存证信息进行加密,以便于验证存证文件内容是否被篡改,保证用户身份和存证内容的一致性,再利用存证私钥对加密后的学历数据文件和存证信息进行签名,基于签名后的学历数据文件和存证信息生成存证数据集。
用户私钥可以指存证用户(如学生、学校)设置的或者随机为存证用户生成的,仅存证用户或者存证用户的指定人知晓;存证私钥可以指存证机构设置的或者随机为存证机构生成的,仅存证机构中的指定人知晓。
利用存证机构的存证私钥对加密后的学历数据文件和存证信息进行私钥签名,这样,系统每一次发放和查询数字证书,都会触发智能合约中相应的签名验证,验证通过的情况下输出数字证书发放给取证方。
步骤S102,基于所述存证数据集生成区块头和区块体;
在本发明实施例中,可以按照预先设置的区块头的字段结构生成区块头,按照预先设置的区块体的字段结构生成区块体。
所述区块头的字段结构包括:版本号字段及所述版本号字段的大小、前块哈希字段及所述前块哈希字段的大小、时间戳字段及所述时间戳字段的大小、难度目标字段及所述难度目标字段的大小、随机数字段及所述随机数字段的大小、和,默克尔根字段及所述默克尔根字段的大小。
具体的,区块头可以通过表2中所描述的6个字段(版本+5个元数据项)进行构造,前块哈希是用于数据区块链接成链的核心字段,该字段中引用的是该区块链接的上一区块进行SHA256运算得到的数据摘要,与其它字段一起连接用于寻找经过双重哈希计算得到符合条件目标值的随机数,计算结束后就可以构造成区块。
表1区块头字段结构
在本发明实施例中,在区块头字段结构中增设了难度目标字段和随机数字段,难度目标字段可以指生成该区块的难易程度,难度越高,生成区块的速度越慢,生成区块所需时间越长。
所述区块体的字段结构包括:版本号字段及所述版本号字段的大小、输入数量字段及所述输入数量字段的大小、输入字段及所述输入字段的大小、输出数量字段及所述输出数量字段的大小、输出字段及所述输出字段的大小、和,存证时间字段及所述存证时间字段的大小。
区块体中包含:存证存证交易数据列表,存证用户进行一次数据存证是一个包含输入值和输出值的数据结构存储,即存证存证交易数据列表,该数据结构中所编写代码信息的作用是将存证用户的一组存证数据从初始点转移至区块中的目标地址。一次数据存证的锁定时间设置为0,表示立即执行,即在指定存证时间之前该组存证数据没有被包含在当前的区块中,其存证交易数据列表字段结构如表2所示。
表2存证数据字段结构
字段 | 描述 | 大小(字节) |
版本 | 明确一次存证参照的规则 | 4 |
输入数量 | 包含的输入数量 | 1-9 |
输入 | 一个或多个证据输入 | 不定 |
输出数量 | 包含的输出数量 | 1-9 |
输出 | 一个或多个证据输出 | 不定 |
存证时间 | 一个UNIX时间戳 | 4 |
步骤S103,将所述区块头和区块体进行组合,生成存证数据区块;
所述存证数据区块的字段结构包括:区块大小字段及所述区块大小字段的大小、区块头字段及所述区块头字段的大小、存证交易数量字段及所述存证交易数量字段的大小、和,存证交易数据列表字段及所述存证交易数据列表字段的大小。
在本发明实施例中,生成的区块的区块结构字段设置如表3-1所示,由区块大小、存证交易计数器、包含元数据的区块头和其后组成区块体的所有存证数据共同构成,其中区块头由5个元数据项构成,区块体存放按照特定数据模型组成完整的存证存证交易数据列表,之后将数据列表进行分组存储。
表3区块字段结构
本发明实施例中,区块字段结构中增设字段大小的约束及存证交易数量计数器,这样可以便于按照字段大小更快的读取数据;增设存证交易数量计数器,可以便于了解存证交易数量,进而便于连接存证交易进度。
步骤S104,将所述存证数据区块的数据写入区块链节点的dat文件中,将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中;
其中,所述区块和存证交易相关的元数据是将存证数据区块的数据写入dat文件时生成的,所述状态数据是执行所述存证数据区块中的存证交易得到的状态数据。
在步骤S104之后,本发明实施例还将存证数据区块进行哈希运算,将哈希运算后的存证数据区块链接至上一个区块,形成区块链。
为了实现学历存证数据的不可篡改,本发明实施例采用链式数据结构,以区块为存储单位聚合当前时间段内所有存证数据,任意两个相邻的区块之间通过SHA256哈希计算后按照时间顺序依次链接成链。
本发明实施例通过首先获取存证数据集,所述存证数据集中包括待存证的学历数据文件及所述学历数据文件对应的存证信息,然后基于所述存证数据集生成区块头和区块体,再将所述区块头和区块体进行组合,最后可以生成存证数据区块,将所述存证数据区块的数据写入区块链节点的dat文件中,将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中。
本发明实施例可以将基于待存证的学历数据文件及存证信息生成存证数据区块,将存证数据区块的数据写入区块链节点,将区块和存证交易相关的元数据写入底层数据库,将状态数据写入状态数据库,实现学历数据文件及存证信息的去中心化存储,提高数据的安全性;另外,以键值对的形式存储区块和存证交易相关的元数据和状态数据,可以便于实现快速检索,提高检索效率。而且,由于使用区块链技术存储学历数据文件及存证信息,可以增强学历数据存证管理的透明度,提高学历存证数据的一致性,利用区块链技术去信任、不可篡改的优势为学历电子存证数据提供安全可靠的存储环境,增强全网节点互信机制,保障电子存证网络中数据的一致性。
在系统设计中,所有与存证交易、存证相关的数据以集合形式的区块(Block)为单位链接存储在区块链上;一次存证的数据最终以<key,value>键值对形式存储于底层数据库(LevelDB)中;所有存证交易或者存证结果的状态以账户方式表示,每个账户表现为一个状态对象(StateObject),使用状态数据库(StateDB)管理存放账户的集合,上述各数据结构单元之间的层次关系描述如图3的数据存储模型所示。在本发明的又一实施例中,所述将所述存证数据区块的数据写入区块链节点的dat文件中,包括:
将所述存证数据区块的数据进行序列化编码,得到字节码,将字节码写入dat文件;
其中,在将字节码写入dat文件过程中,若当前正在写入dat文件的数据与已写入dat文件的数据的数据量之和大于所述dat文件的预设存储量,生成新的dat文件,将当前正在写入的数据写入新的dat文件中。
在本发明实施例中,为了快速检索区块数据,每个区块的数据和区块中的存证交易数据文件会通过序列化编码形成字节码写入dat文件中,示例性的,每个dat文件大小预设为128M。在序列化过程中当检测到正在写入的文件与已写入区块数据文件之和大于128M,会生成新的dat文件。
在本发明的又一实施例中,所述将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,包括:
将区块相关的元数据进行哈希计算得到的摘要作为键,将所述存证数据区块的区块哈希、前块哈希、存证交易树根哈希和状态表根哈希,进行序列化编码生成的数据作为值,得到区块相关的元数据对应的键值对;
将所述存证数据区块的区块头中的存证交易默克尔根进行哈希计算得到的根哈希作为键,将所述存证数据区块的存证交易哈希、存证交易类型和存证交易数据,进行序列化编码生成的数据作为值,得到存证交易相关的元数据对应的键值对;
将区块相关的元数据对应的键值对和所述存证交易相关的元数据对应的键值对写入底层数据库中。
在本发明实施例中,在区块数据的写入过程中会生成区块和存证交易相关的元数据,一次存证的元数据在LevelDB数据库中的存储格式如表4所示。
表4数据存储方式
在存储区块信息时,首先将区块数据进行SHA256计算得到的摘要作为key,该区块哈希、前块哈希、存证交易树根哈希、状态表根哈希等数据项采用序列化后生成的数据作为value,然后作为<key,value>键值对存储至LevelDB数据库中。
存证交易信息存储的具体方式是将区块头中的存证交易默克尔根哈希作为key,存证交易哈希、存证交易类型、存证交易数据等序列化生成的数据作为value,存储至LevelDB数据库中,其中所涉及的序列化操作采用的是二进制序列化标准。在进行区块数据查询的时候,应用层只需要提供存证交易哈希、区块高度和哈希值就能得到key值,从而查询到相关的存证数据。
在本发明的又一实施例中,所述将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中,包括:
基于所述状态数据生成状态对象,将状态对象对应的哈希地址作为键,将所述状态对象作为值,得到所述状态数据对应的键值对;
将所述状态数据对应的键值对写入状态数据库中。
在本发明实施例中,状态数据(state data)记录存证交易执行的结果,账户状态数据包括该账户地址及其映射的序数、存储内容和字节码哈希值,代表访问区块后的状态,系统可以根据状态根哈希读取到编码后的账户状态信息。在系统设计中,如图4的状态数据存储示意图所示,状态数据库(StateDB)通过集合大量状态对象(stateObject)来管理所有账户状态信息,每个状态对象(stateObject)以其20位的哈希地址作为插入节点的key进行存储,当一个状态对象(stateObject)有改动,即账户信息产生变动时,状态对象(stateObject)会进行更新并标记,如果之前存证数据变动,可以大幅减少对业务模块的影响。
在本发明的又一实施例中,还提供一种数据存储装置,如图5所示,包括:
获取模块11,用于获取存证数据集,所述存证数据集中包括待存证的学历数据文件及所述学历数据文件对应的存证信息;
生成模块12,用于基于所述存证数据集生成区块头和区块体;
组合模块13,用于将所述区块头和区块体进行组合,生成存证数据区块;
写入模块14,用于将所述存证数据区块的数据写入区块链节点的dat文件中,将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中;
其中,所述区块和存证交易相关的元数据是将存证数据区块的数据写入dat文件时生成的,所述状态数据是执行所述存证数据区块中的存证交易得到的状态数据。
为了便于理解,本发明还提供了一种实际应用中的数据存储方法的实施例,该实施例基于可容错的证据区块共识协议构建,采用可验证的数字签名算法对证据文件进行签名验证完成数据同步,确认生成唯一的存证区块链。如图6所示,包括以下4个具体步骤。
(1)哈希运算:将学生基本身份信息、成绩单、科研论文、学位证书等存证数据经过哈希加密运算后,生成一段固定长度的唯一特征摘要,使得用户可以通过该特征摘要访问原始的加密数据,该摘要具有以下特点:①无法推出原始数据的内容;②原始数据有任何一点改动后,重新生成的“摘要”是不可预料的。
(2)数字签名:利用可验证环签名算法,存证方将数据经过私钥签名后发送至区块链网络进行身份验证,目的是明确数据的正确性及来源的安全性,保证网络传输过程中数据不可篡改。
(3)写入区块链:发送到区块链网络的存证数据经过一次共识后打包成区块,并通过SHA256计算后链接至上一个区块形成区块链,随后同步给网络中的各个节点进行验证,验证通过后分布式存储于各节点中。
(4)存证/取证:对用户需要存储的数据完成存证,在用户需要进行存证证明时,系统给出权威性证明报告,方便存证方管理、使用所存证的数据。
在本发明的又一实施例中,还提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现前述方法实施例任一所述的数据存储方法。
本发明实施例提供的电子设备,处理器通过执行存储器上所存放的程序实现了通过首先获取存证数据集,所述存证数据集中包括待存证的学历数据文件及所述学历数据文件对应的存证信息,然后基于所述存证数据集生成区块头和区块体,再将所述区块头和区块体进行组合,最后可以生成存证数据区块,将所述存证数据区块的数据写入区块链节点的dat文件中,将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中。本发明实施例可以将基于待存证的学历数据文件及存证信息生成存证数据区块,将存证数据区块的数据写入区块链节点,将区块和存证交易相关的元数据写入底层数据库,将状态数据写入状态数据库,实现学历数据文件及存证信息的去中心化存储,提高数据的安全性;另外,以键值对的形式存储区块和存证交易相关的元数据和状态数据,可以便于实现快速检索,提高检索效率。
上述电子设备提到的通信总线1140可以是外设部件互连标准(PeripheralComponentInterconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustryStandardArchitecture,简称EISA)总线等。该通信总线1140可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口1120用于上述电子设备与其他设备之间的通信。
存储器1130可以包括随机存取存储器(RandomAccessMemory,简称RAM),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器1110可以是通用处理器,包括中央处理器(CentralProcessingUnit,简称CPU)、网络处理器(NetworkProcessor,简称NP)等;还可以是数字信号处理器(DigitalSignalProcessing,简称DSP)、专用集成电路(ApplicationSpecificIntegratedCircuit,简称ASIC)、现场可编程门阵列(Field-ProgrammableGateArray,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明的又一实施例中,还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有数据存储方法的程序,所述数据存储方法的程序被处理器执行时实现前述方法实施例任一所述的数据存储方法的步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种数据存储方法,其特征在于,包括:
获取存证数据集,所述存证数据集中包括待存证的学历数据文件及所述学历数据文件对应的存证信息;
基于所述存证数据集生成区块头和区块体;
将所述区块头和区块体进行组合,生成存证数据区块;
将所述存证数据区块的数据写入区块链节点的dat文件中,将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中;
其中,所述区块和存证交易相关的元数据是将存证数据区块的数据写入dat文件时生成的,所述状态数据是执行所述存证数据区块中的存证交易得到的状态数据。
2.根据权利要求1所述的数据存储方法,其特征在于,所述将所述存证数据区块的数据写入区块链节点的dat文件中,包括:
将所述存证数据区块的数据进行序列化编码,得到字节码,将字节码写入dat文件;
其中,在将字节码写入dat文件过程中,若当前正在写入dat文件的数据与已写入dat文件的数据的数据量之和大于所述dat文件的预设存储量,生成新的dat文件,将当前正在写入的数据写入新的dat文件中。
3.根据权利要求1所述的数据存储方法,其特征在于,所述将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,包括:
将区块相关的元数据进行哈希计算得到的摘要作为键,将所述存证数据区块的区块哈希、前块哈希、存证交易树根哈希和状态表根哈希,进行序列化编码生成的数据作为值,得到区块相关的元数据对应的键值对;
将所述存证数据区块的区块头中的存证交易默克尔根进行哈希计算得到的根哈希作为键,将所述存证数据区块的存证交易哈希、存证交易类型和存证交易数据,进行序列化编码生成的数据作为值,得到存证交易相关的元数据对应的键值对;
将区块相关的元数据对应的键值对和所述存证交易相关的元数据对应的键值对写入底层数据库中。
4.根据权利要求1所述的数据存储方法,其特征在于,所述将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中,包括:
基于所述状态数据生成状态对象,将状态对象对应的哈希地址作为键,将所述状态对象作为值,得到所述状态数据对应的键值对;
将所述状态数据对应的键值对写入状态数据库中。
5.根据权利要求1所述的数据存储方法,其特征在于,所述存证数据区块的字段结构包括:区块大小字段及所述区块大小字段的大小、区块头字段及所述区块头字段的大小、存证交易数量字段及所述存证交易数量字段的大小、和,存证交易数据列表字段及所述存证交易数据列表字段的大小。
6.根据权利要求1所述的数据存储方法,其特征在于,所述区块头的字段结构包括:版本号字段及所述版本号字段的大小、前块哈希字段及所述前块哈希字段的大小、时间戳字段及所述时间戳字段的大小、难度目标字段及所述难度目标字段的大小、随机数字段及所述随机数字段的大小、和,默克尔根字段及所述默克尔根字段的大小。
7.根据权利要求1所述的数据存储方法,其特征在于,所述区块体的字段结构包括:版本号字段及所述版本号字段的大小、输入数量字段及所述输入数量字段的大小、输入字段及所述输入字段的大小、输出数量字段及所述输出数量字段的大小、输出字段及所述输出字段的大小、和,存证时间字段及所述存证时间字段的大小。
8.一种数据存储装置,其特征在于,包括:
获取模块,用于获取存证数据集,所述存证数据集中包括待存证的学历数据文件及所述学历数据文件对应的存证信息;
生成模块,用于基于所述存证数据集生成区块头和区块体;
组合模块,用于将所述区块头和区块体进行组合,生成存证数据区块;
写入模块,用于将所述存证数据区块的数据写入区块链节点的dat文件中,将与所述存证数据区块对应的区块和存证交易相关的元数据以键值对的形式写入底层数据库中,将与所述存证数据区块对应的状态数据以键值对的形式写入状态数据库中;
其中,所述区块和存证交易相关的元数据是将存证数据区块的数据写入dat文件时生成的,所述状态数据是执行所述存证数据区块中的存证交易得到的状态数据。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1~7任一所述的数据存储方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有数据存储方法的程序,所述数据存储方法的程序被处理器执行时实现权利要求1-7任一所述的数据存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110247048.2A CN115017226A (zh) | 2021-03-05 | 2021-03-05 | 一种数据存储方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110247048.2A CN115017226A (zh) | 2021-03-05 | 2021-03-05 | 一种数据存储方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115017226A true CN115017226A (zh) | 2022-09-06 |
Family
ID=83064268
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110247048.2A Pending CN115017226A (zh) | 2021-03-05 | 2021-03-05 | 一种数据存储方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115017226A (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109933592A (zh) * | 2019-03-22 | 2019-06-25 | 杭州复杂美科技有限公司 | 数据存储方法、数据回滚方法、设备和存储介质 |
KR20190104793A (ko) * | 2018-03-02 | 2019-09-11 | 주식회사 아이콘루프 | 스마트 계약 시스템에서 블록체인을 생성하고 무결성을 검증하는 방법 |
CN110830547A (zh) * | 2019-09-23 | 2020-02-21 | 厦门大学 | 基于区块链存证的无人驾驶信息存储方法及装置 |
CN110912937A (zh) * | 2019-12-23 | 2020-03-24 | 杭州中科先进技术研究院有限公司 | 一种基于区块链的数字存证平台和存证方法 |
CN111708825A (zh) * | 2020-06-11 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
WO2020215836A1 (zh) * | 2019-04-23 | 2020-10-29 | 创新先进技术有限公司 | 基于区块链的房屋信息存证、应用方法和装置 |
CN112084164A (zh) * | 2020-09-16 | 2020-12-15 | 厦门市美亚柏科信息安全研究所有限公司 | 一种基于区块链与星际文件系统的数据存证方法及系统 |
CN112308561A (zh) * | 2020-10-16 | 2021-02-02 | 浙江甲骨文超级码科技股份有限公司 | 基于区块链的存证方法、系统、计算机设备和存储介质 |
-
2021
- 2021-03-05 CN CN202110247048.2A patent/CN115017226A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20190104793A (ko) * | 2018-03-02 | 2019-09-11 | 주식회사 아이콘루프 | 스마트 계약 시스템에서 블록체인을 생성하고 무결성을 검증하는 방법 |
CN109933592A (zh) * | 2019-03-22 | 2019-06-25 | 杭州复杂美科技有限公司 | 数据存储方法、数据回滚方法、设备和存储介质 |
WO2020215836A1 (zh) * | 2019-04-23 | 2020-10-29 | 创新先进技术有限公司 | 基于区块链的房屋信息存证、应用方法和装置 |
CN110830547A (zh) * | 2019-09-23 | 2020-02-21 | 厦门大学 | 基于区块链存证的无人驾驶信息存储方法及装置 |
CN110912937A (zh) * | 2019-12-23 | 2020-03-24 | 杭州中科先进技术研究院有限公司 | 一种基于区块链的数字存证平台和存证方法 |
CN111708825A (zh) * | 2020-06-11 | 2020-09-25 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
CN112084164A (zh) * | 2020-09-16 | 2020-12-15 | 厦门市美亚柏科信息安全研究所有限公司 | 一种基于区块链与星际文件系统的数据存证方法及系统 |
CN112308561A (zh) * | 2020-10-16 | 2021-02-02 | 浙江甲骨文超级码科技股份有限公司 | 基于区块链的存证方法、系统、计算机设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10846416B2 (en) | Method for managing document on basis of blockchain by using UTXO-based protocol, and document management server using same | |
EP3579496B1 (en) | A method for registering of a data as digital file in a blockchain database | |
KR102332031B1 (ko) | 블록체인-기반 디지털 인증서를 구현하기 위한 시스템 및 방법 | |
CN109074433B (zh) | 使用分布式散列表和点对点分布式分类账验证数字资产完整性的方法和系统 | |
CN110647503A (zh) | 一种分布式存储方法及装置 | |
TW202030668A (zh) | 電腦實施系統及在區塊鏈上儲存資料的方法(一) | |
US10754848B2 (en) | Method for registration of data in a blockchain database and a method for verifying data | |
CN110800254B (zh) | 用于生成数字标记的系统和方法 | |
WO2019114097A1 (zh) | 基于区块链的分布式存储方法 | |
KR20200011949A (ko) | 미결정 소스로부터 미결정 데이터를 블록체인 트랜잭션의 잠금 스크립트에 안전하게 제공하는 기법 | |
EP3605944A1 (en) | Documenting timestamps within a blockchain | |
EP3709568A1 (en) | Deleting user data from a blockchain | |
CN108256354B (zh) | 一种基于试验数据的存储方法及存储介质 | |
EP3744071B1 (en) | Data isolation in distributed hash chains | |
CN113704357A (zh) | 一种基于区块链的智慧城市数据共享方法及系统 | |
CN116644479A (zh) | 一种基于区块链技术的防篡改电子合同签约方法 | |
JP6685968B2 (ja) | データ管理システム、データ管理方法及びデータ管理プログラム | |
CN115017226A (zh) | 一种数据存储方法、装置、电子设备及存储介质 | |
CN109063513A (zh) | 一种基于Hadoop平台的动态数据完整性验证方法 | |
Burns et al. | Verifiable audit trails for a versioning file system | |
CN114462998A (zh) | 一种日志防篡改方法、系统及存储介质 | |
Li et al. | Post‐Quantum Privacy‐Preserving Provable Data Possession Scheme Based on Smart Contracts | |
CN116015609A (zh) | 业务记录存储方法、装置、计算机设备和存储介质 | |
Enwerem | BLOCKCHAIN RESULT AND TRANSCRIPT MANAGEMENT SYSTEM: A CASE STUDY OF FEDERAL UNIVERSITY OF TECHNOLOGY OWERRI | |
Shah et al. | Blockchain Based Certificate Validation |
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 |