一种基于区块链的数据处理方法、系统及相关设备
技术领域
本发明涉及区块链数据处理领域,尤其涉及一种基于区块链的数据处理方法、系统及相关设备。
背景技术
由于区块链(BlockChain)的分布式去中心化及不可篡改的特性,它能够让区块链中的参与者在无需建立信任关系的前提下实现一个统一的账本系统,区块链运用越来越广泛。但是,随着区块链数据的快速增长,历史数据不断增大,导致节点的存储负担越来越重,如比特币全量数据大小已超过 200GB,并以每月3-4GB的速度增长。
面对这个问题,目前业内通常的解决方法是提升本地节点存储层能力,节点的数据存储量并未减少,对节点提出了更高配置的要求。对加入区块链的节点设备的硬件需求的提高,相应也提高了加入区块链网络的门槛,不利于区块链网络的推广与应用。
发明内容
本发明的主要目的在于提供一种基于区块链的数据处理方法、系统及相关设备,用于减少区块链节点设备所需存储的区块链数据,降低节点设备加入区块链网络的硬件需求。
本发明实施例第一方面提供了一种基于区块链的数据处理方法,其包括:
向区块链网络中的元数据链发送请求加入目标区块链的请求消息;所述元数据链中保存各区块链的元数据;
接收所述元数据链返回的所述目标区块链的元数据;
从分布式数据存储系统获取与所述区块高度对应的目标区块的区块头和区块快照数据;校验所述区块头和所述区块快照数据的正确性,如果校验通过,则加入所述目标区块链。
可选地,作为一种可能的实施方式,本发明实施例中,所述请求信息包括所述目标区块链的id和所述区块链节点设备的数字证书,所述元数据是所述元数据链验证所述数字证书通过后返回的。
可选地,作为一种可能的实施方式,本发明实施例中,基于区块链的数据处理方法还包括:
将区块链节点设备本地保存的满足第一预设条件的区块数据发送至数据存储系统,以使所述分布式数据存储系统存储所述满足第一预设条件的区块数据;
在所述区块链节点设备本地删除所述满足第一预设条件的区块数据。
可选地,作为一种可能的实施方式,本发明实施例中,基于区块链的数据处理方法还包括:当满足第二预设条件时,获取目标区块的区块快照数据,并将所述目标区块的快照数据发送至所述分布式数据存储系统,以使所述分布式数据存储系统存储所述目标区块的区块快照数据。
可选地,作为一种可能的实施方式,本发明实施例中,基于区块链的数据处理方法还包括:从分布式数据存储系统获取与所述区块高度对应的目标区块的区块头的MPT证明;
所述校验所述区块头和所述区块快照数据包括:
利用所述MPT证明校验所述区块头的有效性;
利用所述元数据校验所述区块头的正确性;以及,
利用所述区块头校验所述区块快照数据的正确性。
可选地,作为一种可能的实施方式,本发明实施例中,所述元数据包括
区块链的id、区块高度、区块hash值以及区块有效证明;所述利用所述
元数据校验所述区块头的正确性包括:
利用所述区块头计算目标区块的第一区块hash值,判断所述第一区块 hash值是否与所述元数据中包括的区块hash值一致;
判断所述区块头中的签名与所述区块有效证明是否匹配;
如果所述第一区块hash值与所述元数据中包括的区块hash值一致,且所述区块头中的签名与所述区块有效证明匹配,则确定所述区块头的数据是正确的。
可选地,作为一种可能的实施方式,本发明实施例中,所述利用所述区块头校验所述区块快照数据的正确性包括:
利用所述区块快照数据计算得到目标区块的第二区块hash值,判断所述第二区块hash值与所述第一区块hash值是否一致,如果一致,则确定所述区块快照数据是正确的。
本发明实施例第二方面提供了一种基于区块链的数据处理方法,应用于区块链节点设备,其包括:
将区块链节点设备本地保存的满足第一预设条件的区块数据发送至数据存储系统,以使所述分布式数据存储系统存储所述满足第一预设条件的区块数据;
在所述区块链节点设备本地删除所述满足第一预设条件的区块数据。
可选地,作为一种可能的实施方式,本发明实施例中基于区块链的数据处理方法还包括:当满足第二预设条件时,获取目标区块的区块快照数据,并将所述目标区块的快照数据发送至所述分布式数据存储系统,以使所述分布式数据存储系统存储所述区块快照数据。
本发明实施例第三方面提供了一种区块链节点设备,其特征在于,所述区块链节点设备包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面及第二方面中任一项可能的实施方式中的基于区块链的数据处理方法中的步骤。
可选的,作为一种可能的实施方式,本发明实施例中的区块链节点设备为组成CDN网络或者区块链网络的节点。
本发明实施例第四方面提供了一种基于区块链的数据处理系统,其包括:
处理单元,用于将区块链节点设备本地保存的满足第一预设条件的区块数据发送至数据存储系统,以使所述分布式数据存储系统存储所述满足第一预设条件的区块数据;
删除单元,用于在所述区块链节点设备本地删除所述满足第一预设条件的区块数据。
本发明实施例第五方面提供了一种区块链网络,所述区块链网络包括至少一条区块链,所述区块链网络与分布式数据存储系统通信连接,其中,
所述至少一条区块链中的区块链节点设备用于将区块链节点设备本地保存的满足第一预设条件的区块数据发送至所述分布式数据存储系统,以使所述分布式数据存储系统存储所述满足预设条件的区块数据;以及用于在所述区块链节点本地删除所述满足第一预设条件的区块数据。
可选的,作为一种可能的实施方式,本发明实施例中的区块链网络中,所述至少一条区块链中的区块链节点设备还用于当满足第二预设条件时,获取目标区块的区块快照数据,并将所述目标区块的快照数据发送至所述分布式数据存储系统,以使所述分布式数据存储系统存储所述区块快照数据。
可选的,作为一种可能的实施方式,本发明实施例中的区块链网络中,所述区块链网络还包括元数据链,所述元数据链用于同步并保存所述至少一条区块链的元数据;所述元数据链还用于:接收区块链节点设备发送的加入目标区块链的请求;将所述目标区块链的元数据返回给所述区块链节点设备;其中,所述元数据包括区块链的id、区块高度、区块hash值以及区块有效证明。
本发明实施例第六方面提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序可被一个或者多个处理器执行,以实现如第一方面及第二方面任一项可能的实施方式中的基于区块链的数据处理方法中的步骤。
从以上技术方案可以看出,本发明实施例具有以下优点:
本发明实施例中,区块链网络中的区块链节点设备在加入区块链网络时,仅需要向分布式存储系统下载区块头和区块快照数据,而无需同步全量的区块链历史数据,可以快速的加入区块链网络;在加入区块链网络后,可以通过将历史区块数据转移到分布式存储系统中存储,无需保存全量的历史区块数据,,节约了存储空间,降低了节点设备加入区块链网络的硬件需求,有利于区块链网络的推广与应用。
附图说明
图1为本发明实施例中一种基于区块链的数据处理方法的一个实施例示意图;
图2为本发明实施例中一种基于区块链的数据处理方法的另一个实施例示意图;
图3为本发明实施例中一种基于区块链的数据处理方法的一个具体运用实施例示意图;
图4为本发明实施例中一种基于区块链的数据处理系统的一个实施例示意图;
图5为本发明实施例中一种区块链节点设备一个实施例示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
随着区块链数据的快速增长,历史数据不断增大,导致节点的存储负担越来越重。本发明实施例中,通过将区块链中的区块数据存储在去中心化的分布式数据存储系统中来解决区块链节点设备本地存储不断增长带来的问题。
在一个实施例中,本发明公开一种区块链网络,该区块链网络包括至少一条区块链、区块链网络与分布式数据存储系统通信连接,其中,
至少一条区块链中的区块链节点设备用于将区块链节点设备本地保存的满足第一预设条件的区块数据发送至分布式数据存储系统,以使分布式数据存储系统存储满足预设条件的区块数据;以及用于在区块链节点本地删除满足第一预设条件的区块数据。
第一预设条件用户可以自行设定,如将已经产生了若干时长的区块数据作为历史数据发送到分布式数据存储系统,并在本地删除从而达到节省本地存储空间的目的。
至少一条区块链中的区块链节点设备还用于当满足第二预设条件时,获取目标区块的区块快照数据,并将目标区块的快照数据发送至分布式数据存储系统,以使分布式数据存储系统存储区块快照数据。
第二预设条件可以预先设定,是进行区块快照的逻辑,可以有多种形式,比如每隔若干个区块进行一次快照,或者每隔若干时长进行一次快照,在此不做限定;
举例来说,区块快照可以是如下形式:<blockhash, stateroot,txhash,nonce,validatorHash,txlist,accountstate……>
其中,blockhash:区块的hash值,即区块头中所有元素的hash;
Accountstate:所有账户数据;
stateroot:所有账户数据的MPT(Merkle Patricia Tree)树的根节点hash,Accountstate的hash;
Txlist:此区块中的交易列表;
txhash:此区块中的交易列表的摘要,txlist的hash值;
nonce:区块nonce,工作量证明;
Validatorhash:区块的验证人列表的MPT树根的hash;
需要说明的是,区块快照可以就是要快照的目标区块。
优选的,区块链网络还包括元数据链,其中元数据链用于同步并保存至少一条区块链的元数据;
其中,元数据包括区块链的id、区块高度、区块hash值以及区块有效证明等内容,具体形式可以是<chainid,blockhash,validators,height>
其中,chainid:链的编号,对于单链的区块链为0,如支持多链或分片的区块链系统为链编号或分片编号;
height:区块高度;
blockhash:对应的区块的区块hash值;
Validators:此区块有效证明,如果是基于PBFT的区块链为投票者的签名,如基于POW的区块链为工作量证明;
元数据链用于不断同步和验证链的元数据,保证元数据的正确性,保证无法篡改。
元数据链还用于接收请求加入该区块链网络的区块链节点设备(以下简称新节点)发送的请求信息,该请求信息包括要求加入的目标区块链的id以及该节点设备的数字证书;元数据链验证数字证书通过后,向新节点返回相应的元数据;
具体的,如果该请求信息中包含了指定的区块高度,则元数据链返回与该指定的区块高度相对应的元数据,否则将返回区块高度最高的元数据。
新节点获取到元数据之后,还要从分布式数据存储系统获取与当前区块高度对应的目标区块的区块头以及区块快照数据;
优选的,在获取区块头的同时,还从分布式数据存储系统获取到区块头的MPT证明,新节点可利用MPT证明来校验获取到的区块头是否有效,关于MPT证明的具体内容为现有技术,在此不做赘述;
优选的,新节点可进一步利用元数据来校验区块头的正确性,具体的校验方法可以是:
利用区块头计算目标区块的第一区块hash值,判断第一区块hash值是否与元数据中包括的区块hash值一致;
判断区块头中的签名与区块有效证明是否匹配;
如果第一区块hash值与元数据中包括的区块hash值一致,且区块头中的签名与区块有效证明匹配,则确定区块头的数据是正确的。
优选的,新节点可进一步利用区块头校验区块快照数据的正确性,具体的校验方法可以是:
利用区块快照数据计算得到目标区块的第二区块hash值,判断第二区块 hash值与第一区块hash值是否一致,如果一致,则确定区块快照数据是正确的。
举例来说,利用区块快照数据计算目标区块的第二区块hash值的方式可以是:根据区块快照中的txlist、Accountstate计算txhash、stateroot,利用 txhash,stateroot计算得到第二区块hash值;这样验证的优点在于,可以确保 txlist、Accountstate数据的真实性。
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。下面将从已经加入区块链的节点设备的角度进行描述,请参阅图1,本发明实施例中一种基于区块链的数据处理方法的一个实施例可包括:
101、将区块链节点设备本地保存的满足第一预设条件的区块数据发送至数据存储系统;
申请人注意到,现有的区块链中一个区块是一个事务,每个区块生成之后该区块中保存有一个全局状态,这个全局状态表示了区块链在这一区块高度时所有账户的数据信息,区块链运用过程中使用频率最高的往往是最新生成(区块高度最高)的区块中的所有账户的数据信息,其余的历史区块往往只有在验证区块链的正确性的时候才会用到,使用频率并不高。有鉴于此,本发明实施例中可以将区块链中的区块数据发送给去中心化的分布式数据存储系统中进行存储,以保留区块链的分布式去中心化存储及不可篡改的特性。
具体的,本发明实施例中的去中心化的分布式数据存储系统可以是迅雷链文件系统TCFS系统,也可以是星际文件系统IPFS系统或其他去中心化的分布式数据存储系统,具体此处不做限定。仅以TCFS系统为例进行说明,本发明实施例中的区块链节点设备可以将区块链中的区块数据存档于去中心化的分布式数据存储系统。具体的区块链节点设备可以根据区块链中的区块数据生成对应的区块快照数据,然后采用TCFS系统将区块快照数据进行切片和冗余编码,最后分散存储在TCFS系统中,该TCFS系统中包含百万级别的玩客云节点,可以有效保留区块链的分布式去中心化存储及不可篡改的特性。可以理解的是,本发明实施例中并不限制生成区块快照的频率,既可以选择每个区块都生成一个区块快照,也可以选择每100个区块生成一个区块快照,具体此处不做限定。
102、在区块链节点设备本地删除满足第一预设条件的区块数据。
在将区块链中的区块数据发送给去中心化的分布式数据存储系统之后,本发明实施例中的区块链节点设备可以在本地删除区块链对应的区块链网络中的节点设备中存储的满足第一预设条件的区块数据,保留区块高度排序靠前的预设数量的区块对应的目标区块数据。例如,可以只需要保存区块高度最高的区块数据,也可以保存区块高度排序前三的区块数据,具体此处不做限定。
当需要使用历史区块数据时,可以主动或被动的从去中心化的分布式数据存储系统(例如TCFS系统)中下载对应的数据。
本发明实施例中,区块链节点设备可以将区块链中的区块数据存储在去中心化的分布式数据存储系统中,保留了区块链的分布式去中心化存储及不可篡改的特性,然后删除了区块链对应的区块链网络中的节点设备中存储的历史区块数据,只需要保留区块高度排序靠前的预设数量的区块对应的目标区块数据。相对于现有方案,本发明实施例中的区块链对应的区块链网络中的节点设备只需要保存区块高度排序靠前的预设数量的区块对应的目标区块数据,无需保存历史区块数据,节约了存储空间,降低了节点设备加入区块链网络的硬件需求,有利于区块链网络的推广与应用。
可选的,作为一种可能的实施方式,在上述图1所示的实施例的基础上,为了便于新节点加入区块链网络,已经加入的区块链节点设备需要在分布式数据存储系统中存储区块快照数据以供新节点进行下载。优选的,当满足第二预设条件时,区块链节点设备还可以获取目标区块的区块快照数据,并将目标区块的快照数据发送至分布式数据存储系统,以使分布式数据存储系统存储区块快照数据。
第二预设条件可以预先指定,是进行区块快照的逻辑,可以有多种形式,比如每隔若干个区块进行一次快照,或者每隔若干时长进行一次快照,在此不做限定。
为了便于理解,下面将从新节点的角度,对新节点设备加入区块链网络过程中的基于区块链的数据处理方法进行描述。请参阅图2,本发明实施例中一种基于区块链的数据处理方法的另一个实施例可包括:
201、向区块链网络中的元数据链发送请求加入目标区块链的请求消息;
当目标设备想要加入区块链对应的区块链网络时,可以向区块链网络中的元数据链发送请求消息。其中,该元数据链中保存区块链各区块的元数据。
可选的,作为一种可能的实施方式,该请求消息中包含新节点设备的身份校验信息(例如数字证书),区块链节点设备可以基于该身份校验信息对新节点设备进行身份验证或鉴权,只有验证通过之后才会返回对应的元数据。
202、接收元数据链返回的目标区块链的元数据;
新节点设备可以接收元数据链返回的当前区块高度对应的目标区块链的元数据,该元数据可以包括区块链的id、区块高度、区块hash值以及区块有效证明。
203、从分布式数据存储系统获取与当前区块高度对应的目标区块的区块头和区块快照数据;
新节点设备可以根据元数据中的区块链的id、区块高度从分布式数据存储系统获取与当前区块高度对应的目标区块的区块头和区块快照数据。
204、校验区块头和区块快照数据的正确性,如果校验通过,则加入目标区块链。
具体的,如果该请求信息中包含了指定的区块高度,则元数据链返回与该指定的区块高度相对应的元数据,否则将返回区块高度最高的元数据。
新节点获取到元数据之后,还要从分布式数据存储系统获取与当前区块高度对应的目标区块的区块头以及区块快照数据;
优选的,在获取区块头的同时,还从分布式数据存储系统获取到区块头的MPT证明,新节点可利用MPT证明来校验获取到的区块头是否有效,关于MPT证明的具体内容为现有,在此不做赘述;
优选的,新节点可进一步利用元数据来校验区块头的正确性,具体的校验方法可以是:
利用区块头计算目标区块的第一区块hash值,判断第一区块hash值是否与元数据中包括的区块hash值一致;
判断区块头中的签名与区块有效证明是否匹配;
如果第一区块hash值与元数据中包括的区块hash值一致,且区块头中的签名与区块有效证明匹配,则确定区块头的数据是正确的。
优选的,新节点可进一步利用区块头校验区块快照数据的正确性,具体的校验方法可以是:
利用区块快照数据计算得到目标区块的第二区块hash值,判断第二区块 hash值与第一区块hash值是否一致,如果一致,则确定区块快照数据是正确的。
本发明实施例中,区块链对应的区块链网络中的节点设备只需要保存当前区块高度的区块对应的区块数据,无需保存历史区块数据,节约了存储空间, 降低了节点设备加入区块链网络的硬件需求,有利于区块链网络的推广与应用。其次,在区块链中存储有区块链对应的元数据区块链,可以根据元数据校验区块头和区块快照数据的正确性,提高了数据的安全性。
可以理解的是,在本发明的各种实施例中,上述各步骤的序号的大小并不意味着执行顺序的先后,各步骤的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
为了便于理解,请参阅图3,下面将结合具体运用实例对本发明实施例中的基于区块链的数据处理方法进行描述。
本实施例中的流程主要包括包括:1、历史数据冷存;2、数据快照;3、生成元数据链;4、节点快速启动。具体流程如下:
1、历史数据冷存储
不断同步区块链的区块数据,当区块数据存储空间大小达到一定阈值或到达预设时间周期,如3天后,将这一处理周期内的区块数据进行归档处理。具体可以采用数据的冷存储,即使用去中心化存储技术,保证数据不会丢失,不被篡改。如使用TCFS进行冷存,TCFS将数据进行切片和冗余编码,然后分散存储到百万级别的玩客云节点上。
2、数据快照
区块链中一个区块是一个事务,每个区块执行完后会有一个全局状态,这个全局状态表示了区块链在这一区块高度时所有账户的数据快照。每个区块都可以生产一个区块快照,一个快照的形式可以采用如下所示。
区块快照:<blockhash,stateroot,txhash,nonce,validatorHash,txlist,accountstate……>
blockhash:区块的hash值,即区块头中所有元素的hash
Accountstate:所有账户数据
stateroot:所有账户数据的MPT树的根节点hash,Accountstate的hash
Txlist:此区块中的交易列表
txhash:此区块中的交易列表的摘要,txlist的hash值
nonce:区块nonce,工作量证明
Validatorhash:区块的验证人列表的MPT树根的hash
区块的快照信息也会进行冷存储。本发明并不限制生成区块快照的频率,例如可以选择每个区块都生成一个快照,也可以选择每100个区块生成一个快照。
3、生成元数据链(metachain)
metachain也是一条区块链,特别的是这条链只同步交易链的元数据。
元数据:<chainid,height,blockhash,validators,height……>
chainid:链的编号,对于单链的区块链为0,如支持多链或分片的区块链节点设备为链编号或分片编号;
height:区块高度;
blockhash:对应的区块的区块hahs值;
Validators:此区块有效证明,如基于POW的区块链为工作量证明,如果是基于PBFT的区块链为投票者的签名。
metachain不断同步和验证链的元数据,保证元数据的正确性,保证无法篡改。
4、节点快速启动
当一个新节点想加入到区块链网络中,需要4个步骤
1)向metachain请求启动参数,请求信息形式为request<chainid,digitalcertificate……>
2)metachain根据请求参数,验证数字证书,然后返回对于链chainid 的最新高度为height的元数据;
3)从元数据中获取validators;
从冷存储系统中下载响应高度的区块头(节点向存储系统请求获取到高度为height的目标区块的区块头信息和信息的MPT证明)和响应的快照完整数据。
节点通过MPT证明校验metachain响应区块头信息的有效性;
计算区块头的hash,得到一个blockhash,与元数据中的blockhash进行比较,一致则说明区块头数据正确;
4)校验区块头中的签名(投票者的签名)是否与上一步获取的 validators匹配,如匹配证明区块头的数据是正确的。
5)并通过区块头中的信息,校验下载到的区块快照数据的正确性(根据区块快照中的txlist、Accountstate计算txhash,stateroot,利用 txhash,stateroot计算blockhash,跟前面的blockhash进行比较),校验通过后,可加入到区块链网络中,开始参与共识流程。
请参阅图4,在本实施例中还提供了一种基于区块链的数据处理系统,其特征在于,系统包括:
处理单元401,用于将区块链节点设备本地保存的满足第一预设条件的区块数据发送至数据存储系统,以使分布式数据存储系统存储满足第一预设条件的区块数据;
删除单元402,用于在区块链节点设备本地删除满足第一预设条件的区块数据。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
请参阅图5,在本实施例中还提供了一种区块链节点设备,区块链节点设备1可以是PC(Personal Computer,个人电脑),也可以是智能手机、平板电脑、掌上电脑、便携计算机、智能路由器、矿机、网络存储设备终端设备。
该区块链节点设备1可以是组成CDN网络或者区块链网络的节点。
该区块链节点设备1可以包括存储器11、处理器12和总线13。处理器 11执行计算机程序时实现上述图1至图3所示的基于区块链的数据处理方法实施例中的步骤,例如图2所示的步骤201至204。或者,处理器执行计算机程序时实现上述各装置实施例中各模块或单元的功能。
本发明的一些实施例中,处理器具体用于实现如下步骤:
向区块链网络中的元数据链发送请求加入目标区块链的请求消息;元数据链中保存区块链中各区块的元数据,元数据包括区块链的id、区块高度、区块hash值以及区块有效证明;
接收元数据链返回的目标区块链的元数据;
从分布式数据存储系统获取与当前区块高度对应的目标区块的区块头和区块快照数据;校验区块头和区块快照数据的正确性,如果校验通过,则加入目标区块链。
可选的,请求信息包括目标区块链的id和区块链节点设备的数字证书,元数据是元数据链验证数字证书通过后返回的。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
将区块链节点设备本地保存的满足第一预设条件的区块数据发送至数据存储系统,以使分布式数据存储系统存储满足第一预设条件的区块数据;
在区块链节点设备本地删除满足第一预设条件的区块数据。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
当满足第二预设条件时,获取目标区块的区块快照数据,并将目标区块的快照数据发送至分布式数据存储系统,以使分布式数据存储系统存储目标区块的区块快照数据。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:从分布式数据存储系统获取与区块高度对应的目标区块的区块头的MPT证明;
校验区块头和区块快照数据包括:
利用MPT证明校验区块头的有效性;
利用元数据校验区块头的正确性;以及,
利用区块头校验区块快照数据的正确性。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
利用区块头计算目标区块的第一区块hash值,判断第一区块hash值是否与元数据中包括的区块hash值一致;
判断区块头中的签名与区块有效证明是否匹配;
如果第一区块hash值与元数据中包括的区块hash值一致,且区块头中的签名与区块有效证明匹配,则确定区块头的数据是正确的。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:利用区块头校验区块快照数据的正确性包括:
利用区块快照数据计算得到目标区块的第二区块hash值,判断第二区块 hash值与第一区块hash值是否一致,如果一致,则确定区块快照数据是正确的。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
将区块链节点设备本地保存的满足第一预设条件的区块数据发送至数据存储系统,以使分布式数据存储系统存储满足第一预设条件的区块数据;
在区块链节点设备本地删除满足第一预设条件的区块数据。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
当满足第二预设条件时,获取目标区块的区块快照数据,并将目标区块的快照数据发送至分布式数据存储系统,以使分布式数据存储系统存储区块快照数据。
其中,存储器11至少包括一种类型的可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是区块链节点设备1的内部存储单元,例如该区块链节点设备1的硬盘。存储器11在另一些实施例中也可以是区块链节点设备1的外部存储设备,例如区块链节点设备1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器11还可以既包括区块链节点设备1的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于区块链节点设备1的应用软件及各类数据,例如**程序01 的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
处理器12在一些实施例中可以是一中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行**程序01等。
该总线13可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称 EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
进一步地,区块链节点设备还可以包括网络接口14,网络接口14可选的可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该区块链节点设备1与其他电子设备之间建立通信连接。
可选地,该区块链节点设备1还可以包括用户接口,用户接口可以包括显示器(Display)、输入单元比如键盘(Keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在区块链节点设备1中处理的信息以及用于显示可视化的用户界面。
图5仅示出了具有组件11-14以及计算机程序01的区块链节点设备1,本领域技术人员可以理解的是,图1示出的结构并不构成对区块链节点设备1 的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
本发明还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时,可以实现如下步骤:
向区块链网络中的元数据链发送请求加入目标区块链的请求消息;元数据链中保存区块链中各区块的元数据,元数据包括区块链的id、区块高度、区块hash值以及区块有效证明;
接收元数据链返回的目标区块链的元数据;
从分布式数据存储系统获取与当前区块高度对应的目标区块的区块头和区块快照数据;校验区块头和区块快照数据的正确性,如果校验通过,则加入目标区块链。
可选的,请求信息包括目标区块链的id和区块链节点设备的数字证书,元数据是元数据链验证数字证书通过后返回的。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
将区块链节点设备本地保存的满足第一预设条件的区块数据发送至数据存储系统,以使分布式数据存储系统存储满足第一预设条件的区块数据;
在区块链节点设备本地删除满足第一预设条件的区块数据。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
当满足第二预设条件时,获取目标区块的区块快照数据,并将目标区块的快照数据发送至分布式数据存储系统,以使分布式数据存储系统存储目标区块的区块快照数据。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:从分布式数据存储系统获取与区块高度对应的目标区块的区块头的MPT证明;
校验区块头和区块快照数据包括:
利用MPT证明校验区块头的有效性;
利用元数据校验区块头的正确性;以及,
利用区块头校验区块快照数据的正确性。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
利用区块头计算目标区块的第一区块hash值,判断第一区块hash值是否与元数据中包括的区块hash值一致;
判断区块头中的签名与区块有效证明是否匹配;
如果第一区块hash值与元数据中包括的区块hash值一致,且区块头中的签名与区块有效证明匹配,则确定区块头的数据是正确的。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:利用区块头校验区块快照数据的正确性包括:
利用区块快照数据计算得到目标区块的第二区块hash值,判断第二区块 hash值与第一区块hash值是否一致,如果一致,则确定区块快照数据是正确的。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
将区块链节点设备本地保存的满足第一预设条件的区块数据发送至数据存储系统,以使分布式数据存储系统存储满足第一预设条件的区块数据;
在区块链节点设备本地删除满足第一预设条件的区块数据。
可选的,本发明的一些实施例中,处理器还可以用于实现如下步骤:
当满足第二预设条件时,获取目标区块的区块快照数据,并将目标区块的快照数据发送至分布式数据存储系统,以使分布式数据存储系统存储区块快照数据。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质, (例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。