本发明涉及区块链技术领域,特别是一种用于区块链的差值回退方法及系统。
背景技术:
区块链是信用时代的重要基础设施,在这个基础设施之上将承载人们各种各样的活动,虽然绝大多数是诚实的活动,但在实际应用中总会因为或操作失误、或刻意逾越边界、或故意捣乱等行为进行一些非正常的活动,这些活动可能给区块链这个基础设施带来额外的消耗,由于区块链的基本特点是数据安全可靠无法篡改无法伪造,那么对于非正常活动所产生的数据是不会被区块链所接受的。
但是,虽然区块链的设计初衷是不接受非正常数据,在代码实现上也是以这个标准为目标,但是具体执行过程中,可能因为这个“不接受”的处理方式带来负面的影响,更甚至影响整个区块链基础设施的稳定性。比如在账务类区块链中,由于节点是通过交易不断的计算账务,那么当出现账务错误或某区块计算到中途发现有数据错误,可能需要恢复账户,此时常用的方案是交易逆向计算,但这会引入新的问题,就是交易逆向计算过程中出错又如何恢复呢,这是一个无穷无尽的死循环,并不是一个切实有效的解决方案;有些解决方案中,会采用建立关键点的方式,在出现账务需要恢复时直接恢复到关键点,但这个方式有一个前提就是需要有足够数量的关键点,否则无法保证可以恢复到过去任何时间点,同时又因为关键点的创建需要消耗大量时间以及存储空间,在实际应用中只会保留少量关键点,这让账务的恢复场景严重受限。那么,如何在不陷入回滚死循环的同时,又能保证恢复到过去任意时间点,还不用大量消耗处理时间和存储空间,成为一个急需解决的问题。
技术实现要素:
本发明旨在提出一种用于区块链的差值回退方法及系统,解决了区块链中数据错误时回退需要重建等待很久的问题,解决了区块链中为了保证数据回退而额外消耗的巨大处理时间和存储空间的问题,实现了一个快速轻量无死循环的数据回退作用。
一种用于区块链的差值回退方法,包括记录数据和回退数据,所述差值回退方法包括:
s1、启动节点,当节点接收数据后校验所述数据的合法性,若数据不合法则丢弃,若数据合法则进入下一环节;
s2、查询节点本地是否已有所述数据,若没有所述数据则新增所述数据于节点本地并记录新增时间,若有所述数据则更新数据并记录更新时间;
s3、通过差值算法计算对应时间和对应数据的值,若所述值不存在则新增值操作,若所述值存在则更新值,将最新值写入到指定位置,完成数据记录;
s4、当所述数据允许回退时,向全网广播所述数据进入回退状态并停止接收所述数据的请求,根据所述数据的变动差值合并计算所述数据回退请求发起时的值,检索数据合法性后开始回退数据;
s5、当数据回退后,开始清除超过回退时间点的环境并广播数据恢复正常,开始正常接收数据处理。
进一步的,所述数据校验的过程包括链柱模型校验和链环模型校验,
所述链柱模型校验,即校验所述链柱最后一个锁扣的唯一识别码的准确性,依次往前校验链柱茎上的锁扣唯一特征码的准确性即可;
所述链环模型校验,即校验链环锁扣的唯一识别码的准确性即可;所述锁扣的唯一识别码由第一条记录和最后一条记录的唯一识别码生成。
进一步的,所述数据回退的过程包括:首先提取所述数据的变动历史和变动差值,然后采用差值算法合并计算回退数据发起时对应数据的值,最后检查对应值下数据的合法性。
本发明在上述方法的基础上延伸提出一种用于区块链的差值回退系统,所述系统包括:
数据管理器:用于管理业务数据,包括区块链的应用场景不同条件下的各类数据;
差值管理器:用于管理数据在时间线上的历史变化情况,当数据有发生变动时根据记录信息计算出差值;
回退管理器:用于管理数据回退,在数据回退时通过差值数据计算出回退数据发起时的数据,并将计算出的数据设为过去指定时间点的数据,
在该系统中,当数据管理器接收到数据时校验数据的合法性,若本地未有该数据时通过差值管理器记录数据发生时间以及该时间该数据对应的差值,当系统需要回退数据时,回退管理器检查数据是否允许回退,当数据允许回退时通过差值管理器检查历史差值记录并通知系统中各组件进入回退状态,数据管理器停止接收数据请求,差值管理器通过提取并计算对应数据的变动差值,由回退管理器进行数据回退,所述数据管理器、差值管理器、回退管理器互相交叉网状连接,可以互相进行数据访问。
进一步的,所述差值管理器包括:
时间记录模块:用于记录数据发生变动的时间,获取发生变动的数据,并配合差值记录模块记录具体的变动;
差值记录模块:用于配合时间记录模块记录具体的变动记录;
差值计算模块:当对数据进行回退时,通过差值计算模块找出回退时间线,并提取所述回退时间线记录的差值,然后合并计算出回退点的值,并将最终计算后的值返回给回退管理器进行使用。
进一步的,所述数据管理器包括:
数据存储模块:用于存储数据以及更新过的数据;
数据写入模块:当需要进行数据写入时,由数据写入模块调用差值管理器中的差值记录模块记录第一次差值变化并根据变化情况进行数据写入;
数据删除模块:根据差值记录模块记录数据变化的情况进行删除值操作,在差值记录中旧数据记录为已删除,
所述数据存储模块、数据写入模块和数据删除模块在增加、删除、修改过程中,相互配合工作。
进一步的,所述回退管理器包括:
状态管理模块:用于通知系统将进入数据回退状态,各个组件停止对所要进行回退的数据进行处理,负责完成数据回退操作的前置准备工作;
数据更新模块:用于向差值管理器发送数据回退计算请求,并由差值管理器返回对应数据回退的值,当回退管理器校验确认无误后开始执行数据更新操作;
环境清理模块:当数据更新模块完成数据更新后,通知环境清理模块执行环境清理操作,将系统应用的环境切换到回退的时间点,以保证数据的环境都已回退到当时的值。
本发明通过差值算法逆向计算出指定回退时间点的数据,通过数据管理器、差值管理器、回退管理器三个互相组合,配合工作完成数据记录和数据回退的操作,简化数据回退操作环节,使系统损耗的算力和时间大大降低,实现了一个快速轻量无死循环的数据回退作用。
附图说明
图1为本发明所提及用于区块链的差值回退方法的流程示意图;
图2是本发明所提及用于区块链的差值回退系统的组成示意图;
图3是本发明所提及数据管理器的组成示意图;
图4是本发明所提及差值管理器的组成示意图;
图5时本发明所提及回退管理器的组成示意图,
其中:100数据管理器;200差值管理器;300回退管理器;101数据存储模块;102数据写入模块;103数据删除模块;201时间记录模块;202差值记录模块;203差值计算模块;301状态管理模块;302数据更新模块;303环境清理模块
具体实施方式
下面结合附图和具体实施例对本发明作进一步详述。在此需要说明的是,下面所描述的本发明各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明为了在不陷入回滚死循环的同时,又能保证恢复到过去任意时间点,还不大量消耗处理时间和存储空间的前提下,采用差值算法逆向算出指定时间时的数据。
为了实现这一目标,数据进行差值回退的处理过程包括:
s1、启动节点,当节点接收数据后校验所述数据的合法性,若数据不合法则丢弃,若数据合法则进入下一环节;
区块链数据具有高度迭代性,前一顺位的数据与后一顺位的数据在一定程度上具有紧密性,在本发明中优选采用链柱和链环两种模型进行数据校验,对此引进唯一特征码的概念,
所述链柱模型校验,即校验所述链柱最后一个锁扣的唯一识别码的准确性,依次往前校验链柱茎上的锁扣唯一特征码的准确性即可;
所述链环模型校验,即校验链环锁扣的唯一识别码的准确性即可;所述锁扣的唯一识别码由第一条记录和最后一条记录的唯一识别码生成。
s2、查询节点本地是否已有所述数据,若没有所述数据则新增所述数据于节点本地并记录新增时间,若有所述数据则更新数据并记录更新时间;
s3、通过差值算法计算对应时间和对应数据的值,若所述值不存在则新增值操作,若所述值存在则更新值,将最新值写入到指定位置,完成数据记录;
s4、当所述数据允许回退时,向全网广播所述数据进入回退状态并停止接收所述数据的请求,根据所述数据的变动差值合并计算所述数据回退请求发起时的值,检索数据合法性后开始回退数据;
数据回退的过程包括:首先提取所述数据的变动历史和变动差值,然后采用差值算法合并计算回退数据发起时对应数据的值,最后检查对应值下数据的合法性,
s5、当数据回退后,开始清除超过回退时间点的环境并广播数据恢复正常,开始正常接收数据处理。
通过上述s1-s5的操作,完成从记录数据到回退数据的整个过程,将整个应用的环境切换到数据回退指定时间点,以保证对应数据的相关环境都已回退到当时的值。
如图2-5所示,本发明在此基础上延伸提出一种用于区块链的差值回退系统,该系统包括数据管理器100、差值管理器200以及回退管理器300,
所述数据管理器100又包括了数据存储模块101、数据写入模块102和数据删除模块103,这三个模块在数据新增、删除以及改动过程中,相互配合工作,这三个模块的使用以及功能具体如下:
数据存储模块101:用于存储数据以及更新过的数据;
数据写入模块102:当需要进行数据写入时,由数据写入模块102调用差值管理器200中的差值记录模块202记录第一次差值变化并根据变化情况进行数据写入,因为是第一次差值变化记录,所以此时旧数据对应的记录为空,差值与新数据相等,数据新增和数据修改属于同一逻辑的写入方法,只是将旧数据设定为上一次的数据,其他操作环节是一致的;
数据删除模块103:根据差值记录模块202记录数据变化的情况进行删除值操作,在差值记录中旧数据记录为已删除。
所述差值管理器200又包括时间记录模块201、差值记录模块202以及差值计算模块203,这三个模块的使用以及功能具体如下:
时间记录模块201:用于记录数据发生变动的时间,获取发生变动的数据,并配合差值记录模块202记录具体的变动;
差值记录模块202:用于配合时间记录模块201记录具体的变动记录;
差值计算模块203:当对数据进行回退时,通过差值计算模块203找出回退时间线,并提取所述回退时间线记录的差值,然后合并计算出回退点的值,并将最终计算后的值返回给回退管理器300进行使用。
所述回退管理器300又包括状态管理模块301、数据更新模块302、环境清理模块303,这三个模块在需要进行数据回退时,将分别配合进行,其使用以及功能具体包括:
状态管理模块301:用于通知系统将进入数据回退状态,各个组件停止对所要进行回退的数据进行处理,也不要再向数据管理器100请求该项数据以及发送该项数据有关的数据,当有从外部发送来的相关数据,将进入缓冲区等待,直到回退管理器300完成回退操作并通知所有组件该项数据恢复正常为止,负责完成数据回退操作的前置准备工作;
数据更新模块302:用于向差值管理器200发送数据回退计算请求,并由差值管理器200返回对应数据回退的值,当回退管理器300校验确认无误后开始执行数据更新操作;
数据更新操作和数据管理器100中的数据写入模块102的操作是一致的,在本发明单列出来,是因为数据写入102模块仅用于数据回退中的处理,便于跟踪和排查问题,以防止避免陷入数据回退的死循环中;
环境清理模块303:当数据写入模块102完成数据更新后,通知环境清理模块303执行环境清理操作,将系统应用的环境切换到回退的时间点,以保证数据的环境都已回退到当时的值。
在该系统中,当数据管理器100接收到数据时校验数据的合法性,若本地未有该数据时通过差值管理器200记录数据发生时间以及该时间该数据对应的差值,当系统需要回退数据时,回退管理器300检查数据是否允许回退,当数据允许回退时通过差值管理器200检查历史差值记录并通知系统中各组件进入回退状态,数据管理器100停止接收数据请求,差值管理器200通过提取并计算对应数据的变动差值,由回退管理器300进行数据回退,所述数据管理器100、差值管理器200、回退管理器300互相交叉网状连接,可以互相进行数据访问。
以上所述,仅是本发明的较佳实施例而已,并非对本发明的技术范围作任何限制,故但凡依本发明的权利要求和说明书所做的变化或修饰,皆应属于本发明专利涵盖的范围之内。
1.一种用于区块链的差值回退方法,包括记录数据和回退数据,其特征在于,所述差值回退方法包括:
s1、启动节点,当节点接收数据后校验所述数据的合法性,若数据不合法则丢弃,若数据合法则进入下一环节;
s2、查询节点本地是否已有所述数据,若没有所述数据则新增所述数据于节点本地并记录新增时间,若有所述数据则更新数据并记录更新时间;
s3、通过差值算法计算对应时间和对应数据的值,若所述值不存在则新增值操作,若所述值存在则更新值,将最新值写入到指定位置,完成数据记录;
s4、当所述数据允许回退时,向全网广播所述数据进入回退状态并停止接收所述数据的请求,根据所述数据的变动差值合并计算所述数据回退请求发起时的值,检索数据合法性后开始回退数据;
s5、当数据回退后,开始清除超过回退时间点的环境并广播数据恢复正常,开始正常接收数据处理。
2.根据权利要求1所述的一种用于区块链的差值回退方法,其特征在于,所述数据校验的过程包括链柱模型校验和链环模型校验,
所述链柱模型校验,即校验所述链柱最后一个锁扣的唯一识别码的准确性,依次往前校验链柱茎上的锁扣唯一特征码的准确性即可;
所述链环模型校验,即校验链环锁扣的唯一识别码的准确性即可;所述锁扣的唯一识别码由第一条记录和最后一条记录的唯一识别码生成。
3.根据权利要求1所述的一种用于区块链的差值回退方法,其特征在于,所述数据回退的过程包括:首先提取所述数据的变动历史和变动差值,然后采用差值算法合并计算回退数据发起时对应数据的值,最后检查对应值下数据的合法性。
4.一种用于区块链的差值回退系统,其特征在于,所述系统包括:
数据管理器:用于管理业务数据,包括区块链的应用场景不同条件下的各类数据;
差值管理器:用于管理数据在时间线上的历史变化情况,当数据有发生变动时根据记录信息计算出差值;
回退管理器:用于管理数据回退,在数据回退时通过差值数据计算出回退数据发起时的数据,并将计算出的数据设为过去指定时间点的数据,
在该系统中,当数据管理器接收到数据时校验数据的合法性,若本地未有该数据时通过差值管理器记录数据发生时间以及该时间该数据对应的差值,当系统需要回退数据时,回退管理器检查数据是否允许回退,当数据允许回退时通过差值管理器检查历史差值记录并通知系统中各组件进入回退状态,数据管理器停止接收数据请求,差值管理器通过提取并计算对应数据的变动差值,由回退管理器进行数据回退,所述数据管理器、差值管理器、回退管理器互相交叉网状连接,可以互相进行数据访问。
5.根据权利要求4所述的一种用于区块链的差值回退系统,其特征在于,所述差值管理器包括:
时间记录模块:用于记录数据发生变动的时间,获取发生变动的数据,并配合差值记录模块记录具体的变动;
差值记录模块:用于配合时间记录模块记录具体的变动记录;
差值计算模块:当对数据进行回退时,通过差值计算模块找出回退时间线,并提取所述回退时间线记录的差值,然后合并计算出回退点的值,并将最终计算后的值返回给回退管理器进行使用。
6.根据权利要求4所述的一种用于区块链的差值回退系统,其特征在于,所述数据管理器包括:
数据存储模块:用于存储数据以及更新过的数据;
数据写入模块:当需要进行数据写入时,由数据写入模块调用差值管理器中的差值记录模块记录第一次差值变化并根据变化情况进行数据写入;
数据删除模块:根据差值记录模块记录数据变化的情况进行删除值操作,在差值记录中旧数据记录为已删除,
所述数据存储模块、数据写入模块和数据删除模块在增加、删除、修改过程中,相互配合工作。
7.根据权利要求4所述的一种用于区块链的差值回退系统,其特征在于,所述回退管理器包括:
状态管理模块:用于通知系统将进入数据回退状态,各个组件停止对所要进行回退的数据进行处理,负责完成数据回退操作的前置准备工作;
数据更新模块:用于向差值管理器发送数据回退计算请求,并由差值管理器返回对应数据回退的值,当回退管理器校验确认无误后开始执行数据更新操作;
环境清理模块:当数据更新模块完成数据更新后,通知环境清理模块执行环境清理操作,将系统应用的环境切换到回退的时间点,以保证数据的环境都已回退到当时的值。
技术总结