CN109858285B - 区块链数据的处理方法、装置、设备和介质 - Google Patents
区块链数据的处理方法、装置、设备和介质 Download PDFInfo
- Publication number
- CN109858285B CN109858285B CN201811493496.5A CN201811493496A CN109858285B CN 109858285 B CN109858285 B CN 109858285B CN 201811493496 A CN201811493496 A CN 201811493496A CN 109858285 B CN109858285 B CN 109858285B
- Authority
- CN
- China
- Prior art keywords
- chain
- block
- data
- blockchain
- node
- 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
Images
Classifications
-
- 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
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种区块链数据的处理方法、装置、设备和存储介质。其中,该方法可以由区块链节点执行,该方法包括:响应于区块链网络中证明节点发送的区块链分链请求,所述区块链分链请求是所述证明节点在检测到当前区块链满足分链条件时生成的;根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链存储在所述证明节点中;对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且将所述子区块链作为新的当前区块链。能够降低区块链网络的数据存储空间,进而提高各节点进行数据同步以及数据查询的效率。
Description
技术领域
本发明实施例涉及数据处理技术,尤其涉及一种区块链数据的处理方法、装置、设备和存储介质。
背景技术
区块链网络具有分布式去中心化、无需信任系统和不可篡改等优点,已逐渐成为金融行业中急需使用的数据库技术。
当前,区块链网络为了实现各节点存储数据的一致性,需要将保存的数据同步到区块链网络的各节点中。但是,随着区块链应用的不断扩展,区块链网络中保存数据也在急剧的上升,占用了大量的存储空间,从而导致区块链网络存在各节点进行数据同步时耗时较长、在区块链中查询数据效率较低等问题,亟需改进。
发明内容
本发明实施例提供的一种区块链数据的处理方法、装置、设备和存储介质,能够降低区块链网络的数据存储空间,进而提高各节点进行数据同步以及数据查询的效率。
第一方面,本发明实施例提供了一种区块链数据的处理方法,由区块链节点执行,该方法包括:
响应于区块链网络中证明节点发送的区块链分链请求,所述区块链分链请求是所述证明节点在检测到当前区块链满足分链条件时生成的;
根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链存储在所述证明节点中;
对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且将所述子区块链作为新的当前区块链。
第二方面,本发明实施例提供了一种区块链数据的处理方法,由区块链节点执行,该方法包括:
若检测到当前区块链满足分链条件,则生成区块链分链请求;
向所述区块链网络发送所述区块链分链请求,由区块链网络中的区块生成节点执行如下操作:响应所述区块链分链请求,根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链发送至证明节点,对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且所述子区块链作为当前区块链;
接收并存储所述区块生成节点发送的母链。
第三方面,本发明实施例还提供了一种区块链数据的处理装置,配置于区块链节点中,该装置包括:
分链请求响应模块,用于响应于区块链网络中证明节点发送的区块链分链请求,所述区块链分链请求是所述证明节点在检测到当前区块链满足分链条件时生成的;
分链处理模块,用于根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链存储在所述证明节点中;
子链构建模块,用于对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且将所述子区块链作为新的当前区块链。
第四方面,本发明实施例还提供了一种区块链数据的处理装置,配置于区块链节点中,该装置包括:
分链请求生成模块,用于若检测到当前区块链满足分链条件,则生成区块链分链请求;
分链请求发送模块,用于向所述区块链网络发送所述区块链分链请求,由区块链网络中的区块生成节点执行如下操作:响应所述区块链分链请求,根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链发送至证明节点,对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且所述子区块链作为当前区块链;
接收存储模块,用于接收并存储所述区块生成节点发送的母链。
第五方面,本发明实施例还提供了一种设备,该设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现第一方面或第二方面任一所述的区块链数据的处理方法。
第六方面,本发明实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面或第二方面任一所述的区块链数据的处理方法。
本发明实施例的技术方案,通过响应于区块链网络中证明节点发送的区块链分链请求,对当前区块链进行子母分链,并将分链后的母链存储在证明节点中,通过对母链的数据进行处理构建子区块链的创世块,并将该子区块链作为新的当前区块链。能够降低区块链网络的数据存储空间,进而提高各节点进行数据同步以及数据查询的效率。
附图说明
图1A是本发明实施例一提供的一种区块链数据的处理方法的流程图;
图1B是本发明实施例一提供的对当前区块链进行子母分链操作的示意图;
图2A是本发明实施例二提供的一种区块链数据的处理方法的流程图;
图2B是本发明实施例二提供的对当前区块链进行数据查询操作的示意图;
图3是本发明实施例三提供的一种区块链数据的处理方法的流程图;
图4是本发明实施例四提供的一种区块链数据的处理方法的流程图;
图5是本发明实施例五提供的一种区块链数据的处理装置的结构示意图;
图6是本发明实施例六提供的一种区块链数据的处理装置的结构示意图;
图7本发明实施例七提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1A为本发明实施例一提供的一种区块链数据的处理方法的流程图,图1B为本发明实施例一提供的对当前区块链进行子母分链操作的示意图,本实施例可适用于对区块链数据进行子母分链存储的情况,例如,可以是对存储有金融交易数据的区块链的数据进行子母分链存储的情况。该方法可以由本发明实施例提供的配置在区块链节点上的区块链数据的处理装置来执行,例如,该方法可以由本发明实施例提供的配置在区块链的区块生成节点上的区块链数据的处理装置来执行。该装置可采用硬件和/或软件的方式实现。需要说明的是,本发明实施例中的区块生成节点,可以是区块链网络中的各节点在接收到区块链分链请求后,基于工作量证明机制(POW),从各节点中选出的用来执行子母分链操作的节点。其中,工作量证明机制可以是基于各节点的算力、硬件能力及网络质量等证明因素来选择当前区块生成节点。
如图1A所示,具体包括如下步骤:
S101,响应于区块链网络中证明节点发送的区块链分链请求,区块链分链请求是证明节点在检测到当前区块链满足分链条件时生成的。
其中,区块链网络中的证明节点可以是区块链网络中的各节点基于股权证明机制(POS),从各节点中选中出的用来执行生成分链请求、存储分链后母链,以及进行查询验证等功能的节点。其中,股权证明机制可以是基于各节点的经济实力、硬件能力、稳定性及权威性等证明因素,从区块链系统包含的各节点中选择至少一个证明节点。
可选的,区块链分链请求可以是,证明节点基于预设的分链条件对当前区块链进行检测,若检测到当前区块链满足预设的分链条件时,生成区块链分链请求。其中,区块链分链请求可以仅为一个指示分链的消息请求,如证明节点生成区块链分链请求可以是生成一个任务消息事务请求,该任务消息指示对当前区块链进行子母分链操作,并不包含具体分链的相关要求等。区块链分链请求也可以是包含当前区块链执行具体分链操作的相关要求,如分链位置、执行分链操作的时间等。证明节点将执行具体分链操作的相关要求和请求的任务消息进行处理(如可以是加密处理)后生成区块链分链请求。可选的,分链条件可以是预先设置好的用来判断当前区块链是否达到分链的评判标准,例如,可以是区块链的区块个数达到一定数量,和/或区块链中各区块存储数据达到一定大小等。可选的,本发明实施例中的分链条件可以是固定的,也可以是根据子母分链的次数的变化而调整,例如,随着子母分链次数的增加,分链满足的区块数量可以逐渐的减少等。
可选的,本发明实施例中,证明节点检测当前区块链满足分链条件的方式有很多,对此,本发明实施例不进行限定。如可以是实时或定时对当前区块链的个数和/或各区块中存储的数据数量等进行检测,来判断是否满足分链条件;还可以是采用预先训练好的神经网络模型,将当前区块链的实时状态数据(如区块链中区块的个数、每个区块中存储数据量等)输入训练好的神经网络模型中,该神经网络模型基于训练时的样本数据以及大量的训练算法,来判断当前区块链是否满足分链条件,若满足,则触发执行生成区块链分链请求。
可选的,若证明节点中存储有当前区块链,则可以是证明节点通过检测自己存储的当前区块链是否满足分链条件,若满足,则生成区块链分链请求。若证明节点中不存储有当前区块链,则可以是证明节点通过检测区块链中其他存储有当前区块链的节点存储的当前区块链是否满足分链条件,若满足,则生成区块链分链请求。可选的,可以是在检测到有一定数量或一定比例的其他节点中存储的当前区块链都满足分链条件时,则触发生成区块链分链请求。
示例性的,当证明区块检测到当前区块链满足分链条件时,生成区块链分链请求,发送至区块链网络,区块链网络中的各节点基于工作量证明机制从各节点中选出用来执行该区块链分链请求的当前区块生成节点。该当前区块生成节点接收该区块链分链请求。
S102,根据分链规则,对当前区块链进行子母分链,并将分链后的母链存储在证明节点中。
其中,分链规则可以是在构建区块链网络时就已经约定好的对区块链网络进行分链的详细执行方法,例如,可以包括分链位置的确定方法、将区块链断开后的相关操作等。可选的,为了保证区块链分链规则公开性、统一性以及不可篡改的特征,可以将分链规则存储在智能合约中,如可以是以智能合约的形式存储在区块链的创世块中。也可以是以智能合约的形式存储在区块链的普通存储区块中等;为了节省区块链的存储空间,分链规则也可以独立于区块链,存储在节点本地。对此本发明实施例不进行限定。
可选的,在本发明实施例中,根据分链规则,对当前区块链进行子母分链,并将分链后的母链存储在证明节点中的具体过程可以包括:
A、根据分链规则,确定当前区块链的分链位置。
具体的,根据分链规则,确定当前区块链的分链位置,可以是分链规则规定了分链位置的确定方法,例如,若分链规则中规定将当前区块链中第5个区块和第6个区块之间的位置作为分链位置,如图1B所示,根据该分链规则,可以确定当前区块链10的分链位置为区块5和区块6之间。也可以是分链规则中记录有分链条件,通过分链条件对当前区块链进行判断,从而确定当前区块链的分链位置。
可选的,确定当前区块链的分链位置,不仅可以根据分链规则确定,还可以采用其他方式确定,对此本发明实施例不进行限定。例如,可以是证明节点发送的区块链分链请求中包含具体的分链位置,此时可以直接从区块链分链请求中获取本次进行子母分链的分链位置。
需要说明的是,由于证明节点在检测到需要进行子母分链的时候就会向区块链网络发送分链请求,因此,通常情况下,当前区块链的分链位置为该区块链的最后一个区块之后。若证明节点在检测到需要进行子母分链时,区块链网络中存在正在处理或等待处理的事务请求,则可以是等该正在处理的事务请求以及未处理的事务请求都处理完成后再发送分链请求,此时当前区块链的分链位置就不是当前区块的最后一个区块之后,需要进一步来根据分链规则来确定具体的分链位置。
B、将当前区块链从分链位置处断开。
示例性的,对当前区块链进行子母分链就是将当前区块链从分链位置处断开,若当前区块链的分链位置为当前区块链的最后一个区块之后,则将该区块链从此断开,其后再生成的区块不再链接在当前区块链的最后一个区块之后。若当前区块链的分链位置为当前区块链的两区块间的位置,如图1B所示,当前区块链10的分链位置在区块5和区块6之间,则将当前区块链10从如图所示的分链位置处(即区块5和区块6之间)断开。
C、将当前区块链的起始位置与分链位置之间的区块链作为母链存储在证明节点中。
其中,当前区块链的起始位置为当前区块链的第一个区块的位置,如图1B中当前区块链10的起始位置为区块1所在位置。
示例性的,将当前区块链从分链位置分开后,要确定本次分链的母链和子链。可以将当前区块链的起始位置处与分链位置处之间的区块链作为母链,例如,如图1B所示,将当前区块链10的起始位置处(即区块1处)与分链位置处之间的区块链(即区块1至区块5组成的区块链)作为母链11。可选的,为了保证区块链数据的安全性,可以将母链存储在通过股权证明机制确定的各证明节点中。其他节点要使用母链中的数据时,只能从证明节点中下载数据,不可以同步修改证明节点中存储的数据。可选的,区块链网络中的证明节点可以有多个,可以同时将分链得到的母链同时存储在各证明节点中。
S103,对母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且将子区块链作为新的当前区块链。
其中,创世块可以是构建的区块链的第一个区块。如图1B所示,子区块链12的创世块为子区块链12中的区块1。
示例性的,S102对当前区块链进行了子母分链,并将母链存储到证明节点,此时要根据母链中的数据构建子区块链,以便于通过构建的子区块链可以查找到与其对应的母链,便于后续通过构建的子链来查找其对应母链的数据。可选的,对母链中的各区块的数据进行处理的方式有很多,例如,可以是对各区块的存储数据进行加密处理,得到母链中的数据对应的加密数据码;也可以是对各区块的区块标识进行加密处理,得到母链中的数据对应的加密数据码;还可以是采用其他数据处理方式,得到母链中的数据对应的加密数据码,对此本发明实施例不进行限定。
具体的,对母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,可以包括如下两个步骤:
A、获取母链中各区块的数据,采用预设加密算法生成加密数据码。
示例性的,获取母链中每一个区块中存储的事务数据,采用哈希散列映射算法,将母链中存储的所有事务数据映射成预设字节数(如256位)的加密数据码。需要说明的是,本发明实施例中生成加密数据码的预设加密算法有很多,并不仅限于上述的哈希散列映射算法,还可以使用其他可对数据进行加密的算法。
B、根据加密数据码构建子区块链的创世块。
示例性的,构建子区块链的创世块,将步骤A中生成的加密数据码存储在创世块中,可以通过该创世块查找到存储的加密数据码对应的母链,即构建的子区块链对应的母链。
可选的,进行子母分链后的构建的子区块链为新的当前区块链,对于处理后续事务请求生成的区块可以链接在新的当前区块链中。因此,在执行完S101-S103对当前区块链完成子母分链操作,生成新的当前区块链之后,若接收到包含待存储数据的链上数据存储请求,则处理包含待存储数据的链上数据存储请求,并将处理结果存储在新的当前区块链(即S103中构建的子区块链)的第二区块中,其中,第二区块链接在第一区块之后。例如,如图1B所示,若对当前区块链10进行子母分链得到母链11存储在证明节点中,并构建子区块链12后,将子区块链12作为新的当前区块,若此时区块链网络接收到包含带存储数据的链上数据存储请求,则可以是由当前区块生成节点来处理该链上数据存储请求,并将处理结果存储在构建的子区块链12的区块2中。
可选的,现有的区块链的区块头中通常包含有区块的哈希地址、梅克尔树树的根、区块创建时间戳等,然而,现有的梅克尔树指示为了验证所有区块的数据而设立的,在查询区块的具体内容上速度不够快。对此,本发明实施例可以在区块链的各区块的区块头中添加辅助索引树,该辅助索引树可以是仿照MySQL数据库中的索引的概念构建的,在对区块链中各区块的数据进行查询时,可以是基于区块头中存储的辅助索引树进行数据的查询,进而提高数据查询效率。
需要说明的是,本发明实施例生成新的当前区块链之后,证明节点会继续对构建的子区块链,即新的当前区块链进行检测,判断其是否满足分链条件,若满足,则会再次向区块链网络发送区块链的分链请求,以使当前区块链中的各节点基于工作量证明机制确定当前区块生成节点再次执行S101-S103的操作在对新的当前区块链再次执行分链操作。由于当前区块链中大量的数据已经通过母链保存在证明节点中,当前区块链只在创世块中存储有该区块链对应的母链的加密数据码,进而保证了区块链网络中的其他节点在同步当前区块链的存储数据时,缩短了同步耗时,且通过加密数据码来对应母链中存储的大量数据,也极大的节约了当前区块链的存储空间。
需要说明的是,区块链网络中的区块生成节点处理完S101-S103对当前区块链进行分链操作,并生成新的当前区块链之后,区块链的其他节点也同步区块链生成节点的分链操作,完成当前区块链的分链操作,并形成新的当前区块链,新的当前区块链的创世块中存储有其对应的母链数据生成的加密数据码。
本实施例提供的区块链数据的处理方法,通过响应于区块链网络中证明节点发送的区块链分链请求,对当前区块链进行子母分链,并将分链后的母链存储在证明节点中,通过对母链的数据进行处理构建子区块链的创世块,并将该子区块链作为新的当前区块链。能够降低区块链网络的数据存储空间,进而提高各节点进行数据同步以及数据查询的效率。
进一步的,若S102对当前区块链进行子母分链时,当前区块链的分链位置之后还存在已链接的区块,如图1B所示,当前区块链10中分链位置之后还存在已链接的区块6。此时在执行完S103对母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块之后,还包括:若当前区块链的分链位置之后存在已链接区块,则将已链接区块依次链接在子区块链的创世块后,并修改已链接区块的区块头。例如,对母链中各区块的数据进行处理,将处理后的数据存储在构建的子区块链12的创世块(即区块1)之后,该子区块链12即为新的当前区块链,此时需要将上一当前区块链10中分链位置之后的已链接的区块6链接在子区块链12的区块1之后(即子区块链12的区块链2的位置),由于区块链中各区块的区块头中存储有前一区块的相关数据,因此,在将上一当前区块链10中的区块链6链接在子区块链12的区块2的位置后,还需要修改原区块6的区块头数据,进而得到区块链12的区块2。能够很好的避免因分链操作造成的数据丢失的情况发生,提高了区块链数据存储的准确性和安全性。
实施例二
图2A为本发明实施例二提供的一种区块链数据的处理方法的流程图,图2B为本发明实施例二提供的对当前区块链进行数据查询操作的示意图。该方法可以由区块链节点执行,本实施例在上述实施例的基础上,进行了进一步的优化,具体给出在对区块链数据进行子母分链存储后,对查询存储数据的具体情况介绍。例如,可以是对区块链中存储的金融交易数据进行子母分链存储后,对存储的金融交易数据进行查询的具体情况介绍。结合图2B对图2A所述的方法进行介绍,该方法具体包括:
S201,响应于区块链网络中证明节点发送的区块链分链请求,区块链分链请求是证明节点在检测到当前区块链满足分链条件时生成的。
S202,根据分链规则,对当前区块链进行子母分链,并将分链后的母链存储在证明节点中。
S203,对母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且将子区块链作为新的当前区块链。
S204,接收链上数据查询请求;链上数据查询请求为数据需求方节点根据查询需求生成的。
其中,链上数据查询请求可以是数据需求方节点根据其本次的查询需求生成的包含查询需求的数据查询请求。数据需求方节点可以是区块链网络中的任一节点,也可以是通过网页、平台或应用程序等可参与到区块链中的节点。数据需求方(如人才招聘网站、金融服务公司、业务推销员等等)可以通过该节点请求查询所需的数据。
可选的,当数据需求方节点向区块链网络发送链上数据查询请求后,区块链中的各节点会基于工作量证明机制选出当前区块生成节点(即处理本次数据查询请求的节点),由当前区块生成节点来接收该数据查询请求。
S205,根据链上数据查询请求和当前区块链,生成区块链验证请求,发送至证明节点,以请求证明节点依据当前区块链的创世块中存储的加密数据码,对当前区块链进行准确性验证。
示例性的,由于当前区块生成节点中只存储由当前区块链的数据(即子母链分后创建的子区块链的数据),需要通过证明节点获取对应的母链数据,此时当前区块生成节点在接收到链上数据查询请求后,要先向证明节点发送验证请求,以使证明节点来验证当前区块生成节点中存储的当前区块链的数据是否正确,只有存储数据正确的情况下,才会向当前区块生成节点提供查询母链数据。
具体的,当前区块生成节点可以根据接收到的链上数据查询请求和其存储的当前区块链,生成区块链验证请求发送至证明节点,证明节点在接收到区块链验证请求后,可以从区块链验证请求中获取当前区块生成节点中存储的当前区块链的第一个区块中存储的加密数据码,验证该加密数据码是否与其中存储的某一个母链的生成的加密数据码一致,若一致,则说明当前区块生成节点中存储的当前区块链准确,否则,说明当前区块生成节点中存储的当前区块链数据发生了篡改。证明节点会将其验证结果以反馈消息的形式发送给当前区块生成节点。
S206,判断是否接收到证明节点反馈的验证成功消息,若是,执行S208,否则,执行S207。
示例性的,当前区块生成节点若接收到证明节点反馈的验证成功消息,则执行S208,继续执行链上数据查询操作;若接收到证明节点反馈的验证失败消息,则执行S207,停止本次数据查询,执行对当前区块链数据的同步操作。
S207,停止本次数据查询,执行对当前区块链数据的同步操作。
示例性的,若接收到证明节点反馈的验证失败消息,则说明当前区块生成节点中存储的当前区块链中的数据被篡改,证明节点不会向其提供母链数据的查询,此时当前区块生成节点需要停止本次数据查询。为了保证区块链网络内各节点存储数据的准确性,同时当前区块生成节点还要基于区块链网络中其他节点存储的当前区块链,对其存储的当前区块链进行同步。
可选的,可以是当前区块生成节点执行完对当前区块链数据的同步操作后,重新生成区块链验证请求,发送至证明节点进行验证,验证成功后再执行S208;也可以是区块链网络从新确定一个新的区块当前生成节点,由新确定的区块生成节点重新执行S205根据链上数据查询请求和当前区块链,生成区块链验证请求,发送至证明节点,若重新生成的区块生成节点中存储的当前区块链验证成功,则由新生成的区块生成节点执行S208进行数据的查询操作。
S208,根据查询规则和链上数据查询请求中的查询需求,从当前区块链和证明节点中存储的各母链中查找与查询需求匹配的数据作为查询结果反馈给数据需求方节点。
其中,查询规则可以是在构建区块链网络时就已经约定好的对区块链中存储的数据进行查询操作时的详细执行方法,例如,可以包括查询数据时的查询顺序、针对区块链中的每一个区块进行数据查询的方法等。可选的,为了保证区块链数据查询规则公开性、统一性以及不可篡改的特征,可以将查询规则存储在智能合约中,如可以是以智能合约的形式存储在区块链的创世块中。也可以是以智能合约的形式存储在区块链的普通存储区块中等;为了节省区块链的存储空间,查询规则也可以独立于区块链,存储在节点本地。对此本发明实施例不进行限定。
可选的,由于本发明实施例中,区块链中的每一个区块的区块头中都存储有辅助索引树,因此,在对区块链中的各区块进行数据查询时,可以是针对每一个区块,根据查询需求和该区块中存储的辅助索引树,采用索引查找方式,在该区块的数据中查找与所述查询需求匹配的数据。
具体的,可以是根据查询需求先在该区块的辅助索引树中进行快速查找,若存在查询需求对应的数据,再基于辅助索引树直接访问查询需求对应的数据位置,若不存在查询需求对应的数据,无需再对该区块存储的具体数据一一进行查找,提高了查找速率。可选的,该辅助索引树可以是仿照MySQL数据库中的索引的概念创建的,其使用方法也与MySQL数据库中的索引方法类似。
可选的,在本发明实施例中,查询区块链中各节点是否存有查询需求对应的数据时,不但要查找当前区块链,还要查找其进行子母分链时对应的母链,而其母连可能也是通过子母分链得到的,所以要逐层查完对应的所有母链中存储的数据。
如图2B所示,区块链24为当前区块链,其中包含有区块1到区块3,区块1为创世块其中存储有当前区块链24对应的三级母链23中各区块的数据对应的加密数据码;三级母链23中包含区块1到区块4,区块1为创世块其中存储有二级母链22中各区块的数据对应的加密数据码;二级母链22中包含区块1到区块5,区块1为创世块其中存储有一级母链21中各区块的数据对应的加密数据码;一级母链21中包含区块1到区块5,该一级母链21为当前区块链对应的最初存储的事务数据。对如图2B所示的区块链进行数据查询操作,具体可包括如下步骤:
A、将当前区块链作为当前查询链。
B、依次访问所述当前查询链中各区块的数据,查找与所述查询需求匹配的数据作为一次查询结果;
C、如果所述当前查询链的创世块中包含加密数据码,则从证明节点中获取所述加密数据码对应的母链,作为当前查询链,返回执行针对当前查询链进行数据查询的操作;
D、如果所述当前查询链的创世块中不包含加密数据码,则查询结束,将各次查询结果进行汇总后作为查询结果反馈给所述数据需求方节点。
示例性的,如图2B所示,将当前区块链24作为第一个查询链,即当前查询链,依次遍历当前区块链24的区块3至区块1中的数据,对于区块3和区块2根据查询需求和各区块中存储的辅助索引树,采用索引查找方式,在各区块的数据中查找与查询需求匹配的数据作为一次查询结果。由于当前区块链24的区块1(即创世块)中存储有加密数据码,则从证明节点中获取该加密验证码对应的三级母链23,并将该三级母链23作为当前查询链,依次遍历三级母链23的区块4至区块1,对于区块4至区块2根据查询需求和各区块中存储的辅助索引树,采用索引查找方式,在各区块的数据中查找与查询需求匹配的数据作为一次查询结果。由于三级母链23的区块1(即创世块)中存储有加密数据码,则从证明节点中获取该加密验证码对应的二级母链22,并将该二级母链22作为当前查询链,依次遍历二级母链22的区块5至区块1,对于区块5至区块2根据查询需求和各区块中存储的辅助索引树,采用索引查找方式,在各区块的数据中查找与查询需求匹配的数据作为一次查询结果。由于二级母链22的区块1(即创世块)中存储有加密数据码,则从证明节点中获取该加密验证码对应的一级母链21,依次遍历一级母链21的区块5至区块1,根据查询需求和各区块中存储的辅助索引树,采用索引查找方式,在各区块的数据中查找与查询需求匹配的数据作为一次查询结果。由于一级母链21的区块1中不包含加密数据码,则本次数据查询结束,将上述四次查询结果进行汇总作为最终的查询结果,反馈给数据需求方节点。
本实施例提供的区块链数据的处理方法,响应于区块链网络中证明节点发送的区块链分链请求,对当前区块链进行子母分链,并将分链后的母链存储在证明节点中,根据母链的数据建子区块链的创世块,并将该子区块链作为新的当前区块链;在接收到链上数据查询请求后,由证明节点对区块生成节点中存储的区块链的准确性进行验证后,再由区块生成节点基于当前区块链和证明节点中存储的各母链,根据查询需求和各区块中存储的辅助索引树查找满足查询需求的数据作为查询结果反馈给数据需求方节点。能够在降低区块链网络的数据存储空间的同时,提高各节点进行数据同步,采用辅助搜索引树的方式进行数据查询,进一步的提高了数据查询的效率。
实施例三
图3为本发明实施例三提供的一种区块链数据的处理方法的流程图。该方法可适用于生成并发送分链请求,以及对数据查询的当前区块链进行验证的情况,该方法可以由本发明实施例提供的配置在区块链节点上的区块链数据处理装置来执行,例如,可以由配置在区块链的证明节点上的区块链数据的处理装置来执行。该装置可采用软件和/或硬件的方式实现。需要说明的是,本发明实施例中的证明节点可以是区块链网络中的各节点基于股权证明机制(POS),从各节点中选中出的用来执行生成分链请求、存储分链后母链,以及进行查询验证等功能的节点。其中,股权证明机制可以是基于各节点的经济实力、硬件能力、稳定性及权威性等证明因素,从区块链系统包含的各节点中选择至少一个证明节点。
如图3所示,具体包括如下步骤:
S301,若检测到当前区块链满足分链条件,则生成区块链分链请求。
其中,区块链分链请求可以是,证明节点基于预设的分链条件对当前区块链进行检测,若检测到当前区块链满足预设的分链条件时,生成区块链分链请求。其中,区块链分链请求可以仅为一个指示分链的消息请求,如证明节点生成区块链分链请求可以是生成一个任务消息事务请求,该任务消息指示对当前区块链进行子母分链操作,并不包含具体分链的相关要求等。区块链分链请求也可以是包含当前区块链执行具体分链操作的相关要求,如分链位置、执行分链操作的时间等。证明节点将执行具体分链操作的相关要求和请求的任务消息进行处理(如可以是加密处理)后生成区块链分链请求。可选的,分链条件可以是预先设置好的用来判断当前区块链是否达到分链的评判标准,例如,可以时区块链的区块个数达到一定数量,和/或区块链中各区块存储数据达到一定大小等。可选的,本发明实施例中的分链条件可以是固定的,也可以是根据子母分链的次数的变化而调整,例如,随着子母分链次数的增加,分链满足的区块数量可以逐渐的减少等。
可选的,本发明实施例中,证明节点检测当前区块链满足分链条件的方式有很多,对此,本发明实施例不进行限定。如可以是实时或定时对当前区块链的个数和/或各区块中存储的数据数量等进行检测,来判断是否满足分链条件;还可以是采用预先训练好的神经网络模型,将当前区块链的实时状态数据(如区块链中区块的个数、每个区块中存储数据量等)输入训练好的神经网络模型中,该神经网络模型基于训练时的样本数据以及大量的训练算法,来判断当前区块链是否满足分链条件,若满足,则触发执行生成区块链分链请求。
可选的,若证明节点中存储有当前区块链,则可以是证明节点通过检测自己存储的当前区块链是否满足分链条件,若满足,则生成区块链分链请求。若证明节点中不存储有当前区块链,则可以是证明节点通过检测区块链中其他存储有当前区块链的节点存储的当前区块链是否满足分链条件,若满足,则生成区块链分链请求。可选的,可以是在检测到有一定数量或一定比例的其他节点中存储的当前区块链都满足分链条件时,则触发生成区块链分链请求。
S302,向区块链网络发送所述区块链分链请求,由区块链网络中的区块生成节点执行如下操作:响应区块链分链请求,根据分链规则,对当前区块链进行子母分链,并将分链后的母链发送至证明节点,对母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且子区块链作为当前区块链。
示例性的,当证明区块检测到当前区块链满足分链条件时,生成区块链分链请求,发送至区块链网络,区块链网络中的各节点基于工作量证明机制从各节点中选出用来执行该区块链分链请求的当前区块生成节点。该当前区块生成节点接收该区块链分链请求,并对当前区块链执行子母分链操作,具体包括:
根据分链规则,确定当前区块链的分链位置;将所述当前区块链从所述分链位置处断开,并将所述当前区块链的起始位置与分链位置之间的区块链发送至证明节点,并获取母链中各区块的数据,采用预设加密算法生成加密数据码;根据所述加密数据码构建子区块链的创世块,且将构建的子区块链作为当前区块链。
S303,接收并存储区块生成节点发送的母链。
示例性的,证明节点接收当前区块生成节点分链后发送的母链,并将其进行存储。由于本发明实施例中的证明节点是通过股权证明机制确定的权威性高的若干节点,通过证明节点进行母链的数据存储,降低当前区块链的存储数量的同时能够保证数据的安全性。
S304,响应于区块链网络中区块生成节点发送的区块链验证请求,区块链验证请求是区块生成节点根据链上数据查询请求和当前区块链生成的。
其中,区块生成节点可以是区块链网络中执行数据查询的节点,可以是由区块链中的各节点基于某一共识机制(如工作量证明机制或股权证明机制)选出的执行本次数据查询的节点。区块链验证请求可以是执行数据查询操作的区块生成节点根据其接收到的链上数据查询请求和其存储的当前区块生成的验证请求。该区块验证请求用于验证区块生成节点中存储的当前区块链的数据是否正确,只有存储数据正确的情况下,区块生成节点才可继续执行数据的查询操作。
可选的,由于进行数据查询时所需的母链数据存储在证明节点中,且证明节点是区块链中的各节点基于股权证明机制确定的权威性较高的节点,因此,本实施例中由区块证明节点来响应该区块链验证请求。
S305,依据当前区块链的创世块中存储的加密数据码,对当前区块链进行准确性验证,并向区块生成节点反馈验证结果,以使区块生成节点在接收到区块链验证成功消息后,执行数据查询操作。
示例性的,由于当前区块链的创世块中存储有其对应的母链数据生成的加密数据码,因此证明节点可以基于该加密数据码来验证其创世节点中存储的数据是否正确,并向区块生成节点反馈验证结果。可选的,对当前区块链进行准确性验证的过程可以是,将创世块中存储的加密数据与证明节点中存储的各母链数据对应的加密数据进行比对,查看各母链数据对应的加密数据中是否存在与创世块中的加密数据一致的数据,若存在,则说明创世块中存储的数据在证明节点中有对应的母链,可以为其提供母链数据的查找。
可选的,在本发明实施例中,对当前区块链进行准确性验证,不但可以包括对创世块进行验证,还可以包括对当前区块链的其他区块数据进行验证,具体的,若证明节点中存储有当前区块链,可以是由证明节点基于其中存储的当前区块链,来对区块生成节点发送的当前区块链的除创世块之外的其他区块进行验证;若证明节点中不存储由当前区块链,可以是由区块链网络中的其他存储有当前区块链的各节点,基于某一共识机制(如工作量证明机制或股权证明机制)从各节点中确定验证节点,并由确定的验证节点来对区块生成节点发送的当前区块链的除创世块之外的其他区块进行验证。
可选的,由于本发明实施例中根节股权证明机制确定的证明节点的个数为至少一个,当证明节点的个数为多个时,可以是所有的证明节点都执行依据当前区块链的创世块中存储的加密数据码,对当前区块链进行准确性验证操作,并对所有的证明节点的验证结果进行分析,选择验证结果中占比较大的验证结果作为最终的验证结果,反馈给区块生成节点,以使区块生成节点在接收到区块链验证成功消息后,执行后续操作。例如,若证明节点的个数为10中,在10个验证结果中有8个为验证成功,2个为验证失败,则将占比较大的验证成功作为最终的验证结果,反馈给区块生成节点。
本实施例提供的区块链数据的处理方法,在检测到当前区块链满足分链条件时,生成区块链分链请求,发送至区块链网络,由区块生成节点根据该分链请求执行当前区块链的子母分链操作,并保存子母分链后的母链;在接收到区块生成节点发送的区块链验证请求时,根据当前区块链的创世块中存储的加密数据码对当前区块链进行准确性验证,在验证成功的前提下,区块生成节点才可以继续进行数据查询操作。能够仅通过证明节点存储母链,极大节约区块链网络的存储空间,且在进行数据查询时,基于证明节点进行当前区块链的验证,避免了证明节点中的数据被恶意泄漏的情况发生,提高了数据查询的安全性和可靠性。
实施例四
图4为本发明实施例四提供的一种区块链数据的处理方法的流程图,本实施例在上述各实施例的基础上,提供了一个优选施例。该方法由区块链的区块生成节点和证明节点交互执行。如图4所示,具体包括如下步骤:
S401,证明节点若检测到当前区块链满足分链条件,则生成区块链分链请求。
S402,证明节点向区块链网络发送区块链分链请求。
S403,区块生成节点响应于区块链网络中证明节点发送的区块链分链请求。
S404,区块生成节点根据分链规则,对当前区块链进行子母分链,并将分链后的母链发送至证明节点。
S405,证明节点接收并存储区块生成节点发送的母链。
S406,区块生成节点接收链上数据查询请求;链上数据查询请求为数据需求方节点根据查询需求生成的。
S407,区块生成节点根据链上数据查询请求和当前区块链,生成区块链验证请求,发送至证明节点。
S408,证明节点响应于区块链网络中区块生成节点发送的区块链验证请求。
S409,证明节点依据当前区块链的创世块中存储的加密数据码,对当前区块链进行准确性验证,并向区块生成节点反馈验证结果。
S410,区块生成节点如果接收到证明节点反馈的验证成功消息,则根据查询规则和链上数据查询请求中的查询需求,从当前区块链和证明节点中存储的各母链中查找与查询需求匹配的数据作为查询结果反馈给数据需求方节点。
本发明实施例提供的区块链数据的处理方法,通过区块网络的区块生成节点和证明节点进行交互,完成数据分链存储以及数据查询的过程,在保证数据安全性的同时,极大的降低了区块链网络数据的存储空间,提高各节点进行数据同步以及数据查询的效率。
实施例五
图5为本发明实施例五提供的一种区块链数据的处理装置的结构框图,该装置可配置于区块链节点中,例如,可配置在区块链的区块生成节点中。该装置可执行本发明实施例一到实施例二以及实施例四所提供的区块链数据的处理方法,具备执行方法相应的功能模块和有益效果。如图5所示,该装置可以包括:
分链请求响应模块501,用于响应于区块链网络中证明节点发送的区块链分链请求,所述区块链分链请求是所述证明节点在检测到当前区块链满足分链条件时生成的;
分链处理模块502,用于根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链存储在所述证明节点中;
子链构建模块503,用于对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且将所述子区块链作为新的当前区块链。
本实施例提供的区块链数据的处理装置,通过响应于区块链网络中证明节点发送的区块链分链请求,对当前区块链进行子母分链,并将分链后的母链存储在证明节点中,通过对母链的数据进行处理构建子区块链的创世块,并将该子区块链作为新的当前区块链。能够降低区块链网络的数据存储空间,进而提高各节点进行数据同步以及数据查询的效率。
进一步的,上述分链处理模块502具体用于:
根据分链规则,确定当前区块链的分链位置;
将所述当前区块链从所述分链位置处断开,并将所述当前区块链的起始位置与分链位置之间的区块链作为母链存储在证明节点中。
进一步的,上述装置还包括:
链接修改模块,用于若所述当前区块链的分链位置之后存在已链接区块,则将所述已链接区块依次链接在所述子区块链的创世块后,并修改所述已链接区块的区块头。
进一步的,上述子链构建模块503在对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块时,具体用于:
获取母链中各区块的数据,采用预设加密算法生成加密数据码;
根据所述加密数据码构建子区块链的创世块。
进一步的,上述装置还包括:
查询请求接收模块,用于接收链上数据查询请求;所述链上数据查询请求为数据需求方节点根据查询需求生成的;
查询反馈模块,用于根据查询规则和所述链上数据查询请求中的查询需求,从当前区块链和证明节点中存储的各母链中查找与所述查询需求匹配的数据作为查询结果反馈给所述数据需求方节点。
进一步的,上述查询反馈模块在从当前区块链和证明节点中存储的各母链中查找与所述查询需求匹配的数据时,具体用于:
针对每一个区块,根据查询需求和该区块中存储的辅助索引树,采用索引查找方式,在该区块的数据中查找与所述查询需求匹配的数据。
进一步的,上述查询反馈具体用于:
将当前区块链作为当前查询链;
依次访问所述当前查询链中各区块的数据,查找与所述查询需求匹配的数据作为一次查询结果;
如果所述当前查询链的创世块中包含加密数据码,则从证明节点中获取所述加密数据码对应的母链,作为当前查询链,返回执行针对当前查询链进行数据查询的操作;
如果所述当前查询链的创世块中不包含加密数据码,则查询结束,将各次查询结果进行汇总后作为查询结果反馈给所述数据需求方节点。
进一步的,上述装置还包括:
请求生成发送模块,用于根据所述链上数据查询请求和当前区块链,生成区块链验证请求,发送至证明节点,以请求所述证明节点依据当前区块链的创世块中存储的加密数据码,对当前区块链进行准确性验证。
上述查询反馈模块还用于:
如果接收到所述证明节点反馈的验证成功消息,则执行数据查询操作。
实施例六
图6为本发明实施例六提供的一种区块链数据的处理装置的结构框图,该装置可配置于区块链节点中,例如,可配置在区块链的证明节点中。该装置可执行本发明任意实施例三到实施例四所提供的区块链数据的处理方法,具备执行方法相应的功能模块和有益效果。如图6所示,该装置可以包括:
分链请求生成模块601,用于若检测到当前区块链满足分链条件,则生成区块链分链请求;
分链请求发送模块602,用于向所述区块链网络发送所述区块链分链请求,由区块链网络中的区块生成节点执行如下操作:响应所述区块链分链请求,根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链发送至证明节点,对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且所述子区块链作为当前区块链;
接收存储模块603,用于接收并存储所述区块生成节点发送的母链。
本实施例提供的区块链数据的处理装置,在检测到当前区块链满足分链条件时,生成区块链分链请求,发送至区块链网络,由区块生成节点根据该分链请求执行当前区块链的子母分链操作,并保存子母分链后的母链;在接收到区块生成节点发送的区块链验证请求时,根据当前区块链的创世块中存储的加密数据码对当前区块链进行准确性验证,在验证成功的前提下,区块生成节点才可以继续进行数据查询操作。能够仅通过证明节点存储母链,极大节约区块链网络的存储空间,且在进行数据查询时,基于证明节点进行当前区块链的验证,避免了证明节点中的数据被恶意泄漏的情况发生,提高了数据查询的安全性和可靠性。
进一步的,上述装置还包括:
验证请求响应模块,用于响应于区块链网络中区块生成节点发送的区块链验证请求,所述区块链验证请求是区块生成节点根据链上数据查询请求和当前区块链生成的;
验证反馈模块,用于依据当前区块链的创世块中存储的加密数据码,对当前区块链进行准确性验证,并向区块生成节点反馈验证结果,以使所述区块生成节点在接收到区块链验证成功消息后,执行数据查询操作。
实施例七
图7为本发明实施例六提供的一种设备的结构示意图。图7示出了适于用来实现本发明实施方式的示例性设备70的框图。图7显示的设备70仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。其可以是客户端,也可以是区块链节点。如图7所示,该设备70以通用计算设备的形式表现。该设备70的组件可以包括但不限于:一个或者多个处理器或者处理单元701,系统存储器702,连接不同系统组件(包括系统存储器702和处理单元701)的总线703。
总线703表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备70典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备70访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器702可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)704和/或高速缓存存储器705。设备70可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统706可以用于读写不可移动的、非易失性磁介质(图7未显示,通常称为“硬盘驱动器”)。尽管图7中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线703相连。系统存储器702可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块707的程序/实用工具708,可以存储在例如系统存储器702中,这样的程序模块707包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块707通常执行本发明所描述的实施例中的功能和/或方法。
设备70也可以与一个或多个外部设备709(例如键盘、指向设备、显示器710等)通信,还可与一个或者多个使得用户能与该设备交互的设备通信,和/或与使得该设备70能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口711进行。并且,设备70还可以通过网络适配器712与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图7所示,网络适配器712通过总线703与设备70的其它模块通信。应当明白,尽管图中未示出,可以结合设备70使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元701通过运行存储在系统存储器702中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的区块链数据的处理方法。
实施例八
本发明实施例八还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现上述实施例所述的区块链数据的处理方法。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于:电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上述实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员应该明白,上述的本发明实施例的各模块或各操作可以用通用的计算装置来实现,它们可以集中在单个计算装置上,或者分布在多个计算装置所组成的网络上,可选地,他们可以用计算机装置可执行的程序代码来实现,从而可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或操作制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件的结合。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间的相同或相似的部分互相参见即可。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域技术人员而言,本发明可以有各种改动和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (13)
1.一种区块链数据的处理方法,其特征在于,由区块链节点执行,所述方法包括:
响应于区块链网络中证明节点发送的区块链分链请求,所述区块链分链请求是所述证明节点在检测到当前区块链满足分链条件时生成的;
根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链存储在所述证明节点中;
对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且将所述子区块链作为新的当前区块链;
其中,所述根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链存储在所述证明节点中,包括:
根据分链规则,确定当前区块链的分链位置;
将所述当前区块链从所述分链位置处断开,并将所述当前区块链的起始位置与分链位置之间的区块链作为母链存储在证明节点中。
2.根据权利要求1所述的方法,其特征在于,对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块之后,还包括:
若所述当前区块链的分链位置之后存在已链接区块,则将所述已链接区块依次链接在所述子区块链的创世块后,并修改所述已链接区块的区块头。
3.根据权利要求1所述的方法,其特征在于,对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,包括:
获取母链中各区块的数据,采用预设加密算法生成加密数据码;
根据所述加密数据码构建子区块链的创世块。
4.根据权利要求1所述的方法,其特征在于,在对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且将所述子区块链作为新的当前区块链之后,还包括:
接收链上数据查询请求;所述链上数据查询请求为数据需求方节点根据查询需求生成的;
根据查询规则和所述链上数据查询请求中的查询需求,从当前区块链和证明节点中存储的各母链中查找与所述查询需求匹配的数据作为查询结果反馈给所述数据需求方节点。
5.根据权利要求4所述的方法,其特征在于,从当前区块链和证明节点中存储的各母链中查找与所述查询需求匹配的数据,包括:
针对每一个区块,根据查询需求和该区块中存储的辅助索引树,采用索引查找方式,在该区块的数据中查找与所述查询需求匹配的数据。
6.根据权利要求4所述的方法,其特征在于,根据查询规则和所述链上数据查询请求中的查询需求,从当前区块链和证明节点中存储的各母链中查找与所述查询需求匹配的数据作为查询结果反馈给所述数据需求方节点,包括:
将当前区块链作为当前查询链;
依次访问所述当前查询链中各区块的数据,查找与所述查询需求匹配的数据作为一次查询结果;
如果所述当前查询链的创世块中包含加密数据码,则从证明节点中获取所述加密数据码对应的母链,作为当前查询链,返回执行针对当前查询链进行数据查询的操作;
如果所述当前查询链的创世块中不包含加密数据码,则查询结束,将各次查询结果进行汇总后作为查询结果反馈给所述数据需求方节点。
7.根据权利要求4所述的方法,其特征在于,接收链上数据查询请求之后,还包括:
根据所述链上数据查询请求和当前区块链,生成区块链验证请求,发送至证明节点,以请求所述证明节点依据当前区块链的创世块中存储的加密数据码,对当前区块链进行准确性验证;
如果接收到所述证明节点反馈的验证成功消息,则执行数据查询操作。
8.一种区块链数据的处理方法,其特征在于,由区块链节点执行,所述方法包括:
若检测到当前区块链满足分链条件,则生成区块链分链请求;
向所述区块链网络发送所述区块链分链请求,由区块链网络中的区块生成节点执行如下操作:响应所述区块链分链请求,根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链发送至证明节点,对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且所述子区块链作为当前区块链;
接收并存储所述区块生成节点发送的母链;
其中,所述根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链发送至证明节点,包括:
根据分链规则,确定当前区块链的分链位置;
将所述当前区块链从所述分链位置断开,并将所述当前区块链的起始位置与分链位置之间的区块链发送至证明节点。
9.根据权利要求8所述的方法,其特征在于,接收并存储所述区块生成节点发送的母链之后,还包括:
响应于区块链网络中区块生成节点发送的区块链验证请求,所述区块链验证请求是区块生成节点根据链上数据查询请求和当前区块链生成的;
依据当前区块链的创世块中存储的加密数据码,对当前区块链进行准确性验证,并向区块生成节点反馈验证结果,以使所述区块生成节点在接收到区块链验证成功消息后,执行数据查询操作。
10.一种区块链数据的处理装置,其特征在于,配置于区块链节点中,所述装置包括:
分链请求响应模块,用于响应于区块链网络中证明节点发送的区块链分链请求,所述区块链分链请求是所述证明节点在检测到当前区块链满足分链条件时生成的;
分链处理模块,用于根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链存储在所述证明节点中;
子链构建模块,用于对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且将所述子区块链作为新的当前区块链;
其中,所述分链处理模块,具体用于:
根据分链规则,确定当前区块链的分链位置;
将所述当前区块链从所述分链位置处断开,并将所述当前区块链的起始位置与分链位置之间的区块链作为母链存储在证明节点中。
11.一种区块链数据的处理装置,其特征在于,所述装置配置于区块链节点中,所述装置包括:
分链请求生成模块,用于若检测到当前区块链满足分链条件,则生成区块链分链请求;
分链请求发送模块,用于向所述区块链网络发送所述区块链分链请求,由区块链网络中的区块生成节点执行如下操作:响应所述区块链分链请求,根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链发送至证明节点,对所述母链中各区块的数据进行处理,并根据处理结果构建子区块链的创世块,且所述子区块链作为当前区块链;
其中,所述根据分链规则,对所述当前区块链进行子母分链,并将分链后的母链发送至证明节点,包括:根据分链规则,确定当前区块链的分链位置;将所述当前区块链从所述分链位置断开,并将所述当前区块链的起始位置与分链位置之间的区块链发送至证明节点;
接收存储模块,用于接收并存储所述区块生成节点发送的母链。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7或8-9中任一所述的区块链数据的处理方法。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-7或8-9中任一所述的区块链数据的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811493496.5A CN109858285B (zh) | 2018-12-07 | 2018-12-07 | 区块链数据的处理方法、装置、设备和介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811493496.5A CN109858285B (zh) | 2018-12-07 | 2018-12-07 | 区块链数据的处理方法、装置、设备和介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109858285A CN109858285A (zh) | 2019-06-07 |
CN109858285B true CN109858285B (zh) | 2023-03-14 |
Family
ID=66890726
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811493496.5A Active CN109858285B (zh) | 2018-12-07 | 2018-12-07 | 区块链数据的处理方法、装置、设备和介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109858285B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111339197A (zh) * | 2020-02-26 | 2020-06-26 | 百度在线网络技术(北京)有限公司 | 区块链数据处理方法、装置、电子设备及介质 |
CN111475572B (zh) * | 2020-04-02 | 2023-08-29 | 百度国际科技(深圳)有限公司 | 区块生成方法、装置、设备和介质 |
CN113312646B (zh) * | 2021-06-22 | 2022-05-13 | 上海和数软件有限公司 | 一种基于区块链的数据加密方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107045518A (zh) * | 2016-10-18 | 2017-08-15 | 北京天德科技有限公司 | 一种区块链的扩展设计方法 |
CN107276762A (zh) * | 2017-05-08 | 2017-10-20 | 飞天诚信科技股份有限公司 | 一种多协议区块链的工作方法及装置 |
CN108600301A (zh) * | 2018-03-08 | 2018-09-28 | 青岛墨客区块链有限公司 | 一种区块链之间的跨链方法及主区块链 |
CN108647963A (zh) * | 2018-05-02 | 2018-10-12 | 百度在线网络技术(北京)有限公司 | 区块链主链的确定方法、装置、服务器和存储介质 |
CN108764902A (zh) * | 2018-05-23 | 2018-11-06 | 北京京东尚科信息技术有限公司 | 用于存储数据的方法、节点和区块链系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10812274B2 (en) * | 2015-05-07 | 2020-10-20 | Blockstream Corporation | Transferring ledger assets between blockchains via pegged sidechains |
US10713654B2 (en) * | 2016-01-21 | 2020-07-14 | International Business Machines Corporation | Enterprise blockchains and transactional systems |
US11240035B2 (en) * | 2017-05-05 | 2022-02-01 | Jeff STOLLMAN | Systems and methods for extending the utility of blockchains through use of related child blockchains |
-
2018
- 2018-12-07 CN CN201811493496.5A patent/CN109858285B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107045518A (zh) * | 2016-10-18 | 2017-08-15 | 北京天德科技有限公司 | 一种区块链的扩展设计方法 |
CN107276762A (zh) * | 2017-05-08 | 2017-10-20 | 飞天诚信科技股份有限公司 | 一种多协议区块链的工作方法及装置 |
CN108600301A (zh) * | 2018-03-08 | 2018-09-28 | 青岛墨客区块链有限公司 | 一种区块链之间的跨链方法及主区块链 |
CN108647963A (zh) * | 2018-05-02 | 2018-10-12 | 百度在线网络技术(北京)有限公司 | 区块链主链的确定方法、装置、服务器和存储介质 |
CN108764902A (zh) * | 2018-05-23 | 2018-11-06 | 北京京东尚科信息技术有限公司 | 用于存储数据的方法、节点和区块链系统 |
Non-Patent Citations (1)
Title |
---|
使用双区块链的防伪溯源系统;刘家稷等;《信息安全学报》;20180515(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109858285A (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20240348442A1 (en) | Maintaining blocks of a blockchain in a partitioned blockchain network | |
CN109791591B (zh) | 经由区块链进行身份和凭证保护及核实的方法和系统 | |
CN107577427B (zh) | 用于区块链系统的数据迁移方法、设备和存储介质 | |
CN111344706B (zh) | 管理区块链上的交易的方法和系统 | |
US20200364075A1 (en) | Blockchain network transaction processing method, apparatus, device, and storage medium | |
CN111163182B (zh) | 基于区块链的设备注册方法、装置、电子设备和存储介质 | |
US20200389291A1 (en) | Data processing method and apparatus for blockchain, and storage medium | |
US20210083856A1 (en) | Improved hardware security module management | |
US20210049715A1 (en) | Blockchain-based data procesing method, apparatus, and electronic device | |
CN111930489B (zh) | 一种任务调度方法、装置、设备及存储介质 | |
CN109858285B (zh) | 区块链数据的处理方法、装置、设备和介质 | |
CN103150647B (zh) | 报表文件处理方法、服务器和系统 | |
CN114239060B (zh) | 数据获取方法、装置、电子设备及存储介质 | |
CN110036381B (zh) | 存储器内数据搜索技术 | |
CN110134930A (zh) | 电子合同管理方法、装置、计算机设备和存储介质 | |
TWI762851B (zh) | 塊鏈式帳本中的資料驗證方法、系統、裝置及設備 | |
CN108665272A (zh) | 区块链数据处理方法、装置、设备和存储介质 | |
CN112738253A (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN105556533A (zh) | 自动生成证书文档 | |
CN109254999B (zh) | 一种区块链的数据处理方法、装置、设备及介质 | |
CN111951112A (zh) | 基于区块链的智能合约执行方法、终端设备和存储介质 | |
CN111522881A (zh) | 业务数据处理方法、装置、服务器及存储介质 | |
CN112988738A (zh) | 用于区块链的数据分片方法和装置 | |
CN113935069B (zh) | 一种基于区块链的数据验证方法、装置、设备及存储介质 | |
US11662927B2 (en) | Redirecting access requests between access engines of respective disk management devices |
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 |