区块链中的数据处理方法和装置与流程

文档序号:15384447发布日期:2018-09-08 00:24阅读:195来源:国知局

本申请涉及计算机技术领域,尤其涉及一种区块链中的数据处理方法和装置。



背景技术:

随着互联网的不断发展,区块链技术应运而生,它是一种互联网数据库技术,具有去中心化、公开透明的特点。具体地,区块链技术的本质是去中心化且寓于分布式结构的数据存储、传输和证明的方法,用数据区块取代目前互联网对中心服务器的依赖,使得所有数据的变更或者交易项目都被记录在一个云系统之上。由于没有中央控制点的分布式对等网络,并且使用分布式集体运作的方法,可以说,区块链是网络上的“公开大账本”。它存在许多节点,每个节点都可以观察到整个账本,并且共同参与维护,其收益则是获得记账的权利,并且可以复制一份完整的数据库,单个节点无法修改数据库,从而保证了账本数据的安全可靠。

当下,采用区块链技术进行数据的组织和管理已经被广泛的应用到了各种商业领域。

但是,现有的区块链只是单纯沿着区块链的延展方向,依次生成新的区块,链条的生成方式单一,对于非单链条的区块链结构,并不能体现出截至到某一历史时刻下,区块链的整体形态及生长情况,使得用户不能清楚的掌握区块链的各个阶段的发展情况。



技术实现要素:

本发明提供了一种区块链中的数据处理方法和装置,能够方便用户清楚掌握区块链形成的各个阶段的发展情况。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,提供了一种区块链中的数据处理方法,包括:

响应于对当前区块链进行数据统计的操作,生成区块链中区块的区块体数据对应的统计数据,并以所述统计数据作为区块体数据生成记录区块;

将所述记录区块链接到所述区块链中;

将所述记录区块中的数据向区块链网络进行广播。

第二方面,提供了一种区块链中的数据处理装置,包括:

区块生成模块,用于响应于对当前区块链进行数据统计的操作,生成区块链中区块的区块体数据对应的统计数据,并以所述统计数据作为区块体数据生成记录区块;

区块链接模块,用于将所述记录区块链接到所述区块链中;

数据广播模块,用于将所述记录区块中的数据向区块链网络进行广播。

本发明提供的区块链中的数据处理方法和装置,在需要对截至到某一历史时刻下区块链的生长情况进行保存时,通过对当前区块链中各区块的区块体数据进行统计,生成符合预置统计要求的统计数据,并以该统计数据作为区块体数据生成记录区块;然后将该记录区块添加到区块链中,从而可以实现通过记录区块中的数据方便用户清楚了解区块链在各个阶段的生成情况,同时降低数据存储成本。

上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本申请的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1为现有技术的区块链的结构示意图;

图2为本发明实施例的反向链接结构示意图;

图3为本发明实施例的区块链中的数据处理方法流程图一;

图4为本发明实施例的区块链结构示意图一;

图5为本发明实施例的区块链中的数据处理方法流程图二;

图6为本发明实施例的还原区块链的方法流程图;

图7为本发明实施例的区块链结构示意图二;

图8为本发明实施例的区块链勘误表结构图;

图9为本发明实施例的区块链中的数据处理方法流程图三;

图10为本发明实施例的区块链结构示意图三;

图11为本发明实施例的区块链中的数据处理装置的结构示意图一;

图12为本发明实施例的区块链中的数据处理装置的结构示意图二。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

区块链最初是伴随着着比特币的产生而提出的,因此,在描述区块链涉及的数据中,采用了交易数据和账本这样的表达,随着区块链技术的发展,其能够记录的信息和数据已经不限于传统意义上的交易数据,而是可以用来记录任何信息和数据。因此,在本发明实施例中,存储在各区块的区块体中的数据均可以被称为交易数据,该交易数据是指一条信息、数据或者指令等,而账本是指由多个交易数据构成的集合体。

区块链是指由多个区块构成的经过区块链技术加密后的数据存储结构,区块链网络是指,有多个实现区块链技术的节点构成的网络。区块链网络中的节点,可以是互联网中具有处理区块链数据功能的服务器或者终端设备。区块链中的各个节点执行着对交易数据进行记账(将交易数据写入区块体)、将新区块链接到已有区块链上、对区块链进行存储和验证等功能。

本发明实施例的基本原理在于:在区块链延展的过程中,当需要对区块链的某个特定历史时刻下的区块链的生长情况进行保存,特别是区块的区块体数据进行保存时,可先基于该时刻下区块链的形态结构中各区块中的区块体数据进行统计,生成统计数据,并以该统计数据作为区块体数据生成记录区块,然后将记录区块链接到区块链中,最后将记录区块中的数据向区块链网络进行广播。如此,当需要获取某一历史时刻的区块链的数据生成情况时,就可以根据记录区块中的统计数据了解区块链在该阶段的生成情况。

需要说明的是,本发明实施例中,区块之间的链接是一种逻辑意义上的链接,这种链接关系是通过区块链中的验证机制来体现的。如图1所示,在传统的区块链中,后一区块的区块头中记录着基于前一个区块生成的校验值,例如该校验值可以是前一个区块中的数据经不可逆算法,如哈希算法得到的哈希值(hash),并基于这样的机制不断向前延展,从而形成链接方向始终向前的区块链。本实施例中,对区块链的形态结构不做具体限定,即针对任何链接结构的区块链均可以通过本方案中的区块链中的数据处理方法对任一时刻的区块链的统计数据进行存储,并且不会带来较大的存储成本。

特别是,如图2所示,当区块链中存在类似例如由区块4指向区块3的反向链接时,上述区块链中的数据处理方法中需要注意的是,被记录在记录区块中的统计数据也可能是将当前区块链中的区块数据还原为修改之前的区块数据所进行统计得到的数据。如图2中所示,区块3的区块头中包含区块4的校验值hash2,由于反向链接的建立,导致区块3的内容被修改,当使用区块4中的记录的校验值对区块3进行验证时,由于区块3的区块头中出现了hash2,基于修改后的区块3计算获得的校验值不等于区块4的区块头中记录的校验值,从而出现验证错误。

通过这种验证机制,就可以识别出反向链接的存在。在实际应用中,可以在每个区块的区块头中预留出用于填写反向校验值的数据区域,从而在后续验证过程中,当发现该区域中存在数据时,就能够获知该区块存在反向链接,然后再基于该数据对该区块之后的各个区块进行验证,找到基于哪个区块计算获得的该校验值,就可以获知完整的反向链接关系。

对于识别反向链接而言,还可以通过区块链勘误表的方式来实现。区块链勘误表可以认为是对区块链的不可篡改机制的一个补充,该区块链勘误表可以由管理区块链网络的监管节点来维护,其目的在于,用来执行一些对区块链的必要的修改,这些修改是在监管节点的监控下完成的,从而保证区块链数据的准确性。

对区块链中的各个区块的修改,可以记录在与区块链对应的区块链勘误表中,在该区块链勘误表中记录着修改所在的具体位置(区块编号和区块中数据的行号以及列号等),以及修改前后的信息或者数据。在验证的过程中,如果出现验证不通过的情形,可以查询该勘误表,确定该验证不通过的区块是否存在修改,如果存在,则可以用修改之前的数据或者信息再进行验证,如果通过,则可以确认该修改经过允许的,不是被恶意篡改。并且,在该区块链勘误表中,还可以进一步记录,该修改是否为反向链接的修改,以及具体是基于哪个区块生成的校验值等信息,从而便于识别出反向链接的逻辑关系。

下面通过多个实施例来进一步说明本申请的技术方案。

实施例一

基于上述对当前区块链中区块的区块体数据进行统计,并通过统计数据保存特定历史时刻下区块链的数据生长情况的方案思想,如图3所示,其为本发明实施例示出的区块链中的数据处理方法流程图一,该方法的执行主体可以为区块链中的处理节点。如图3所示,该区块链中的数据处理方法包括:

s310,响应于对当前区块链进行数据统计的操作,生成区块链中区块的区块体数据对应的统计数据,并以统计数据作为区块体数据生成记录区块;

在区块链延展生成新区块的过程中,当需要对截至当前时刻形成的区块链中各区块的区块体数据的生长情况进行存储时,可以基于已形成的区块链中各区块中的区块体数据进行数据统计,并生成统计数据。该统计数据的作用在于:不需要对区块链中各区块的数据进行复制,仅通过统计数据的内容就可以了解截至当前区块链中各区块的区块体数据的生长情况。比如,可以统计生成当前区块链的区块的区块体数据的数据总量和数据生长速度,进而从区块链的整体数据增长的角度对区块链的生成情况进行记录。又比如,对区块链中存在的具有特殊特征的区块体数据进行额外记录,比如存在修改的区块体数据,或者存在反向链接的区块链接关系等。关于统计数据的内容,可以根据用户的需求由用户自行设定。

在后续时间段内,如果用户想要了解截至当前时刻区块链的生长情况的数据,就可以通过记录区块中的统计数据获取想要的数据内容。

s320,将记录区块链接到区块链中;

在生成记录区块之后,可以根据需要将记录区块链接在区块链中的任一区块之后。具体地,将选中的任一区块中的全部数据经不可逆算法进行计算得到校验值,并将校验值存储至记录区块的区块头中完成链接。其中,该不可逆算法可以为哈希算法,得到的校验值为哈希值。

在具体应用场景中,为了方便区分记录区块和区块链中正常延展的区块,可以在每次存储区块链的形态结构时,仅在记录区块中存储正常延展的区块链结构,并且为了在区块链结构上方便区分两种类型的区块,可以将记录区块单独链接在一起。例如,将针对区块链生成的首个记录区块链接在区块链的创世区块之后,然后将首个记录区块以后生成的记录区块,按照记录区块的生成时间依次链接在前一记录区块之后,形成单链条的链接结构。

当然,为了体现区块链的完整性,在统计当前区块链中区块的区块体数据时,也可以将记录区块和正常延展的区块一并作为统计对象。

另外,为了方便区分记录区块和正常延展的区块这两种区块类型,便于查找记录区块的数据,可以采用不同的区块编号对这两种区块进行标识,如图4所示,其中正常延展的区块可采用block1、block2,……,blockn(n为正整数)这种编号方式;记录区块可采用blockm1、blockm2,……,blockmn(n为正整数)这种编号方式。

s330,将记录区块中的数据向区块链网络进行广播。

在节点生成记录区块后,需要将记录区块向区块链网络进行广播,以通过多个节点的共识机制对最终的区块链执行验证和确认。

如此,当后续用户需要还原当前时刻下区块链的形态结构时,可以在找到指定历史时刻产生的记录区块后,提取该记录区块中的统计数据,然后基于统计数据了解区块链的在该阶段的生长情况,并且这种记录区块链生长情况的方式大大降低了存储成本。

本发明实施例的区块链中的数据处理方法,在需要对截至到某一历史时刻下区块链的生长情况进行保存时,通过对当前区块链中各区块的区块体数据进行统计,生成符合预置统计要求的统计数据,并以该统计数据作为区块体数据生成记录区块;然后将该记录区块添加到区块链中,从而可以实现通过记录区块中的数据方便用户清楚了解区块链在各个阶段的生成情况,同时降低数据存储成本。

实施例二

本实施例示出的内容主要对记录区块中的区块体数据的数据内容进行了补充说明。

首先,可以在记录区块的区块体数据中添加用于描述当前区块链中各区块之间的链接关系的逻辑数据,以方便后续时间段内用户可以根据逻辑数据还原当前区块链的形态结构。具体地,如图5所示,在图3所示方法的基础上,还可同步执行如下步骤:

s510,响应于对当前区块链进行数据统计的操作,生成用于描述当前区块链中各区块之间的链接关系的逻辑数据,并以逻辑数据作为区块体数据添加到记录区块。

在区块链延展生成新区块的过程中,当需要对截至当前时刻形成的区块链的形态进行存储时,可以基于已形成的区块链中各区块之间的链接关系生成用于描述当前区块链中各区块之间的链接关系的逻辑数据。该逻辑数据的作用在于:不需要对区块链中各区块的数据进行复制,仅通过逻辑数据中记载的各区块的链接关系,就可以参考当前区块链的形态结构,或者是参考在之后的时间段内存在新增区块后的区块链的形态结构,就可以还原出之前历史时刻对应的区块链的形态结构。根据还原出的之前历史时刻对应的区块链的形态结构,以及当前区块链中各区块中的数据,就可以确定出截至该历史时刻生成的所有区块数据。

进一步地,为了方便以后用户根据本次生成的记录区块中逻辑数据从当前区块链中还原出当前时刻的区块链的形态结构,在上述记录区块中存储的逻辑数据可包括当前区块链中包含的各区块的区块编号,以及各区块之间的链接指向信息。

在后续用户根据当前生成的记录区块中的逻辑数据从以后形成的区块链中还原当前时刻的区块链的形态结构时可执行如图6所示的方法步骤:

s610,根据记录区块中存储的区块编号从当前区块链中提取相应的不包含校验值的区块。

首先,从当前区块链中提取记录区块中存储的区块编号对应的区块,然后将这些区块的区块头中存储的校验值全部删除,只保留不包含校验值的剩余区块部分。

s620,根据记录区块中存储的各区块之间的链接指向信息,从当前区块链中获取与记录区块中存储的各区块编号对应的区块中存储的校验值,并添加到相应的无校验值的区块的区块头中,以还原出该历史时刻的区块链的形态结构。

在确定待还原的不包含校验值的区块后,需要将这些区块通过在区块头中添加校验值来形成区块之间的链接指向关系。具体地,根据记录区块中存储的各区块之间的链接指向信息,从当前形成的区块链中提取出与这些不包含校验值的区块对应的区块的区块头中记录的校验值,并将其添加到相应的无校验值的区块的区块头中。

简言之,上述过程就是先从当前区块链中提取出去除校验值的区块,然后根据记录区块中记录的链接指向信息,再从当前区块链中提取出这些区块中符合链接指向信息的校验值,并添加的相应的无校验值的区块的区块头中,最终完成区块链结构的还原。在该过程中,有些区块的校验值可能存在多个,比如在后续的时间段内新形成的区块与截至当前时刻形成的区块又建立了新的链接指向关系,那么在还原当前时刻的区块链的形态结构时,就需要去除掉该新增的链接指向关系,即仅将截至当前时刻产生的校验值添加到对应的无校验值的区块的区块头中。

其次,可以在记录区块的区块体数据中添加用于描述当前区块链中各区块中数据修改情况的修改数据,以方便后续时间段内用户可以准确的根据上述逻辑数据还原当前区块链的形态结构。具体地,如图5所示,在图3所示方法的基础上,还可同步执行如下步骤:

s520,对上一次存储区块链到本次存储区块链所对应的时间段内,对区块链中存在数据修改的区块进行统计,并将统计得到的修改数据作为区块体数据添加到记录区块中。

在区块链延展过程中,可能会根据需要对已有区块中的数据进行修改,例如在增加反向链接时,需要在已有区块的区块头中增加新区块的校验值;又例如直接对已有区块中区块的区块体数据进行修改(包括增加、删除以及替换数据)。

如图7所示,在形成区块链的过程中,包含对已有区块block2中的数据进行修改的情况。在形成记录区块时,就需要对block2中的数据修改情况进行统计,包括修改之前的原数据、修改之后的新数据,然后将得到修改数据,添加上上述记录区块中。该修改数据可以是修改的原数据和新数据本身,也可以是针对某个数据进行修改的标识信息。当然针对后者的记录内容,还需要通过设置在区块链以外的区块链勘误表(如图8所示)对修改的原数据和新数据进行记录,以方便数据还原。

需要说的是,记录区块中记录的修改数据仅限于从上一次存储区块链(对应上一次生成记录区块)到本次存储区块链(对应本次生成记录区块)所对应的时间段内,对区块链中发生的数据修改的区块进行统计而得到的修改数据。

相应地,在后续用户需要还原截至本时刻形成的区块链的形态结构时,除了执行前述内容中的提及的还原过程外,还需要将从后续形成的区块链中获取的区块体数据还原为修改之前也就是当前时刻对应的区块体数据,以最终还原出当前时刻的区块链的形态结构。

本发明实施例的区块链中的数据处理方法,在实施例一所示方法的基础上,对记录区块中的数据进行了补充说明,即通过增加逻辑数据可以方便用户在后续根据记录区块还原当前形成的区块链的形态结构;另外,通过在记录区块中增加针对区块数据修改后进行统计得到的修改数据,以方便用户准确还原区块链在不同时刻的形态结构。

在执行完成步骤s510和s520之后,可继续执行上述步骤s320~s330的内容。

本发明实施例的区块链中的数据处理方法,在实施例一所示方法的基础上,在需要对截至到某一历史时刻下区块链的整体形态进行保存时,通过对当前区块链中各区块之间的链接关系进行统计,生成可用于描述当前区块链中各区块之间的链接关系的逻辑数据,并以该逻辑数据作为区块体数据生成记录区块;然后将该记录区块添加到区块链中,从而可以实现通过记录区块中的数据还原各历史时刻的区块链的形态结构,方便用户清楚了解区块链在各个阶段的生成情况,同时降低数据存储成本。

进一步地,通过在记录区块中增加针对区块数据修改后进行统计得到的修改数据,以方便用户准确还原区块链在不同时刻的形态结构。

实施例三

如图9所示,其为本发明实施例示出的区块链中的数据处理方法流程图三,该方法可视为图3所示方法的细化,主要对将记录区块链接到区块链中的过程进行进一步说明。如图9所示,在图3所示步骤的基础上,步骤320可具体包括如下步骤内容:

s910,以区块链的创世区块作为父区块,以记录区块作为子区块,将记录区块链接到区块链中;

或者,

s920,以区块链中截至当前时刻最后一个生成的区块作为父区块,以记录区块作为子区块,将记录区块链接到区块链中;

或者,

s930,以区块链的创世区块作为父区块,以区块链中截至当前时刻最后一个生成的区块作为父区块,以记录区块作为子区块,将记录区块链接到区块链中。

例如图10所示,为将记录区块blockm1以当前区块链的创世区块block1作为父区块,同时以区块链中截至当前时刻最后一个生成的区块block4作为父区块,以记录区块blockm1作为子区块,将记录区块blockm1链接到区块链中而生产的区块链形态结构。

本发明实施例的区块链中的数据处理方法,在实施例一所示方法的基础上,对将记录区块链接到区块链中的具体位置进行了限定,从而可以方便用户更加快速的找到各历史时刻生产的记录区块。

实施例四

如图11所示,其为本发明实施例示出的区块链中的数据处理装置的结构示意图一,该装置可以为设置在网络中的服务器,用于执行实施例一所示的方法步骤。如图11所示,该区块链中的数据处理装置包括:

区块生成模块111,用于响应于对当前区块链进行数据统计的操作,生成区块链中区块的区块体数据对应的统计数据,并以统计数据作为区块体数据生成记录区块;

区块链接模块112,用于将记录区块链接到区块链中;

数据广播模块113,用于将记录区块中的数据向区块链网络进行广播。

进一步地,上述区块生成模块111可具体用于,统计生成当前区块链的区块的区块体数据的数据总量和数据生长速度。

进一步地,如图12所示,上述装置还可包括:

逻辑数据生成模块121,用于响应于对当前区块链进行数据统计的操作,生成用于描述当前区块链中各区块之间的链接关系的逻辑数据,并以逻辑数据作为区块体数据添加到记录区块。

进一步地,如图12所示,上述装置还可包括:

修改数据生成模块122,用于对上一次对区块链进行数据统计到本次对区块链进行数据统计所对应的时间段内,对区块链中存在数据修改的区块进行统计,并将统计得到的修改数据作为区块体数据添加到记录区块中。

图12所示的装置结构可用于执行实施例二所示的方法步骤。

进一步地,上述区块链接模块112具体用于,

以区块链的创世区块作为父区块,以记录区块作为子区块,将记录区块链接到区块链中;

或者,

以区块链中截至当前时刻最后一个生成的区块作为父区块,以记录区块作为子区块,将记录区块链接到区块链中;

或者,

以区块链的创世区块作为父区块,以区块链中截至当前时刻最后一个生成的区块作为父区块,以记录区块作为子区块,将记录区块链接到区块链中。

区块链接模块112功能具体化后的上述装置结构可用于执行实施例三所示的方法步骤。

本发明实施例的区块链中的数据处理装置,在需要对截至到某一历史时刻下区块链的生长情况进行保存时,通过对当前区块链中各区块的区块体数据进行统计,生成符合预置统计要求的统计数据,并以该统计数据作为区块体数据生成记录区块;然后将该记录区块添加到区块链中,从而可以实现通过记录区块中的数据方便用户清楚了解区块链在各个阶段的生成情况,同时降低数据存储成本。

进一步地,在需要对截至到某一历史时刻下区块链的整体形态进行保存时,通过对当前区块链中各区块之间的链接关系进行统计,生成可用于描述当前区块链中各区块之间的链接关系的逻辑数据,并以该逻辑数据作为区块体数据添加到记录区块中,从而可以实现通过记录区块中的数据还原各历史时刻的区块链的形态结构,方便用户清楚了解区块链在各个阶段的生成情况,同时降低数据存储成本。

进一步地,通过在记录区块中增加针对区块数据修改后进行统计得到的修改数据,以方便用户准确还原区块链在不同时刻的形态结构。

进一步地,对将记录区块链接到区块链中的具体位置进行了限定,从而可以方便用户更加快速的找到各历史时刻生产的记录区块。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1