CN115730933A - 基于区块链的数据处理方法、装置、设备及存储介质 - Google Patents
基于区块链的数据处理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN115730933A CN115730933A CN202110997867.9A CN202110997867A CN115730933A CN 115730933 A CN115730933 A CN 115730933A CN 202110997867 A CN202110997867 A CN 202110997867A CN 115730933 A CN115730933 A CN 115730933A
- Authority
- CN
- China
- Prior art keywords
- block
- target
- target block
- transaction data
- storage space
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种基于区块链的数据处理方法、装置、设备及存储介质,涉及区块链技术,其中,方法包括:获取区块链上的区块的属性信息;根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块;将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除;所述第一存储空间与用于存储所述区块链的第二存储空间不相同;若接收到针对所述目标区块中的交易数据的获取请求,则根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上;从所述区块链上所恢复得到的目标区块中读取交易数据。通过本申请缓解用于存储区块链的存储空间的存储压力,确保业务被正常处理。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种基于区块链的数据处理方法、装置、设备及存储介质。
背景技术
区块链是一种分布式数据存储、点对点传输(P2P传输)、共识机制、加密算法等计算机技术的新型应用模式,区块链可由多个串联的区块构成,区块能让多方有效记录数据,且可查验记录的数据(即防伪)。基于此,越来越多的用户更青睐在区块链中记录交易数据,但是,随着时间的推移,区块链上所存储的数据对应的数据量会越来越大,给用于存储区块链的存储空间带来较大的存储压力,影响区块链所属的区块链网络的正常运行。
发明内容
本申请实施例所要解决的技术问题在于,提供一种基于区块链的数据处理方法、装置、设备及存储介质,能够确保业务被正常处理。
本申请实施例一方面提供一种基于区块链的数据处理方法,包括:
获取区块链上的区块的属性信息;
根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块;
将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除;所述第一存储空间与用于存储所述区块链的第二存储空间不相同;
若接收到针对所述目标区块中的交易数据的获取请求,则根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上;
从所述区块链上所恢复得到的目标区块中读取交易数据。
本申请实施例一方面提供一种基于区块链的数据处理装置,包括:
获取模块,用于获取区块链上的区块的属性信息;
识别模块,用于根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块;
删除模块,用于将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除;所述第一存储空间与用于存储所述区块链的第二存储空间不相同;
恢复模块,用于若接收到针对所述目标区块中的交易数据的获取请求,则根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上;
读取模块,用于从所述区块链上读取所恢复得到的目标区块中的交易数据。
可选的,所述删除将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除,包括:
获取所述目标区块的统计特征,以及所述区块链所属的区块链网络中的节点设备的状态信息;
根据所述目标区块的统计特性以及所述状态信息,从所述区块链网络的节点设备中选择共识节点;
向所述共识节点发送针对所述目标区块的删除验证请求;所述删除验证请求用于指示所述共识节点针对所述目标区块的删除操作的合法性进行验证;
从所述共识节点中获取针对所述目标区块的删除操作的共识结果;
若所述共识结果指示针对所述目标区块的删除操作具有合法性,则将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除。
可选的,所述删除模块根据所述目标区块的统计特性以及所述状态信息,从所述区块链网络的节点设备中选择共识节点,包括:
根据所述状态信息生成所述区块链网络的节点设备的序号;
根据所述目标区块的统计特性生成共识随机数;
将所述区块链网络的节点设备中序号为所述共识随机数的整数倍的节点设备,确定为共识节点。
可选的,所述目标区块包括区块头和区块体,所述区块体中包括所述目标区块中的交易数据,所述区块头中包括所述目标区块的区块信息;所述删除模块若所述共识结果指示针对所述目标区块的删除操作具有合法性,则将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除,包括:
若所述共识结果指示针对所述目标区块的删除操作具有合法性,则根据所述目标区块的区块头确定所述目标区块在所述区块链上的位置信息;
将所述目标区块的区块头以及区块体备份至所述第一存储空间中;
将所述区块链上的目标区块中的区块体删除,按照所述目标区块在所述区块链上的位置信息,将所述目标区块的区块头保留在所述区块链上。
可选的,所述恢复模块根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上,包括:
根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果;
若所述验证结果指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性,则根据所述第一存储空间中所备份的所述目标区块的区块头,确定所述目标区块在所述区块链上的位置信息;
按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上。
可选的,所述区块链上的目标区块的区块头包括第一当前区块哈希值;所述恢复模块根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果,包括:
从所述第一存储空间中,读取所述目标区块的区块头中所包括的第二当前区块哈希值;
将所述第一当前区块哈希值与所述第二当前区块哈希值进行比对,得到第一比对结果;
若所述第一比对结果指示所述第一当前区块哈希值与所述第二当前区块哈希值相同,则确定所述第一存储空间中所备份的所述目标区块的区块体具有有效性;
生成用于指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性的验证结果。
可选的,所述区块链上的目标区块的区块头包括第一当前区块哈希值;所述恢复模块根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果,包括:
根据所述第一存储空间中所备份的所述目标区块的区块体生成第三当前区块哈希值;
将所述第一当前区块哈希值与所述第三当前区块哈希值进行比对,得到第二比对结果;
若所述第二比对结果指示所述第一当前区块哈希值与所述第三当前区块哈希值相同,则确定所述第一存储空间中所备份的所述目标区块的区块体具有有效性;
生成用于指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性的验证结果。
可选的,所述恢复模块按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上,包括:
从所述区块链上确定出所述目标区块的相邻区块;
将所述目标区块的相邻区块备份至所述第一存储空间中,将所述区块链上所述目标区块的相邻区块中的交易数据删除;
在所述相邻区块中的交易数据删除后,按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上。
可选的,所述属性信息包括区块中的交易数据被读取的次数;所述识别模块根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块,包括:
从所述区块链上确定出被读取的次数小于次数阈值的候选区块;
确定所述候选区块中所存储的交易数据的数据量;
将所存储的交易数据的数据量大于数据量阈值的候选区块,确定为处于冗余状态的目标区块。
可选的,所述属性信息包括区块的区块高度;所述识别模块根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块,包括:
获取所述区块链上的最大区块高度;
统计所述最大区块高度与所述区块链上的区块对应的区块高度之间的差值;
将所述区块链上差值大于高度阈值的区块,确定为处于冗余状态的目标区块。
本申请一方面提供了一种计算机设备,包括:处理器及存储器;
其中,上述存储器用于存储计算机程序,上述处理器用于调用上述计算机程序,以执行如下步骤:
获取区块链上的区块的属性信息;
根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块;
将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除;所述第一存储空间与用于存储所述区块链的第二存储空间不相同;
若接收到针对所述目标区块中的交易数据的获取请求,则根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上;
从所述区块链上所恢复得到的目标区块中读取交易数据。本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时,以执行如下步骤:
获取区块链上的区块的属性信息;
根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块;
将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除;所述第一存储空间与用于存储所述区块链的第二存储空间不相同;
若接收到针对所述目标区块中的交易数据的获取请求,则根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上;
从所述区块链上所恢复得到的目标区块中读取交易数据。
本申请中,通过根据区块的属性信息识别出处于冗余状态的目标区块,将目标区块备份至第一存储空间中,以及将区块链上的目标区块中的交易数据删除;有利于缓解区块链上的数据存储压力,即缓解用于存储区块链的第二存储空间的存储压力,可确保区块链所属的区块链网络的正常运行。同时,通过对目标区块进行备份,可避免后续需要使用目标区块中的交易数据时,不能读取到目标区块中的交易数据的问题,可确保与目标区块中的交易数据相关的业务被正常处理。进一步,当需要使用目标区块中的交易数据时,通过第一存储空间中所备份的目标区块,将目标区块中的交易数据恢复至区块链上,从区块链上所恢复得到的目标区块中读取交易数据;有利于防止交易数据被篡改,提高交易数据的可信度以及安全性。同时,由区块链中的各个节点设备见证从区块链上读取交易数据的过程,可有效避免非法用户从区块链上读取交易数据,可防止交易数据被泄露。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的一种区块链网络的系统架构示意图;
图2是本申请提供的一种区块链的示意图;
图3是本申请提供的一种生成区块链上的区块的流程示意图;
图4a是本申请提供的一种区块链网络中的节点设备对区块链上的交易数据归档和恢复的场景示意图;
图4b是本发明实施例提供的一种默克尔帕特里夏树的示意图;
图4c是本申请提供的一种区块链网络中的节点设备对区块链上的交易数据归档和恢复的场景示意图;
图5是本申请提供的一种基于区块链的数据处理方法的流程意图;
图6是本申请提供的一种基于区块链的数据处理方法的流程意图;
图7是本申请提供的一种对第一存储空间所备份的目标区块的有效性进行验证的场景示意图;
图8是本申请提供的一种对第一存储空间所备份的目标区块的有效性进行验证的场景示意图;
图9是本申请提供的一种对第一存储空间所备份的目标区块的有效性进行验证的场景示意图;
图10是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图;
图11是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明实施例提供一种对删除的数据进行恢复的方案,该方案通过删除区块链上的部分数据,能够节省磁盘的存储空间,降低存储空间的存储压力,确保区块链所属的区块链网络的正常运行。同时,在需要获取删除的数据时,通过将删除的数据恢复至区块链上,可确保业务被正常处理,并提高数据获取的有效性以及可信度。
首先介绍本方案应用的区块链网络,请参见图1,图1为本发明实施例提供的一种区块链网络的结构示意图。区块链网络是由多个节点设备共同组成的一个端到端的去中心化网络,区块链网络中的节点设备的数量可以根据实际需求部署,本申请对节点设备的数量不做限定;如图1中以该区块链网络中包括4个节点设备为例进行说明,4个节点设备分别为节点设备101、节点设备102、节点设备103以及节点设备104。需要说明的是,本申请中的区块链网络,可以是基于联盟链的区块链网络(如基于Fabric的联盟链区块链网络),联盟链是由多个组织或机构参与的区块链网络。即联盟链是由多个私有链组成的集群,由多个机构共同参与管理的区块链网络,每个组织或机构管理一个或多个节点设备,其数据只允许系统内不同的机构进行读写和发送。另外,联盟链的各个节点设备通常有与之对应的实体机构组织,通过授权后才能加入或退出网络。各机构组织组成利益相关的联盟,共同维护区块链的健康运转。具体的,基于联盟链的区块链网络具有如下特征:
(1)在一个实施例中,基于联盟链的区块链网络中的共识算法,可以由基于联盟链的区块链网络中管理节点设备定制,管理节点设备可以由基于联盟链的区块链网络中节点设备根据各个机构的机构属性选举得到的,机构属性包括机构信用等级、机构资产量、机构生成时间等等中的一项或多项。在另一个实施例中,基于联盟链的区块链网络中的共识算法,可以由基于联盟链的区块链网络中的各个节点设备共同定制的。
(2)本申请中的共识算法由基于联盟链的区块链网络中各个节点设备共同遵循,例如,该共识算法规定了关于删除区块链上的交易数据的删除条件,基于联盟链的区块链网络中任一节点设备需要删除区块链上目标区块中的交易数据时,基于联盟链的区块链网络中共识节点设备需要根据共识算法对该删除操作的合法性进行验证,如果删除操作满足共识算法中的删除条件时,确定该删除操作具有合法性,可以将区块链上的目标区块中的交易数据删除。
(3)部分去中心化。与公有区块链网络不一样,基于联盟链的区块链网络在某种程度上只属于联盟内部的成员所有,且很容易达成共识,因为毕竟联盟链的节点设备数是非常有限的。
(4)可控性较强。公有区块链网络是一旦区块链形成,将不可篡改,这主要源于公有区块链网络的节点设备一般是海量的,想要篡改区块链上的数据,几乎不可能,而基于联盟链的区块链网络,只要所有机构中的大部分达成共识,即可将区块链上的交易进行更改(如删除)。
(5)数据不会默认公开。不同于公有区块链网络,基于联盟链的区块链网络中的数据只限于联盟里的机构及其用户才有权限进行访问。
可理解的是,每个节点设备在进行正常工作时可以接收到待记录的数据,并基于接收到的待记录的数据维护该区块链。为了保证区块链网络内的信息互通,区块链网络中的每个节点设备之间可以存在网络连接10,节点设备之间可以通过上述网络连接10进行数据传输。例如,当区块链网络中的任意节点设备接收到待记录的数据时,区块链网络中的其他节点设备便根据共识算法对该待记录的数据进行验证,并验证成功后(即达成共识后)将该待记录的数据作为区块链中的数据进行存储,使得区块链网络中全部节点设备上存储的数据均一致。
其中,节点设备101、节点设备102、节点设备103以及节点设备104均可以是独立的一个物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(Content Delivery Network,CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。各个节点设备之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
其中,各个节点设备所维护的区块链如图2所示,该区块链由多个区块组成,各个区块包括区块头和区块体。如图2中,以区块链上包括4个区块为示例进行说明,4个区块分别为区块B0、区块B1、区块B2以及区块B3,区块B0可以称为创始区块,即区块链上最早生成的区块。创始块B0中包括区块头H0和区块体D0,区块头H0中存储有区块信息,区块信息包括版本号、区块高度、时间戳、难度以及当前区块哈希值;区块体D0中存储有交易数据。创始块B0的下一区块B1以创始块B0为父区块,下一区块B1中同样包括区块头H1和区块体D1,区块头H1中存储有当前区块哈希值、父区块的区块哈希值、版本号、区块高度、时间戳和难度值,区块体D1中存储有交易数据T1-交易数据T4。如图2中,区块B1的下一区块B2以区块B1为父区块,区块B2中包括区块头H2和区块体D2,区块体D2中包括交易数据T5-交易数据T7。区块B2的下一区块B3以区块B2为父区块,区块B3中包括区块头H3和区块体D3,区块体D3中包括交易数据T8-交易数据T9。可见,区块链上每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中数据的安全性。需要说明的是,各个区块中还可以包括区块元数据,该区块元数据用于描述该区块是如何生成的等区块基本信息,该区块元数据可以位于区块的区块体中,也可以位于区块中的指定区域,该指定区域为区块中除区块体和区块头以外的任一区域。如图2所示,区块B0、区块B1、区块B2以及区块B3的元数据分别为M0、M1、M2、M3,分别位于对应区块的区块体中;创始块B0的区块元数据M0用于描述创始区块B0如何生成的。同理,区块B1的区块元数据M1用于描述区块B1如何生成的。以此类推,相似之处,不再赘述。
在生成区块链中的各个区块时,区块链所在的节点设备在接收到交易数据时,对交易数据进行校验,完成校验后,将交易数据存储至内存池中,并更新其用于交易数据的哈希树;此处哈希树可以是指默克尔Merkle树、前缀Patricia树、默克尔帕特里夏树(MerklePatricia Tree,MPT)树等等,之后,将更新时间戳更新为接收到交易数据的时间,将区块高度增加1,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的哈希值;merkle_root为当前区块哈希值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块体,得到当前区块。随后,区块链所在节点设备将新生成的区块分别发送给区块链网络中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
为便于理解,进一步的,请参见图4a-图4c所示,是本申请实施例提供的一种数据交互的场景示意图。如图4a所示,图4a中的节点设备可以为图1中的任一节点设备,该节点设备的磁盘1中存储有区块链,磁盘1中的区块链上包括102个区块,分别为区块B0~区块101,节点设备可以获取该区块链上的各个区块的属性信息,区块的属性信息包括区块的区块高度、区块中的交易数据被读取的次数、区块中的交易数据被更新的次数、区块的生成时间等等中的一项或多项。节点设备可以根据区块的属性信息识别区块链上处于冗余状态的目标区块,目标区块是指区块链上交易数据被读取(即被使用)的概率比较低的区块,具体的,目标区块可以是指区块链上生成时间与当前时间之间的时间间隔大于时间间隔阈值的区块,或者,目标区块可以是指区块链上历史被读取的次数小于次数阈值的区块,或者,目标区块可以是指区块链上更新次数大于次数阈值的区块,或者,目标区块可以是指区块链上区块高度大于区块高度阈值的区块等等。
如图4a中,节点设备可以将区块链上区块高度大于区块高度阈值的区块,作为目标区块,如可以将区块B1、区块B2以及区块B3作为目标区块,节点设备可以将区块链上区块B1~区块B3中的交易数据删除,并将区块B1~区块B3备份至磁盘2中。该磁盘2可以是指该节点设备中除磁盘1以外的磁盘,或者,磁盘2可以是指该节点设备的备份设备中的磁盘。图4a中以该磁盘2为该节点设备中除磁盘1以外的磁盘为例进行说明,其中,区块B1~区块B3可以是指以链式的方式备份在磁盘2中,或者,区块B1~区块B3可以是指以非链式的方式备份在磁盘2中。
需要说明的是,节点设备将区块链上区块B1~区块B3中的交易数据删除的具体实现方式包括:将区块链上区块B1~区块B3的区块头保留,将区块链上区块B1~区块B3的区块体删除;也就是说,保持区块B1~区块B3的区块头不变,这样可以使区块链上的区块仍然以区块链的方式连接。通常,区块链上的某一个区块中的交易数据发生变化,该区块中的当前区块哈希值会随之变化,进而,使该区块以后的区块无法以区块链的形式存储,无法确保该区块以后的区块中的交易数据的安全性。基于此,本方案通过如下方式a或方式b来确保删除目标区块中的交易数据后,该目标区块中的当前区块哈希值不发生变化,即该目标区块以后的区块仍然以区块链的形式存储,可提高区块链上的交易数据的安全性。
方式a:节点设备中包括智能合约,该智能合约规定当检测到节点设备删除目标区块中的交易数据时,在该区块链上保持该目标区块的区块头不变。
方式b:该区块链上的区块中的交易数据是基于该默克尔帕特里夏树的数据存储结构存储的,区块中的交易数据均存储在区块链的默克尔帕特里夏树中的叶子节点;该默克尔帕特里夏树还包括扩展节点和分支节点,该扩展节点包括该分支节点的哈希值,该扩展节点与该分支节点相连;该叶子节点包括键值,以及键值对应的交易数据,该分支节点与该叶子节点相连,该叶子节点的键值是由该叶子节点中的key-end元素、与该分支节点中前16个元素中相连的元素以及该扩展节点中的共享元素所构成的,该叶子节点中的key-end元素与该叶子节点所包括的该键值对应的交易数据不同,与该分支节点中前16个元素中相连的元素对应的数据为该叶子节点的键值对应的十六进制字符;键值是指用于检索叶子节点中的交易数据。区块的当前区块哈希可以是指扩展节点中的哈希值,该哈希值可以根据分支节点的标识生成的,当前区块哈希值与区块体中的交易数据无关。因此,将区块体中的交易数据删除后,不会影响区块的当前区块哈希值,可确保删除交易数据后,各个区块仍然以区块链的形式存储,提高交易数据的安全性。
其中,默克尔帕特里夏树是指对区块中的数据进行存储一种数据存储结构,该存储结构中通常包括分支节点、扩展节点、叶子节点。叶子节点:没有子节点,包括一个键值对[key,value],其中,key可以是指区块中记录的交易数据的标识(即键值)的其中的一个元素或多个元素,是一种十六进制编码,value是指区块中记录的一条交易数据。扩展节点:也包括一个键值对[key,value],但是这里的value是其他节点的hash值,这个hash可以被用来查询该默克尔帕特里夏树中的其他节点,也就是说通过hash链接到其他节点,该hash与其他节点中的交易数据无关,该hash可以是根据其他节点的标识生成的。分支节点:是一个长度为17字符串,前16个元素对应着key中的16个可能的十六进制字符,如果该节点上有一对[key,value],则17个字符串中最后一个元素代表value,即分支节点既可以搜索路径的终止也可以是路径的中间节点。即当需要将交易数据记录到区块中时,首先生成该交易数据的目标键值(即key),根据交易数据的key值建立默克尔帕特里夏树的节点,并将交易数据记录到所建立的节点中。例如,当需要记录的交易数据(即value)为10、102、1.1、0.12时,节点设备可以生成这些交易数据的key值,即每个value对应一个key,value与key之间的对应关系如下表1所示。
表1:
Key | value |
a711355 | 10 |
a77d337 | 102 |
a7f9365 | 1.1 |
a77d397 | 0.12 |
可见,这些key值均共享元素a7,a77d337与a77d397共享元素a77d3。可以根据这些key值之间的共享关系建立默克尔帕特里夏树,图4b所示。该默克尔帕特里夏树包括2个扩展节点、4个叶子节点、2个分支节点。叶子节点1记录了的value值为10,该value值对应的key值由叶子节点1中的元素1355、分支节点1中的元素1和扩展节点1中的元素a7构成,即该value值对应的key值被记录在叶子节点1、分支节点1和扩展节点1中。同理,叶子节点2中记录的value值为1.1,该value值对应的key值由叶子节点2中的元素9365、分支节点1中的元素f和扩展节点1中的元素a7构成,即该value值对应的key值被记录在叶子节点2、分支节点1和扩展节点1中。当然,此处的value可以是指需要记录的交易数据、或是指需要记录的交易数据的编码值。对于其他value值的说明请参考对value值10和value值1.1的说明,重复之处不在赘述。其中,默克尔帕特里夏树的节点中的前缀是指节点标识,即0表示节点为扩展节点,2、3均表示节点为叶子节点。当需要删除目标区块中的交易数据时,节点设备可以将目标区块的默克尔帕特里夏树中的叶子节点中存储的交易数据(即value)删除;键值保持不变。
可知,上述方式a和方式b的区别在于:方式a中的区块链上的区块的当前区块哈希值是根据该区块中的交易数据生成的,即区块的当前区块哈希值与区块中的交易数据相关,在区块中的交易数据被删除时,通过智能合约来控制区块的当前区块哈希值不变。方式b中区块的当前区块哈希可以是指默克尔帕特里夏树的扩展节点中的哈希值,该哈希值可以根据分支节点的标识(即key)生成的,分支节点的标识与区块中的交易数据无关,即区块链上的区块的当前区块哈希值与区块中的交易数据无关,在区块中的交易数据被删除时,区块的当前区块哈希值不变。
进一步,如果接收到针对所删除的区块中的交易数据的获取请求,节点设备可以将所删除的区块恢复至区块链上,从区块链上所恢复得到的区块中读取交易数据。如图4c所示,如果接收到针对区块B2中的交易数据的获取请求,节点设备可以根据该获取请求将磁盘2中所备份的区块B2,恢复至磁盘1中的区块链上,从磁盘1的区块链上的区块B2中读取交易数据,同时,在将磁盘2中所备份的区块B2中的交易数据恢复至区块链上后,可以将磁盘2中的区块B2删除。
综上,通过将区块链上处于冗余状态的目标区块中的交易数据删除,并将目标区块备份其他磁盘中,有利于降低用于存储区块链的存储空间的存储压力,确保区块链所属的区块链网络的正常运行。当需要使用目标区块中的交易数据时,可以将其他磁盘中所备份的目标区块的交易数据,恢复至区块链上,从区块链上读取所恢复得到目标区块中的交易数据。相较于,直接从其他磁盘中获取目标区块的交易数据,本方案从区块链上读取恢复得到的交易数据,且目标区块中的交易数据的恢复过程由区块链网络中的各个节点设备所见证,可提高数据获取的可信度以及安全性,同时,可确保与该目标区块中交易数据相关业务被正常处理。
进一步地,请参见图5,是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图。如图5所示,该方法可以由图1中的任一节点设备来执行,其中,该方法至少可以包括以下S101-S104:
S101、获取区块链上的区块的属性信息。
本申请中,节点设备可以按照时间间隔周期性地获取区块链上的区块的属性信息,或者,节点设备可以在接收到向区块链上写入交易数据时,获取区块链上的区块的属性信息;或者,当用于存储区块链的第二存储空间的剩余存储空间小于存储空间阈值时,节点设备可以获取区块链上的区块的属性信息。区块的属性信息包括区块的区块高度、区块中的交易数据所属的机构、区块中的交易数据被读取的次数、区块中的交易数据被更新的次数、区块的生成时间等等中的一项或多项;通过区块的属性信息有利于识别出处于冗余状态的目标区块。
S102、根据该区块的属性信息从该区块链上识别出处于冗余状态的目标区块。
本申请中,节点设备可以根据区块的属性信息从区块链上识别出处于冗余状态的目标区块,即目标区块具体可以是指区块链上交易数据被使用的概率比较低的区块。
可选的,该属性信息包括区块中的交易数据被读取的次数;节点设备可以根据区块中的交易数据被读取的次数,识别出处于冗余状态的目标区块;具体的,该步骤S102可包括如下步骤s11~s13:
s11、从该区块链上确定出被读取的次数小于次数阈值的候选区块。
s12、确定该候选区块中所存储的交易数据的数据量。
s13、将所存储的交易数据的数据量大于数据量阈值的候选区块,确定为处于冗余状态的目标区块。
在步骤s11~s13中,区块中通常包括一条或多条交易数据,当区块中包括一条交易数据时,区块中的交易数据被读取的次数是指该条交易数据被读取的次数;当区块中包括多条交易数据时,区块中的交易数据被读取的次数可以是指区块中的交易数据被读取的总次数、平均次数或最大次数等等。如果区块中的交易数据被读取的次数越多,则表明该目标区块中的交易数据被使用的概率越高;如果区块中的交易数据被读取的次数越少,则表明该目标区块中的交易数据被使用的概率越低。因此,节点设备可以根据区块中的交易数据被读取的次数,识别出处于冗余状态的目标区块;具体的,节点设备可以从该区块链上确定出被读取的次数小于次数阈值的候选区块,并确定候选区块中所存储的交易数据的数据量。候选区块中的数据量越多,给区块链带来的存储压力更大,相反,候选区块中的数据量越少,给区块链带来的存储压力更小;因此,节点设备可以将所存储的交易数据的数据量大于数据量阈值的候选区块,确定为处于冗余状态的目标区块。通过区块中的交易数据被读取的次数,以及区块中的数据量来识别处于冗余状态的目标区块,也就是说,通过多维度识别处于冗余状态的目标区块,提高识别目标区块的准确度。
可选的,该属性信息包括区块的区块高度;节点设备可以根据该区块的区块高度从该区块链上识别出处于冗余状态的目标区块,具体的,上述步骤S102可包括如下步骤s21~s23:
s21、获取该区块链上的最大区块高度。
s22、统计该最大区块高度与该区块链上的区块对应的区块高度之间的差值。
s23、将该区块链上差值大于高度阈值的区块,确定为处于冗余状态的目标区块。
在步骤s21~s23中,区块的区块高度在一定程度上可用于反映区块的生成时间,即区块的生成时间越早,则该区块的区块高度越小,区块的生成时间越晚,则该区块的区块高度越大。例如,创始区块的区块高度为0,创始区块的下一区块的区块高度为1。由此可知,如果区块的区块高度越大,表明该区块的生成时间比较晚,即该区块中的交易数据被更新的概率比较小,也即该区块中的交易数据被使用的概率越高;相反,如果区块的区块高度越小,表明该区块的生成时间比较早,即该区块中的交易数据被更新的概率比较大,即区块链上存储了更新后的交易数据的概率较大,也即该区块中的交易数据被使用的概率越低。因此,节点设备可以获取该区块链上的最大区块高度,计算该最大区块高度与该区块链上的区块对应的区块高度之间的差值;差值越大表明区块的区块高度越小,该区块中的交易数据被使用的概率越低;差值越小表明区块的区块高度越大,该区块中的交易数据被使用的概率越高。因此,节点设备可以将该区块链上差值大于高度阈值的区块,确定为处于冗余状态的目标区块。通过根据该区块的区块高度,从该区块链上识别出处于冗余状态的目标区块,有利于识别出使用概率比较低的交易数据,将使用概率比较低的交易数据所属的区块,作为目标区块,降低删除目标区块后,对业务处理的影响。
可选的,该区块链属于基于联盟链的区块链网络,属性信息包括区块中的交易数据所属的机构;节点设备可以根据该区块中的交易数据所属的机构从该区块链上识别出处于冗余状态的目标区块,具体的,上述步骤S102可包括:获取退出基于该联盟链的区块链网络的目标机构,将所述区块链上交易数据属于所述目标机构的区块确定为处于冗余状态的目标区块。也就是说,如果目标机构退出基于该联盟链的区块链网络,表明再次使用该目标机构的交易数据的概率比较低,因此,将所述区块链上交易数据属于所述目标机构的区块确定为处于冗余状态的目标区块,有利于将低区块链的冗余度。S103、将该目标区块备份至第一存储空间中,以及将该区块链上的目标区块中的交易数据删除;该第一存储空间与用于存储该区块链的第二存储空间不相同。
本申请中,如果目标区块长时间存储在区块链上,会增加第二存储空间的存储压力,导致新的交易数据不能存储至区块链上,基于此,节点设备可以将该目标区块备份至第一存储空间中,以及将该区块链上的目标区块中的交易数据删除;可以降低区块链上的数据存储压力,即降低第二存储空间的存储压力;同时,通过对目标区块进行备份,有利于在需要使用目标区块中的交易数据时,对目标区块中的交易数据进行恢复。
需要说明的是,第一存储空间是指用于对区块进行备份的存储空间,第二存储空间可以是指用于存储区块链的存储空间,第一存储空间和第二存储空间可以位于同一个节点设备中,也可以位于不同节点设备中。第一存储空间和第二存储空间具体可以是指磁盘,或者,存储介质阵列等等,本申请对此不做限定。
S104、若接收到针对该目标区块中的交易数据的获取请求,则根据该第一存储空间中所备份的该目标区块,将该目标区中的交易数据恢复至该区块链上。
需要说明的是,为了能够快速的查找到目标区块中的交易数据,节点设备可以生成目标区块中的交易数据的索引信息。该索引信息用于反映该目标区块中的交易数据的存储地址;如当该目标区块中在交易数据被存储在区块链上时,该目标区块中的交易数据的索引信息用于指示目标区块中的交易数据的存储地址为区块链(或第二存储空间),当该目标区块中在交易数据被备份在第一存储空间中时,该目标区块中的交易数据的索引信息用于指示目标区块中的交易数据的存储地址为第一存储空间。
具体的,当节点设备中包括目标区块中的交易数据的索引信息时,步骤S104可包括:获取目标区块中的交易数据的索引信息,当该索引信息指示目标区块中的交易数据被存储在第一存储空间中时,根据第一存储空间所备份的目标区块,将目标区块中的交易数据恢复至区块链上,并在目标区块中的交易数据恢复至区块链上后,可以根据目标区块的交易数据的索引信息,得到更新后索引信息,更新后的索引信息用于指示该目标区块中的交易数据的存储地址为区块链。通过生成目标区块的交易数据的索引信息,可有效提高查询交易数据的效率。
S105、从该区块链上所恢复得到的目标区块中读取交易数据。
步骤S104~S105中,若接收到针对该目标区块中的交易数据的获取请求,表明需要使用该目标区块中的交易数据来处理业务,因此,节点设备可以根据该第一存储空间中所备份的目标区块,将该目标区块中的交易数据恢复至区块链上。具体的,该获取请求可以包括目标区块的区块高度,根据该目标区块的区块高度从第一存储空间中查找目标区块,根据该目标区块的区块头将目标区块中的交易数据恢复至区块链上的原始位置,该原始位置可以是指在目标区块中的交易数据删除之前,目标区块在区块链上的存储位置;然后,从该区块链上所恢复得到的目标区块中读取交易数据。通过将删除交易数据恢复至区块链上,有利于确保与该交易数据相关的业务被正常处理,通过从区块链上所恢复得到的目标区块中读取交易数据,有利于防止交易数据被篡改,提高交易数据的可信度以及安全性。
本申请中,通过根据区块的属性信息识别出处于冗余状态的目标区块,将目标区块备份至第一存储空间中,以及将区块链上的目标区块中的交易数据删除;有利于缓解区块链上的数据存储压力,即缓解用于存储区块链的第二存储空间的存储压力,可确保区块链所属的区块链网络的正常运行。通过对目标区块进行备份,可避免后续需要使用目标区块中的交易数据时,不能读取到目标区块中的交易数据的问题,可确保与目标区块中的交易数据相关的业务被正常处理。当需要使用目标区块中的交易数据时,通过第一存储空间中所备份的目标区块,将目标区块中的交易数据恢复至区块链上,从区块上所恢复得到的目标区块中读取交易数据;通过从区块链上所恢复得到的目标区块中读取交易数据,有利于防止交易数据被篡改,提高交易数据的可信度以及安全性。同时,由区块链中的各个节点设备见证从区块链上读取交易数据的过程,可有效避免非法用户从区块链上读取交易数据,可防止交易数据被泄露。
进一步地,请参见图6,是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图。如图6所示,该方法可以由图1中的任一节点设备来执行,其中,该方法至少可以包括以下S201-S209:
S201、获取区块链上的区块的属性信息。
S202、根据该区块的属性信息从该区块链上识别出处于冗余状态的目标区块。
S203、获取该目标区块的统计特征,以及该区块链所属的区块链网络中的节点设备的状态信息。
本申请中,该状态信息包括该区块链网络的节点设备的当前剩余电量、设备标识中的电子资源、所安装的应用程序的数量和历史被选择共识节点的次数中的一项或多项;电子资源可以是指虚拟商品、虚拟货币等等。该统计特征包括该目标区块中属于目标机构的交易数据的条数、该目标区块中的交易数据的数据总量和该目标区块中的交易数据关联的交易地址中的一项或多项;目标机构可以是指在目标区块中具有最多交易数据的机构,或者目标机构可以是指定的机构。
S204、根据该目标区块的统计特性以及该状态信息,从该区块链网络的节点设备中选择共识节点。
本申请中,如果区块网络中共识节点固定不变,容易导致共识节点被非法用户入侵,导致共识节点所输出的共识结果不准确。基于此,节点设备可以根据目标区块的统计特征和节点设备的状态信息,从区块链网络中的节点设备中选择共识节点,由于不同区块的统计特征不相同,且节点设备的状态信息是动态变化的,因此,根据目标区块的统计特征和节点设备的状态信息所选择出的共识节点也是动态变化的,可避免共识节点固定不变,使共识结果不准确的问题,提高共识结果的准确度以及公平性。
需要说明的是,节点设备可以通过如下三种方式中的任一种方式从区块链网络的节点设备中选择共识节点:方式一:节点设备可以根据目标区块的统计特征以及区块链网络中的节点设备的状态信息,从区块链网络的节点设备中选择共识节点。方式二:节点设备可以根据目标区块的统计特征,从区块链网络的节点设备中选择共识节点。方式三:节点设备可以根据区块链网络中的节点设备的状态信息,从区块链网络的节点设备中选择共识节点。
可选的,当节点设备采用方式一选择共识节点时,上述步骤S204可包括如下步骤s31~s33:
s31、根据该状态信息生成该区块链网络的节点设备的序号。
s32、根据该目标区块的统计特性生成共识随机数。
s33、将该区块链网络的节点设备中序号为该共识随机数的整数倍的节点设备,确定为共识节点。
在步骤s31~s33中,节点设备可以根据该状态信息对区块链网络中的节点设备进行排序,按照排列顺序生成区块链网络中的节点设备的序号。进一步,根据该目标区块的统计特征生成共识随机数,将该区块链网络中节点设备中序号为该共识随机数的整数倍的节点设备,确定为共识节点。通过根据多个维度的信息(即目标区块的统计特征和节点设备的状态信息)来动态选择共识节点,提高共识节点的随机性,提高共识结果的准确度以及公平性。
可选的,当节点设备采用方式二选择共识节点时,节点设备可以根据该目标区块的统计特性生成共识随机数,获取区块链网络中的节点设备的序号,此处节点设备的序号与方式一中的节点设备的序号的区别在于:本方式中的节点设备的序号是固定不变的,方式一中的节点设备的序号是根据节点设备的状态信息确定的,即节点设备的序号是动态变化的。进一步,将区块链网络中序号为共识随机数的整数倍的节点设备,作为共识节点。通过根据目标区块的统计特征来动态选择共识节点,可提高共识节点的随机性,并可提高共识结果的准确度以及公平性。
可选的,当节点设备采用方式三选择共识节点时,根据区块链网络中的节点设备的状态信息生成各个节点设备的共识权重,按照共识权重由大到小的顺序,对区块链网络中的节点设备进行排序,将排序序号小于序号阈值的节点设备,作为共识节点。通过根据节点设备的状态信息动态选择共识节点,可提高共识节点的随机性,并可提高共识结果的准确度以及公平性。
S205、向该共识节点发送针对该目标区块的删除验证请求;该删除验证请求用于指示该共识节点针对该目标区块的删除操作的合法性进行验证。
S206、从该共识节点中获取针对该目标区块的删除操作的共识结果。
S207、若该共识结果指示针对该目标区块的删除操作具有合法性,则将该目标区块备份至第一存储空间中,以及将该区块链上的目标区块中的交易数据删除。
在步骤S205~S207中,节点设备可以向共识节点发送针对该目标区块的删除验证请求,该删除验证请求用于指示共识节点针对该目标区块的删除操作的合法性进行验证。各个共识节点对目标区块的删除操作的合法性进行验证,并向该节点设备返回验证结果,如果超过50%的节点设备返回指示针对目标区块的删除操作具有合法性的验证结果,则生成指示针对该目标区块的删除操作具有合法性的共识结果;如果小于50%的节点设备返回指示针对目标区块的删除操作具有合法性的验证结果,则生成指示针对该目标区块的删除操作不具有合法性的共识结果。进一步,若该共识结果指示针对该目标区块的删除操作具有合法性,则将该目标区块备份至第一存储空间中,以及将该区块链上的目标区块中的交易数据删除。通过在验证针对目标区块的删除操作具有合法性时,删除目标区块中的交易数据,可避免非法用户删除区块链上的交易数据,导致交易数据相关的业务不能正常被处理,提高删除交易数据的安全性。
可选的,该目标区块包括区块头和区块体,该区块体中包括该目标区块中的交易数据,该区块头中包括该目标区块的区块信息;上述步骤S207可包括如下步骤s41~s43:
s41、若该共识结果指示针对该目标区块的删除操作具有合法性,则根据该目标区块的区块头确定该目标区块在该区块链上的位置信息。
s42、将该目标区块的区块头以及区块体备份至该第一存储空间中。
s43、将该区块链上的目标区块中的区块体删除,按照该目标区块在该区块链上的位置信息,将该目标区块的区块头保留在该区块链上。
在步骤s41~s43中,若该共识结果指示针对该目标区块的删除操作具有合法性,则根据该目标区块的区块头确定该目标区块在区块链上的位置信息,将该目标区块的区块头即区块体备份至第一存储空间中,即将整个目标区块备份至第一存储空间中。将该区块链上目标区块的区块体删除,按照目标区块在区块链上的位置信息,将目标区块的区块头保留在区块链上;即将目标区块中的交易数据删除,将目标区块的区块头保留在区块链上的原始位置处;原始位置是指目标区块在区块链上的位置。由于目标区块中的交易数据占用第二存储空间的存储空间比较大,因此,通过将目标区块中的交易数据删除,可降低区块链的存储压力;通过将目标区块的区块头保留在区块链上,有利于各个区块仍然以区块链的形式存储,提高数据存储的安全性。另外,通过将目标区块的区块头以及区块体备份至第一存储空间中,有利于顺利地将目标区块中的交易数据恢复至区块链上,确保与交易数据相关的业务被正常处理。
需要说明的是,当区块链上的区块对应的区块体中包括区块的元数据(即M)时,节点设备可以在删除目标区块的区块体中的交易数据时,可以一并将目标区块的元数据删除,这样有利于缓解用于存储区块链的存储空间的存储压力。或者,节点设备可以在删除目标区块的区块体中的交易数据时,可以将目标区块的元数据保留在目标区块的区块体中,这样有利于后续查询该目标区块是如何生成的,具有可追溯性,可提高目标区块的可信度。
S208、若接收到针对该目标区块中的交易数据的获取请求,则根据该第一存储空间中所备份的该目标区块,将该目标区中的交易数据恢复至该区块链上。
可选的,节点设备可以对第一存储空间中的备份的目标区块的区块体的有效性进行验证,验证通过时,将备份的目标区块中的交易数据恢复至区块链上,具体的,上述步骤S208可包括如下步骤s51~s53:
s51、根据该区块链上该目标区块的区块头,验证该第一存储空间中所备份的该目标区块的区块体有效性,得到验证结果。
s52、若该验证结果指示该第一存储空间中所备份的该目标区块的区块体具有有效性,则根据该第一存储空间中所备份的该目标区块的区块头,确定该目标区块在该区块链上的位置信息。
s53、按照该目标区块在该区块链上的位置信息,将该第一存储空间中所备份的该目标区块的区块体恢复至该区块链上。
在步骤s51~s53中,节点设备可以根据该区块链上该目标区块的区块头,验证该第一存储空间中所备份的目标区块的区块体的有效性,得到验证结果;该验证结果用于指示第一存储空间中所备份的目标区块的区块体具有有效性,或者,该验证结果用于指示第一存储空间中所备份的目标区块的区块体不具有有效性。如果该验证结果用于指示第一存储空间中所备份的目标区块的区块体不具有有效性,表明第一存储空间中所备份的目标区块的区块体中的交易数据被篡改,因此,可以拒绝将目标区块的区块体恢复至区块链上。如果该验证结果用于指示第一存储空间中所备份的目标区块的区块体具有有效性,表明第一存储空间中所备份的目标区块的区块体中的交易数据未被篡改,因此,可以根据第一存储空间中所备份的目标区块的区块头确定目标区块在区块链上的位置信息,按照该目标区块在该区块链上的位置信息,将该第一存储空间中所备份的该目标区块的区块体恢复至该区块链上。通过在第一存储空间中所备份的交易数据被验证通过时,将所备份的交易数据恢复至区块链上,可确保与交易数据相关的业务被正常处理,即不影响业务的正常处理。
可选的,该区块链上的目标区块的区块头包括第一当前区块哈希值;上述步骤s51可包括如下步骤s61~s64:
s61、从该第一存储空间中,读取该目标区块的区块头中所包括的第二当前区块哈希值。
s62、将该第一当前区块哈希值与该第二当前区块哈希值进行比对,得到第一比对结果。
s63、若该第一比对结果指示该第一当前区块哈希值与该第二当前区块哈希值相同,则确定该第一存储空间中所备份的该目标区块的区块体具有有效性。
s64、生成用于指示该第一存储空间中所备份的该目标区块的区块体具有有效性的验证结果。
在步骤s61~s64中,节点设备可以区块链上目标区块中的当前区块哈希值,作为第一当前区块哈希值,将第一存储空间中目标区块的区块头中的当前区块哈希值,作为第二当前区块哈希值。进一步,将第一当前区块哈希值与第二当前区块哈希值进行比对,得到第一比对结果,如果第一比对结果指示第一当前区块哈希值与第二当前区块哈希值不相同,表明第一存储空间中所备份的目标区块的区块体中的交易数据被篡改。因此,确定该第一存储空间中所备份的该目标区块的区块体不具有有效性;生成用于指示该第一存储空间中所备份的该目标区块的区块体不具有有效性的验证结果。如果第一比对结果指示第一当前区块哈希值与第二当前区块哈希值相同,表明第一存储空间中所备份的目标区块的区块体中的交易数据未被篡改,因此,确定该第一存储空间中所备份的该目标区块的区块体具有有效性;生成用于指示该第一存储空间中所备份的该目标区块的区块体具有有效性的验证结果。通过将第一存储空间中所备份的当前区块哈希值与区块链上的当前区块哈希值,来验证第一存储空间所备份的交易数据的有效性,可避免将被篡改的无效交易数据恢复至区块链上,导致业务处理失败,且浪费用于存储区块链的磁盘的存储资源等问题;有利于确保业务被正常处理,提高磁盘的存储资源的利用率。
例如,如图7所示,节点设备的磁盘1中存储有区块链,该区块链上包括101个区块,其中,区块B1~B3为处于冗余状态的区块,区块B1~B3中的交易数据被删除,节点设备的磁盘2中备份有区块B1~B3。当接收到针对区块B2的获取请求时,该获取请求可以包括区块标识(如区块高度),节点设备可以将磁盘2中区块头中的区块标识与获取请求所携带的区块标识相同的区块,确定为区块B2。进一步,根据获取请求所携带的区块标识从区块链上查询区块B2,将区块链上区块B2中的当前区块哈希值1与磁盘2中所备份的区块B2中的当前区块哈希值2进行比对,如果当前区块哈希值1与当前区块哈希值2不相同,则拒绝将磁盘2中所备份的目标区块中的交易数据恢复至区块链上的目标区块中。如果当前区块哈希值1与当前区块哈希值2相同,则将磁盘2中所备份的目标区块中的交易数据恢复至区块链上的目标区块中。
需要说明的是,每个区块中通常包括一条或多条交易数据,因此,当接收到针对目标区块中的部分目标交易数据(如一条目标交易数据)的获取请求,节点设备可以将磁盘中所备份的目标区块中的目标交易数据恢复至区块链上的目标区块中。例如,如图7中,区块B2中包括交易数据T5、交易数据T6以及交易数据T7,当接收到针对交易数据T5的获取请求,节点设备可以将交易数据T5恢复至区块链上的目标区块中,交易数据T6以及交易数据T7仍备份在磁盘2中。当然,当接收到针对目标区块中的部分目标交易数据获取请求时,节点设备可以将磁盘所备份的目标区块中的所有交易数据恢复至区块链上的目标区块中,本申请对此不做限定。
可选的,该区块链上的目标区块的区块头包括第一当前区块哈希值;上述步骤s51可包括如下步骤s71~s74:
s71、根据该第一存储空间中所备份的该目标区块的区块体生成第三当前区块哈希值。
s72、将该第一当前区块哈希值与该第三当前区块哈希值进行比对,得到第二比对结果。
s73、若该第二比对结果指示该第一当前区块哈希值与该第三当前区块哈希值相同,则确定该第一存储空间中所备份的该目标区块的区块体具有有效性。
s74、生成用于指示该第一存储空间中所备份的该目标区块的区块体具有有效性的验证结果。
在步骤s71~s74,节点设备可以根据该第一存储空间中所备份的该目标区块的区块体生成第三当前区块哈希值,即根据所备份的目标区块的区块体中的交易数据生成当前区块哈希值,将该第一当前区块哈希值与该第三当前区块哈希值进行比对,得到第二比对结果。如果第二比对结果用于反映第一当前哈希值与第三当前哈希值不相同,表明第一存储空间中所备份的目标区块的区块体中的交易数据被篡改。因此,确定该第一存储空间中所备份的该目标区块的区块体不具有有效性;生成用于指示该第一存储空间中所备份的该目标区块的区块体不具有有效性的验证结果。如果第二比对结果指示第一当前区块哈希值与第三当前区块哈希值相同,表明第一存储空间中所备份的目标区块的区块体中的交易数据未被篡改,因此,确定该第一存储空间中所备份的该目标区块的区块体具有有效性;生成用于指示该第一存储空间中所备份的该目标区块的区块体具有有效性的验证结果。通过将第一存储空间中所备份的交易数据与区块链上的当前区块哈希值,来验证第一存储空间所备份的交易数据的有效性,可避免将被篡改的无效交易数据恢复至区块链上,导致业务处理失败,且浪费用于存储区块链的磁盘的存储资源等问题;有利于确保业务被正常处理,提高磁盘的存储资源的利用率。
例如,如图8所示,节点设备的磁盘1中存储有区块链,该区块链上包括101个区块,其中,区块B1~B3为处于冗余状态的区块,区块B1~B3中的交易数据被删除,节点设备的磁盘2中备份有区块B1~B3。当接收到针对区块B2的获取请求时,该获取请求可以包括区块标识(如区块高度),节点设备可以将磁盘2中区块头中的区块标识与获取请求所携带的区块标识相同的区块,确定为区块B2,根据区块B2中的交易数据计算区块B2的当前区块哈希值,得到当前区块哈希值3。进一步,根据获取请求所携带的区块标识从区块链上查询区块B2,将区块链上区块B2中的当前区块哈希值1与当前区块哈希值3进行比对,如果当前区块哈希值1与当前区块哈希值3不相同,则拒绝将磁盘2中所备份的目标区块中的交易数据恢复至区块链上的目标区块中。如果当前区块哈希值1与当前区块哈希值3相同,则将磁盘2中所备份的目标区块中的交易数据恢复至区块链上的目标区块中。
可选的,节点设备可以将区块链上的目标区块中第一前一区块哈希值,与第一存储空间所备份的目标区块中的第二前一区块哈希值进行比对,如果第一前一区块哈希值与第二前一区块哈希值相同,表明从区块链上所查找到的目标区块有误,或者,从第一存储空间中所查找的目标区块有误,则拒绝将第一存储空间所备份的目标区块中的交易数据恢复至区块链上。如果第一前一区块哈希值与第二前一区块哈希值不相同,表明从区块链上所查找到的目标区块无误,以及,从第一存储空间中所查找的目标区块无误,则将第一存储空间所备份的目标区块中的交易数据恢复至区块链上。
例如,如图9所示,节点设备的磁盘1中存储有区块链,该区块链上包括101个区块,其中,区块B1~B3为处于冗余状态的区块,区块B1~B3中的交易数据被删除,节点设备的磁盘2中备份有区块B1~B3。当接收到针对区块B2的获取请求时,该获取请求携带包括区块标识(如区块高度),节点设备可以将磁盘2中区块头中的区块标识与获取请求所携带的区块标识相同的区块,确定为区块B2。进一步,根据获取请求所携带的区块标识从区块链上查询区块B2,将区块链上区块B2中的前一区块哈希值1与磁盘2所备份的区块B2中的前一区块哈希值2进行比对,如果前一区块哈希值1与前一区块哈希值2不相同,则拒绝将磁盘2中所备份的目标区块中的交易数据恢复至区块链上的目标区块中。如果前一区块哈希值1与前一区块哈希值2相同,则将磁盘2中所备份的目标区块中的交易数据恢复至区块链上的目标区块中。
可选的,上述步骤s53可包括如下步骤s81~s84:
s81、从该区块链上确定出该目标区块的相邻区块。
s82、将该目标区块的相邻区块备份至该第一存储空间中,将该区块链上与该目标区块的相邻区块中的交易数据删除。
s83、在该相邻区块中的交易数据删除后,按照该目标区块在该区块链上的位置信息,将该第一存储空间中所备份的该目标区块的区块体恢复至该区块链上。
在步骤s81~s84中,为了避免在目标区块中的交易数据恢复至区块链上后,给区块链造成较大存储压力,节点设备可以将目标区块的相邻区块中交易数据删除,以降低区块链的存储压力。具体的,节点设备可以从该区块链上确定出该目标区块的相邻区块,进一步,将该目标区块的相邻区块备份至该第一存储空间中,将该区块链上与该目标区块的相邻区块中的交易数据删除。然后,在该相邻区块中的交易数据删除后,按照该目标区块在该区块链上的位置信息,将该第一存储空间中所备份的该目标区块的区块体恢复至该区块链上。在将目标区块中的交易数据恢复至区块链上时,通过删除相邻区块中的交易数据,降低区块链的存储压力。
S209、从该区块链上所恢复得到的目标区块中读取交易数据。
本申请中,通过根据区块的属性信息识别出处于冗余状态的目标区块,通过根据目标区块的统计特征和区块链网络中的节点设备的状态信息,从区块链网络的节点设备中选择共识节点。由共识节点针对目标区块的删除操作的合法性进行验证,当共识通过时,将目标区块备份至第一存储空间中,以及将区块链上的目标区块中的交易数据删除;有利于缓解区块链上的数据存储压力,即缓解用于存储区块链的第二存储空间的存储压力,可确保区块链所属的区块链网络的正常运行。通过根据目标区块的统计特征和节点设备的状态信息,动态确定共识节点,提高共识节点的随机性,进而,提高共识结果的准确度以及公平性。通过在共识通过时,对目标区块进行备份,可避免后续需要使用目标区块中的交易数据时,不能读取到目标区块中的交易数据的问题,可确保与目标区块中的交易数据相关的业务被正常处理。当需要使用目标区块中的交易数据时,通过第一存储空间中所备份的目标区块,将目标区块中的交易数据恢复至区块链上,从区块上所恢复得到的目标区块中读取交易数据;通过从区块链上所恢复得到的目标区块中读取交易数据,有利于防止交易数据被篡改,提高交易数据的可信度以及安全性。同时,由区块链中的各个节点设备见证从区块链上读取交易数据的过程,可有效避免非法用户从区块链上读取交易数据,可防止交易数据被泄露。
请参见图10,是本申请实施例提供的一种基于区块链的数据处理装置1的结构示意图。上述基于区块链的数据处理装置1可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该基于区块链的数据处理装置1为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图10所示,该基于区块链的数据处理装置1可以包括:获取模块801、识别模块802、删除模块803、恢复模块804以及读取模块805。
获取模块,用于获取区块链上的区块的属性信息;
识别模块,用于根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块;
删除模块,用于将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除;所述第一存储空间与用于存储所述区块链的第二存储空间不相同;
恢复模块,用于若接收到针对所述目标区块中的交易数据的获取请求,则根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上;
读取模块,用于从所述区块链上读取所恢复得到的目标区块中的交易数据。
可选的,所述删除将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除,包括:
获取所述目标区块的统计特征,以及所述区块链所属的区块链网络中的节点设备的状态信息;
根据所述目标区块的统计特性以及所述状态信息,从所述区块链网络的节点设备中选择共识节点;
向所述共识节点发送针对所述目标区块的删除验证请求;所述删除验证请求用于指示所述共识节点针对所述目标区块的删除操作的合法性进行验证;
从所述共识节点中获取针对所述目标区块的删除操作的共识结果;
若所述共识结果指示针对所述目标区块的删除操作具有合法性,则将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除。
可选的,所述删除模块根据所述目标区块的统计特性以及所述状态信息,从所述区块链网络的节点设备中选择共识节点,包括:
根据所述状态信息生成所述区块链网络的节点设备的序号;
根据所述目标区块的统计特性生成共识随机数;
将所述区块链网络的节点设备中序号为所述共识随机数的整数倍的节点设备,确定为共识节点。
可选的,所述目标区块包括区块头和区块体,所述区块体中包括所述目标区块中的交易数据,所述区块头中包括所述目标区块的区块信息;所述删除模块若所述共识结果指示针对所述目标区块的删除操作具有合法性,则将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除,包括:
若所述共识结果指示针对所述目标区块的删除操作具有合法性,则根据所述目标区块的区块头确定所述目标区块在所述区块链上的位置信息;
将所述目标区块的区块头以及区块体备份至所述第一存储空间中;
将所述区块链上的目标区块中的区块体删除,按照所述目标区块在所述区块链上的位置信息,将所述目标区块的区块头保留在所述区块链上。
可选的,所述恢复模块根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上,包括:
根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果;
若所述验证结果指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性,则根据所述第一存储空间中所备份的所述目标区块的区块头,确定所述目标区块在所述区块链上的位置信息;
按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上。
可选的,所述区块链上的目标区块的区块头包括第一当前区块哈希值;所述恢复模块根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果,包括:
从所述第一存储空间中,读取所述目标区块的区块头中所包括的第二当前区块哈希值;
将所述第一当前区块哈希值与所述第二当前区块哈希值进行比对,得到第一比对结果;
若所述第一比对结果指示所述第一当前区块哈希值与所述第二当前区块哈希值相同,则确定所述第一存储空间中所备份的所述目标区块的区块体具有有效性;
生成用于指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性的验证结果。
可选的,所述区块链上的目标区块的区块头包括第一当前区块哈希值;所述恢复模块根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果,包括:
根据所述第一存储空间中所备份的所述目标区块的区块体生成第三当前区块哈希值;
将所述第一当前区块哈希值与所述第三当前区块哈希值进行比对,得到第二比对结果;
若所述第二比对结果指示所述第一当前区块哈希值与所述第三当前区块哈希值相同,则确定所述第一存储空间中所备份的所述目标区块的区块体具有有效性;
生成用于指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性的验证结果。
可选的,所述恢复模块按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上,包括:
从所述区块链上确定出所述目标区块的相邻区块;
将所述目标区块的相邻区块备份至所述第一存储空间中,将所述区块链上所述目标区块的相邻区块中的交易数据删除;
在所述相邻区块中的交易数据删除后,按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上。
可选的,所述属性信息包括区块中的交易数据被读取的次数;所述识别模块根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块,包括:
从所述区块链上确定出被读取的次数小于次数阈值的候选区块;
确定所述候选区块中所存储的交易数据的数据量;
将所存储的交易数据的数据量大于数据量阈值的候选区块,确定为处于冗余状态的目标区块。
可选的,所述属性信息包括区块的区块高度;所述识别模块根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块,包括:
获取所述区块链上的最大区块高度;
统计所述最大区块高度与所述区块链上的区块对应的区块高度之间的差值;
将所述区块链上差值大于高度阈值的区块,确定为处于冗余状态的目标区块。
根据本申请的一个实施例,图5所示的基于区块链的数据处理方法所涉及的步骤可由图10所示的基于区块链的数据处理装置中的各个模块来执行。例如,图5中所示的步骤S101可由图10中的获取模块801来执行,图5中所示的步骤S102可由图10中的识别模块802来执行;图5中所示的步骤S103可由图10中的删除模块803来执行;图5中所示的步骤S104可由图10中的恢复模块804来执行;图5中所示的步骤S105可由图10中的读取模块805来执行。
同理,根据本申请的一个实施例,图6所示的基于区块链的数据处理方法所涉及的步骤可由图10所示的基于区块链的数据处理装置中的各个模块来执行。例如,图6中所示的步骤S201可由图10中的获取模块801来执行,图6中所示的步骤S202可由图10中的识别模块802来执行;图6中所示的步骤S203~S207可由图10中的删除模块803来执行;图6中所示的步骤S208可由图10中的恢复模块804来执行;图6中所示的步骤S209可由图10中的读取模块805来执行。根据本申请的一个实施例,图10所示的基于区块链的数据处理装置中的各个模块可以分别或全部合并为一个或若干个单元来构成,或者其中的某个(些)单元还可以再拆分为功能上更小的多个子单元,可以实现同样的操作,而不影响本申请的实施例的技术效果的实现。上述模块是基于逻辑功能划分的,在实际应用中,一个模块的功能也可以由多个单元来实现,或者多个模块的功能由一个单元实现。在本申请的其它实施例中,基于区块链的数据处理装置也可以包括其它单元,在实际应用中,这些功能也可以由其它单元协助实现,并且可以由多个单元协作实现。
根据本申请的一个实施例,可以通过在包括中央处理单元(CPU)、随机存取存储介质(RAM)、只读存储介质(ROM)等处理元件和存储元件的例如计算机的通用计算机设备上运行能够执行如图5以及图6中所示的相应方法所涉及的各步骤的计算机程序(包括程序代码),来构造如图10中所示的基于区块链的数据处理装置,以及来实现本申请实施例的基于区块链的数据处理方法。上述计算机程序可以记载于例如计算机可读记录介质上,并通过计算机可读记录介质装载于上述计算设备中,并在其中运行。本申请中,通过根据区块的属性信息识别出处于冗余状态的目标区块,将目标区块备份至第一存储空间中,以及将区块链上的目标区块中的交易数据删除;有利于缓解区块链上的数据存储压力,即缓解用于存储区块链的第二存储空间的存储压力,可确保区块链所属的区块链网络的正常运行。通过对目标区块进行备份,可避免后续需要使用目标区块中的交易数据时,不能读取到目标区块中的交易数据的问题,可确保与目标区块中的交易数据相关的业务被正常处理。当需要使用目标区块中的交易数据时,通过第一存储空间中所备份的目标区块,将目标区块中的交易数据恢复至区块链上,从区块上所恢复得到的目标区块中读取交易数据;通过从区块链上所恢复得到的目标区块中读取交易数据,有利于防止交易数据被篡改,提高交易数据的可信度以及安全性。同时,由区块链中的各个节点设备见证从区块链上读取交易数据的过程,可有效避免非法用户从区块链上读取交易数据,可防止交易数据被泄露。
请参见图11,是本申请实施例提供的一种计算机设备的结构示意图。如图11所示,上述计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,上述计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非易失性的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图11所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图11所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取区块链上的区块的属性信息;
根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块;
将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除;所述第一存储空间与用于存储所述区块链的第二存储空间不相同;
若接收到针对所述目标区块中的交易数据的获取请求,则根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上;
从所述区块链上所恢复得到的目标区块中读取交易数据。
可选的,处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除,包括:
获取所述目标区块的统计特征,以及所述区块链所属的区块链网络中的节点设备的状态信息;
根据所述目标区块的统计特性以及所述状态信息,从所述区块链网络的节点设备中选择共识节点;
向所述共识节点发送针对所述目标区块的删除验证请求;所述删除验证请求用于指示所述共识节点针对所述目标区块的删除操作的合法性进行验证;
从所述共识节点中获取针对所述目标区块的删除操作的共识结果;
若所述共识结果指示针对所述目标区块的删除操作具有合法性,则将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除。
可选的,处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现根据所述目标区块的统计特性以及所述状态信息,从所述区块链网络的节点设备中选择共识节点,包括:
根据所述状态信息生成所述区块链网络的节点设备的序号;
根据所述目标区块的统计特性生成共识随机数;
将所述区块链网络的节点设备中序号为所述共识随机数的整数倍的节点设备,确定为共识节点。
可选的,所述目标区块包括区块头和区块体,所述区块体中包括所述目标区块中的交易数据,所述区块头中包括所述目标区块的区块信息;处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现若所述共识结果指示针对所述目标区块的删除操作具有合法性,则将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除,包括:
若所述共识结果指示针对所述目标区块的删除操作具有合法性,则根据所述目标区块的区块头确定所述目标区块在所述区块链上的位置信息;
将所述目标区块的区块头以及区块体备份至所述第一存储空间中;
将所述区块链上的目标区块中的区块体删除,按照所述目标区块在所述区块链上的位置信息,将所述目标区块的区块头保留在所述区块链上。
可选的,处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上,包括:
根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果;
若所述验证结果指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性,则根据所述第一存储空间中所备份的所述目标区块的区块头,确定所述目标区块在所述区块链上的位置信息;
按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上。
可选的,所述区块链上的目标区块的区块头包括第一当前区块哈希值;可选的,处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果,包括:
从所述第一存储空间中,读取所述目标区块的区块头中所包括的第二当前区块哈希值;
将所述第一当前区块哈希值与所述第二当前区块哈希值进行比对,得到第一比对结果;
若所述第一比对结果指示所述第一当前区块哈希值与所述第二当前区块哈希值相同,则确定所述第一存储空间中所备份的所述目标区块的区块体具有有效性;
生成用于指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性的验证结果。
可选的,所述区块链上的目标区块的区块头包括第一当前区块哈希值;处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果,包括:
根据所述第一存储空间中所备份的所述目标区块的区块体生成第三当前区块哈希值;
将所述第一当前区块哈希值与所述第三当前区块哈希值进行比对,得到第二比对结果;
若所述第二比对结果指示所述第一当前区块哈希值与所述第三当前区块哈希值相同,则确定所述第一存储空间中所备份的所述目标区块的区块体具有有效性;
生成用于指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性的验证结果。
可选的,处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上,包括:
从所述区块链上确定出所述目标区块的相邻区块;
将所述目标区块的相邻区块备份至所述第一存储空间中,将所述区块链上所述目标区块的相邻区块中的交易数据删除;
在所述相邻区块中的交易数据删除后,按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上。
可选的,所述属性信息包括区块中的交易数据被读取的次数;处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块,包括:
从所述区块链上确定出被读取的次数小于次数阈值的候选区块;
确定所述候选区块中所存储的交易数据的数据量;
将所存储的交易数据的数据量大于数据量阈值的候选区块,确定为处于冗余状态的目标区块。
可选的,所述属性信息包括区块的区块高度;所述处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块,包括:
获取所述区块链上的最大区块高度;
统计所述最大区块高度与所述区块链上的区块对应的区块高度之间的差值;
将所述区块链上差值大于高度阈值的区块,确定为处于冗余状态的目标区块。
本申请中,通过根据区块的属性信息识别出处于冗余状态的目标区块,将目标区块备份至第一存储空间中,以及将区块链上的目标区块中的交易数据删除;有利于缓解区块链上的数据存储压力,即缓解用于存储区块链的第二存储空间的存储压力,可确保区块链所属的区块链网络的正常运行。通过对目标区块进行备份,可避免后续需要使用目标区块中的交易数据时,不能读取到目标区块中的交易数据的问题,可确保与目标区块中的交易数据相关的业务被正常处理。当需要使用目标区块中的交易数据时,通过第一存储空间中所备份的目标区块,将目标区块中的交易数据恢复至区块链上,从区块上所恢复得到的目标区块中读取交易数据;通过从区块链上所恢复得到的目标区块中读取交易数据,有利于防止交易数据被篡改,提高交易数据的可信度以及安全性。同时,由区块链中的各个节点设备见证从区块链上读取交易数据的过程,可有效避免非法用户从区块链上读取交易数据,可防止交易数据被泄露。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图5以及前文图6所对应实施例中对上述基于区块链的数据处理方法的描述,也可执行前文图10所对应实施例中对上述基于区块链的数据处理装置的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的基于区块链的数据处理装置所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图5和图6对应实施例中对上述基于区块链的数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
作为示例,上述程序指令可被部署在一个计算机设备上执行,或者被部署位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行,分布在多个地点且通过通信网络互连的多个计算机设备可以组成区块链网络。
上述计算机可读存储介质可以是前述任一实施例提供的数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (13)
1.一种基于区块链的数据处理方法,其特征在于,包括:
获取区块链上的区块的属性信息;
根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块;
将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除;所述第一存储空间与用于存储所述区块链的第二存储空间不相同;
若接收到针对所述目标区块中的交易数据的获取请求,则根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上;
从所述区块链上所恢复得到的目标区块中读取交易数据。
2.如权利要求1所述的方法,其特征在于,所述将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除,包括:
获取所述目标区块的统计特征,以及所述区块链所属的区块链网络中的节点设备的状态信息;
根据所述目标区块的统计特性以及所述状态信息,从所述区块链网络的节点设备中选择共识节点;
向所述共识节点发送针对所述目标区块的删除验证请求;所述删除验证请求用于指示所述共识节点针对所述目标区块的删除操作的合法性进行验证;
从所述共识节点中获取针对所述目标区块的删除操作的共识结果;
若所述共识结果指示针对所述目标区块的删除操作具有合法性,则将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除。
3.如权利要求2所述的方法,其特征在于,所述根据所述目标区块的统计特性以及所述状态信息,从所述区块链网络的节点设备中选择共识节点,包括:
根据所述状态信息生成所述区块链网络的节点设备的序号;
根据所述目标区块的统计特性生成共识随机数;
将所述区块链网络的节点设备中序号为所述共识随机数的整数倍的节点设备,确定为共识节点。
4.如权利要求2所述的方法,其特征在于,所述目标区块包括区块头和区块体,所述区块体中包括所述目标区块中的交易数据,所述区块头中包括所述目标区块的区块信息;
所述若所述共识结果指示针对所述目标区块的删除操作具有合法性,则将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除,包括:
若所述共识结果指示针对所述目标区块的删除操作具有合法性,则根据所述目标区块的区块头确定所述目标区块在所述区块链上的位置信息;
将所述目标区块的区块头以及区块体备份至所述第一存储空间中;
将所述区块链上的目标区块中的区块体删除,按照所述目标区块在所述区块链上的位置信息,将所述目标区块的区块头保留在所述区块链上。
5.如权利要求4所述的方法,其特征在于,所述根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上,包括:
根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果;
若所述验证结果指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性,则根据所述第一存储空间中所备份的所述目标区块的区块头,确定所述目标区块在所述区块链上的位置信息;
按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上。
6.如权利要求5所述的方法,其特征在于,所述区块链上的目标区块的区块头包括第一当前区块哈希值;
所述根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果,包括:
从所述第一存储空间中,读取所述目标区块的区块头中所包括的第二当前区块哈希值;
将所述第一当前区块哈希值与所述第二当前区块哈希值进行比对,得到第一比对结果;
若所述第一比对结果指示所述第一当前区块哈希值与所述第二当前区块哈希值相同,则确定所述第一存储空间中所备份的所述目标区块的区块体具有有效性;
生成用于指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性的验证结果。
7.如权利要求5所述的方法,其特征在于,所述区块链上的目标区块的区块头包括第一当前区块哈希值;
所述根据所述区块链上所述目标区块的区块头,验证所述第一存储空间中所备份的所述目标区块的区块体的有效性,得到验证结果,包括:
根据所述第一存储空间中所备份的所述目标区块的区块体生成第三当前区块哈希值;
将所述第一当前区块哈希值与所述第三当前区块哈希值进行比对,得到第二比对结果;
若所述第二比对结果指示所述第一当前区块哈希值与所述第三当前区块哈希值相同,则确定所述第一存储空间中所备份的所述目标区块的区块体具有有效性;
生成用于指示所述第一存储空间中所备份的所述目标区块的区块体具有有效性的验证结果。
8.如权利要求5所述的方法,其特征在于,所述按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上,包括:
从所述区块链上确定出所述目标区块的相邻区块;
将所述目标区块的相邻区块备份至所述第一存储空间中,将所述区块链上所述目标区块的相邻区块中的交易数据删除;
在所述相邻区块中的交易数据删除后,按照所述目标区块在所述区块链上的位置信息,将所述第一存储空间中所备份的所述目标区块的区块体恢复至所述区块链上。
9.如权利要求1所述的方法,其特征在于,所述属性信息包括区块中的交易数据被读取的次数;所述根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块,包括:
从所述区块链上确定出被读取的次数小于次数阈值的候选区块;
确定所述候选区块中所存储的交易数据的数据量;
将所存储的交易数据的数据量大于数据量阈值的候选区块,确定为处于冗余状态的目标区块。
10.如权利要求1所述的方法,其特征在于,所述属性信息包括区块的区块高度;所述根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块,包括:
获取所述区块链上的最大区块高度;
统计所述最大区块高度与所述区块链上的区块对应的区块高度之间的差值;
将所述区块链上差值大于高度阈值的区块,确定为处于冗余状态的目标区块。
11.一种基于区块链的数据处理装置,其特征在于,包括:
获取模块,用于获取区块链上的区块的属性信息;
识别模块,用于根据所述区块的属性信息从所述区块链上识别出处于冗余状态的目标区块;
删除模块,用于将所述目标区块备份至第一存储空间中,以及将所述区块链上的目标区块中的交易数据删除;所述第一存储空间与用于存储所述区块链的第二存储空间不相同;
恢复模块,用于若接收到针对所述目标区块中的交易数据的获取请求,则根据所述第一存储空间中所备份的所述目标区块,将所述目标区中的交易数据恢复至所述区块链上;
读取模块,用于从所述区块链上读取所恢复得到的目标区块中的交易数据。
12.一种计算机设备,其特征在于,包括:
处理器以及存储器;
所述处理器与所述存储器相连,其中,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1-10任一项所述的方法。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-10任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110997867.9A CN115730933A (zh) | 2021-08-27 | 2021-08-27 | 基于区块链的数据处理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110997867.9A CN115730933A (zh) | 2021-08-27 | 2021-08-27 | 基于区块链的数据处理方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115730933A true CN115730933A (zh) | 2023-03-03 |
Family
ID=85290438
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110997867.9A Pending CN115730933A (zh) | 2021-08-27 | 2021-08-27 | 基于区块链的数据处理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115730933A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056131A (zh) * | 2023-10-11 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法及相关设备 |
-
2021
- 2021-08-27 CN CN202110997867.9A patent/CN115730933A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117056131A (zh) * | 2023-10-11 | 2023-11-14 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法及相关设备 |
CN117056131B (zh) * | 2023-10-11 | 2024-01-26 | 腾讯科技(深圳)有限公司 | 基于区块链网络的数据处理方法及相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107193490B (zh) | 一种基于区块链的分布式数据存储系统及方法 | |
CN110633323B (zh) | 业务数据存储方法、装置、存储介质和计算机设备 | |
CN110033243B (zh) | 基于区块链智能合约的主链存证方法、系统及存储介质 | |
CN111523890A (zh) | 基于区块链的数据处理方法、装置、存储介质及设备 | |
CN112101942B (zh) | 基于区块链的交易请求处理方法、系统、装置及设备 | |
CN111061769A (zh) | 一种区块链系统的共识方法及相关设备 | |
CN113326165B (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
CN112422341B (zh) | 区块链网络的故障检测方法及相关设备 | |
CN111406252A (zh) | 基于纠错码的共享区块链数据存储的共识 | |
CN110599346A (zh) | 一种区块链信息获取方法及相关设备 | |
CN111417930A (zh) | 优先处理共享区块链数据存储 | |
CN112527912A (zh) | 基于区块链网络的数据处理方法、装置及计算机设备 | |
US12007972B2 (en) | Systems and methods for processing blockchain transactions | |
CN112988667A (zh) | 一种基于区块链网络的数据存储方法及装置 | |
CN115134069A (zh) | 区块链编辑的方法和区块链节点 | |
CN112671881A (zh) | 节点组织管理方法、装置、电子设备及可读存储介质 | |
CN111026711A (zh) | 基于区块链数据存储方法、装置、计算机设备及存储介质 | |
CN115730933A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN110992182B (zh) | 区块链钱包的交易方法及系统 | |
CN110519287B (zh) | 一种信息管理方法及相关设备 | |
CN112200680A (zh) | 区块链节点管理方法、装置、计算机以及可读存储介质 | |
CN110049049B (zh) | 一种dns区数据校验的方法和装置 | |
CN113643032B (zh) | 一种基于区块链的信息处理方法、装置及数据管理系统 | |
CN111444270B (zh) | 基于区块链的控制有害信息的方法及系统 | |
CN116107801A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40088363 Country of ref document: HK |