本发明涉及区块链技术领域,特别是一种用于区块链的时光回滚方法及系统。
背景技术:
在信用时代,区块链发挥着为社会提供基础信用服务的重要作用,由于其服务对象为一切大众,涉及的利益关系影响巨大,在服务的过程中,必将面对人们或故意或无意的非合法的处理请求,甚至是带着恶意的刻意攻击,区块链必将需要能具备在这些攻击下保护自己的能力。技术在飞速发展,虽然区块链的分布式网络已经基本让攻击者没有攻击的欲望,但若攻击者依然不计成本建立起一个与区块链分布式网络相同规模或更大规模的攻击网络对区块链网络发起攻击时,依然可能威胁区块链网络的安全,尤其是在技术更新迭代过程中不可预知的缺陷和漏洞。
目前,人们为了解决此类问题,采用的方法大多是给区块链网络的接入设立门槛,比如联盟链和私有链的方案是增加接入认证,其它还有的方法是建立中转跳板节点,以及设立防火墙等。这些方法在一定程度上缓解了外部攻击的有效性,但依然还是面临区块链网络内部之间的攻击,以及来自节点自身其它病毒或恶意程序的攻击。那么,如何解决区块链网络在开放共享的前提下,既能有效应对外部攻击,又能不担心网络内部或自身的攻击,成为一个急需解决的问题。
技术实现要素:
本发明旨在提出一种用于区块链的时光回滚方法及系统,在不改变区块链接入模式的情况下,实现了区块链节点对攻击免疫的作用。
一种用于区块链的时光回滚方法,所述回滚方法包括:
s1、启动节点并加载本地区块链,节点备份内存中的所有参数以及临时数据,通过备份在节点数据仓库中标记当前数据所处状态和关键业务数据,完成初始时间标记b1的创建;
s2、节点接收伪装成交易的攻击数据并校验攻击数据的有效性,若交易不合法则丢弃,若交易合法的同时开始创建时间标记b2并处理交易;
s3、节点按交易类型执行交易并获取交易结果,对交易结果进行检验,若不能获取交易结果,则回退节点到时间标记b2的状态,完成该笔交易的处理;
s4、检查节点是否有收到回退通知,若有收到回退通知则进行时间回滚,若没有收到回退通知则完成本次业务处理。
进一步的,s2中所述创建时间标记b2的过程包括:节点将本次交易相关参数、相关临时数据以及相关业务数据复制到临时空间,节点将数据处理空间切换到当前临时空间。
进一步的,s3中所述对交易结果进行检验的过程包括:提取交易处理结果并检验,若结果不合法则通知节点回退到时间标记b2并发出回退通知,若结果合法则检查节点是否正常,若节点不正常则通知节点回退到时间标记b2并发出回退通知,若节点正常则将交易结果原子数据存入节点数据仓库。
进一步的,s4中进行时间回滚的过程包括:提取回退通知请求,提取时间标记b2的信息和请求内容,根据请求内容提取内存状态数据和数据仓库里面的数据,将内存空间切换回处理前的空间状态,数据仓库回滚到处理前的状态,完成时间回滚。
本发明在上述方法的基础上还延伸提出一种用于区块链的时光回滚系统,所述系统包括:
状态管理器:用于管理节点内存状态,包括保存在内存中的时间回滚标记以及存放在节点数据仓库中的临时数据;
数据管理器:用于管理业务数据,当节点需要进行时光回滚的时候将业务数据提交到数据库;
时光管理器:用于管理节点的回退时间点,根据不同长度的时间标记准备足量存储空间,对应业务可靠性要求保存相对应的临时数据,
所述系统在启动节点后,时光管理器创建初始时间标记b1,状态管理器备份内存中所有参数以及临时数据,节点通过数据管理器备份在数据仓库中标记当前数据所处状态以及关键业务数据,当节点接收伪装成交易的攻击数据时,时光管理器创建时间标记b2,状态管理器将相关参数和临时数据复制到临时空间,并通过时光管理器将数据处理空间切换到当前临时空间;
当节点提取交易后,时光管理器进行交易合法性检验,当检验结果合法时由数据管理器将交易结果原子数据存入数据仓库,当检验结果不合法以及不能获取交易结果时由时光管理器进行时间回滚,完成本次业务处理,所述状态管理器、数据管理器和时光管理器三者之间互相交叉网状连接,可以互相进行数据访问。
进一步的,所述状态管理器包括:
参数管理模块:用于管理节点运行过程的参数,所述参数包括可变参数和不可变参数,在节点运行过程中,可变参数在进行时光回滚过程中将复制一份放入本次业务执行区域;
临时数据模块:用于保存本次业务处理过程中的数据,当业务执行出现错误时将丢弃临时数据,保持业务数据在处理前的状态;
空间切换模块:用于控制节点当前使用的状态数据,当业务处理过程中时使用临时的参数和临时的数据存储空间发生异常时,则直接将空间切换到处理前的空间。
进一步的,所述数据管理器包括:
原子数据模块:用于管理当前业务执行结束时与业务相关的最终数据,当业务处理完成后发现节点出现异常则丢弃该原子数据;
数据仓库模块:用于将原子数据模块处理的原子数据装入数据仓库,并为其它模块在业务处理过程中提供数据查询服务;
数据回滚模块:用于在节点异常时通知原子数据模块丢弃数据,以及将数据仓库中的数据回退到业务处理之前的状态。
进一步的,所述时光管理器包括:
时间标记模块:用于在特定时间记录时间标记,并记录对应引发的业务交易、时间标记的可用性和标记时间的大小;
标记内容模块:用于记录当前时间标记所使用的状态空间以及数据状态,并在时光回滚的时候提供状态空间中具体参数以及临时数据信息的查询;
时间回滚模块:用于在发生异常时将时间标记重置,通知数据回滚模块与空间切换模块将时间标记重置到指定的值。
本发明相比现有技术,具有如下优点:
(1)本发明重点是通过状态管理器、数据管理器以及时光管理器解决了对内存状态数据、磁盘数据的实时处理以及异常回滚时的处理问题;
(2)通过创建时间标记,当本次业务交易遇到数据攻击时保存之前合法的交易状态,一旦遇到交易攻击时可以切换临时空间,再经过一系列校验之后进行时间回滚,既能有效应对外部攻击,又能不担心网络内部或节点自身的攻击,更重要的是不会影响其他业务交易的正常进行。
附图说明
图1为本发明所提及用于区块链的时光回滚方法步骤的流程示意图;
图2是本发明所提及用于区块链的时光回滚系统的组成示意图;
图3是本发明所提及状态管理器的组成示意图;
图4是本发明所提及数据管理器的组成示意图;
图5时本发明所提及时光管理器的组成示意图,
其中:100状态管理器;200数据管理器;300时光管理器;101参数管理模块;102临时数据模块;103空间切换模块;201原子数据模块;202数据仓库模块;203数据回滚模块;301时间标记模块;302标记内容模块;303时间回滚模块
具体实施方式
下面结合附图和具体实施例对本发明作进一步详述。在此需要说明的是,下面所描述的本发明各个实施例中所涉及的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,区块链作为网络技术的一种,免不了会遭受网络数据的攻击,现有解决方法往往采用的是提高区块链网络的接入设立门槛,但是提高接入门槛的话就会造成其他可接入节点变少,不利于网络建设,还有一种就是建立中转跳板节点,以及设立防火墙等等,这些方法在一定程度上缓解了外部攻击的有效性,但依然避免不了区块链网络内部的攻击,以及来自节点自身其他病毒或恶意程序的攻击,为了解决上述问题,本发明提出一种用于区块链的时光回滚方法,所述方法过程包括:
s1、启动节点并加载本地区块链,节点备份内存中的所有参数以及临时数据,通过备份在节点数据仓库中标记当前数据所处状态和关键业务数据,完成初始时间标记b1的创建;
s2、节点接收伪装成交易的攻击数据并校验攻击数据的有效性,若交易不合法则丢弃,若交易合法的同时开始创建时间标记b2并处理交易;
优选的,所述创建时间标记b2的过程包括:节点将本次交易相关参数、相关临时数据以及相关业务数据复制到临时空间,节点将数据处理空间切换到当前临时空间。
s3、节点按交易类型执行交易并获取交易结果,对交易结果进行检验,若不能获取交易结果,则回退节点到时间标记b2的状态,完成该笔交易的处理;
优选的,所述对交易结果进行检验的过程包括:提取交易处理结果并检验,若结果不合法则通知节点回退到时间标记b2并发出回退通知,若结果合法则检查节点是否正常,若节点不正常则通知节点回退到时间标记b2并发出回退通知,若节点正常则将交易结果原子数据存入节点数据仓库。
s4、检查节点是否有收到回退通知,若有收到回退通知则进行时间回滚,若没有收到回退通知则完成本次业务处理。
优选的,进行时间回滚的过程包括:提取回退通知请求,提取时间标记b2的信息和请求内容,根据请求内容提取内存状态数据和数据仓库里面的数据,将内存空间切换回处理前的空间状态,数据仓库回滚到处理前的状态,完成时间回滚。
如图2-5所示,本发明在上述方法的基础上还提出一种用于区块链的时光回滚系统,所述系统包括:
状态管理器100:用于管理节点内存状态,包括保存在内存中的时间回滚标记以及存放在节点数据仓库中的临时数据。
优选的,所述状态管理器100包括:
参数管理模块101:用于管理节点运行过程中需要的一些参数,不可变参数存在在一个区域,可变参数放在一个区域,可变参数中对于本次可能涉及变动的参数将复制一份放入本次业务执行区域,用于本次业务处理过程中使用,如果在使用过程中发生意外则丢弃,如果正常则正常应用并更新到参数的正常保存区域;
临时数据模块102:用于保存本次业务处理过程中的数据,这些数据往往在处理前和处理后是不存在的,对于在多次业务处理中连续使用的临时数据则在单次业务处理过程前后保持不变,当业务在执行过程中出现意外时,将会丢弃这里的数据,从而保持业务数据保持在处理前的状态;
空间切换模块103:用于控制节点当前使用哪个区域的状态数据,在业务处理过程中时使用临时的参数和临时的数据存储空间,如果发生异常,则直接将空间切换到处理前的空间。
数据管理器200:用于管理业务数据,这些数据可能保存在业务临时区域,有些可能已经存入正式业务数据库,需要在适当的时机将临时数据提交到数据库,或进行回滚。
优选的,所述数据管理器200包括:
原子数据模块201:用于管理一笔业务执行结束时与业务相关的最终数据,这个数据在逻辑上是后续业务的基础,也是需要永久保存的数据,但是目前还未保存的数据,此时的数据已经从临时数据区域中完成处理,但还没有放入正式数据仓库中,原子数据模块201专门用于管理这之间的数据,当业务处理完成后发现节点出现异常,则这个原子数据将被丢弃,并不会被放入正式数据仓库中,只有一切正常时原子数据才被存入数据仓库;
数据仓库模块202:用于将原子数据模块201处理的原子数据装入数据仓库,并为其它模块在业务处理过程中提供数据查询服务;
数据回滚模块203:用于在节点异常时通知原子数据模块201丢弃数据,以及将数据仓库中的数据回退到业务处理之前的状态。
时光管理器300:用于管理节点的回退点,也就是在每一次进行处理动作前做的时间标记,根据上层业务的不同,这个时间点可能涉及的内容大小不同,保存的时间标记越多可能需要越大的存储空间,根据业务可靠性要求,需要不同长度的时间标记,最小需要保存一个单位的时间标记,理论上只要存储空间足够大,可以保存历史上所有的时间标记。
优选的,所述时光管理器300包括:
时间标记模块301:用于在特定时间记录时间标记,并指定是有哪笔业务处理引发,并记录时间标记的可用性以及大小;
标记内容模块302:用于记录当前时间标记所使用的状态空间以及数据状态,并在需要的时候提供状态空间中具体参数以及临时数据信息的查询;
时间回滚模块303:用于在发生异常时将时间标记重置,空通知数据回滚模块203与空间切换模块将时间标志重置到指定的值。
所述系统在启动节点后,时光管理器300创建初始时间标记b1,状态管理器100备份内存中所有参数以及临时数据,节点通过数据管理器200备份在数据仓库中标记当前数据所处状态以及关键业务数据,当节点接收伪装成交易的攻击数据时,时光管理器300创建时间标记b2,状态管理器100将相关参数和临时数据复制到临时空间,并通过时光管理器300将数据处理空间切换到当前临时空间;
当节点提取交易后,时光管理器300进行交易合法性检验,首先提取交易处理结果并检验,若结果不合法则通知节点回退到时间标记b2并发出回退通知,若结果合法则检查节点是否正常,若节点不正常则通知节点回退到时间标记b2并发出回退通知,若节点正常则将交易结果原子数据存入节点数据仓库,当检验结果合法时由数据管理器200将交易结果原子数据存入数据仓库,当检验结果不合法以及不能获取交易结果时由时光管理器300进行时间回滚,完成本次业务处理,时光管理器300在收到回退通知要求的时候,提取时间标记b2的信息和内容,再由状态管理器100根据内容提取内存状态数据,接着由数据管理器200根据内容提取数据仓库数据,接着状态管理器100将内存空间切换回处理前的空间,数据管理器200将数据仓库回滚到处理前的状态。
所述状态管理器100、数据管理器200和时光管理器300三者之间互相交叉网状连接,可以互相进行数据访问,解决了对内存状态数据、磁盘数据的实时处理以及异常回滚时的处理问题,通过创建时间标记,当本次业务交易遇到数据攻击时保存之前合法的交易状态,一旦遇到交易攻击时可以切换临时空间,再经过一系列校验之后进行时间回滚,既能有效应对外部攻击,又能不担心网络内部或节点自身的攻击,更重要的是不会影响其他业务交易的正常进行。
以上所述,仅是本发明的较佳实施例而已,并非对本发明的技术范围作任何限制,故但凡依本发明的权利要求和说明书所做的变化或修饰,皆应属于本发明专利涵盖的范围之内。
1.一种用于区块链的时光回滚方法,其特征在于,所述回滚方法包括:
s1、启动节点并加载本地区块链,节点备份内存中的所有参数以及临时数据,通过备份在节点数据仓库中标记当前数据所处状态和关键业务数据,完成初始时间标记b1的创建;
s2、节点接收伪装成交易的攻击数据并校验攻击数据的有效性,若交易不合法则丢弃,若交易合法的同时开始创建时间标记b2并处理交易;
s3、节点按交易类型执行交易并获取交易结果,对交易结果进行检验,若不能获取交易结果,则回退节点到时间标记b2的状态,完成该笔交易的处理;
s4、检查节点是否有收到回退通知,若有收到回退通知则进行时间回滚,若没有收到回退通知则完成本次业务处理。
2.根据权利要求1所述的一种用于区块链的时光回滚方法,其特征在于,s2中所述创建时间标记b2的过程包括:节点将本次交易相关参数、相关临时数据以及相关业务数据复制到临时空间,节点将数据处理空间切换到当前临时空间。
3.根据权利要求1所述的一种用于区块链的时光回滚方法,其特征在于,s3中所述对交易结果进行检验的过程包括:提取交易处理结果并检验,若结果不合法则通知节点回退到时间标记b2并发出回退通知,若结果合法则检查节点是否正常,若节点不正常则通知节点回退到时间标记b2并发出回退通知,若节点正常则将交易结果原子数据存入节点数据仓库。
4.根据权利要求1所述的一种用于区块链的时光回滚方法,其特征在于,s4中进行时间回滚的过程包括:提取回退通知请求,提取时间标记b2的信息和请求内容,根据请求内容提取内存状态数据和数据仓库里面的数据,将内存空间切换回处理前的空间状态,数据仓库回滚到处理前的状态,完成时间回滚。
5.一种用于区块链的时光回滚系统,其特征在于,所述系统包括:
状态管理器:用于管理节点内存状态,包括保存在内存中的时间回滚标记以及存放在节点数据仓库中的临时数据;
数据管理器:用于管理业务数据,当节点需要进行时光回滚的时候将业务数据提交到数据库;
时光管理器:用于管理节点的回退时间点,根据不同长度的时间标记准备足量存储空间,对应业务可靠性要求保存相对应的临时数据,
所述系统在启动节点后,时光管理器创建初始时间标记b1,状态管理器备份内存中所有参数以及临时数据,节点通过数据管理器备份在数据仓库中标记当前数据所处状态以及关键业务数据,当节点接收伪装成交易的攻击数据时,时光管理器创建时间标记b2,状态管理器将相关参数和临时数据复制到临时空间,并通过时光管理器将数据处理空间切换到当前临时空间;
当节点提取交易后,时光管理器进行交易合法性检验,当检验结果合法时由数据管理器将交易结果原子数据存入数据仓库,当检验结果不合法以及不能获取交易结果时由时光管理器进行时间回滚,完成本次业务处理,所述状态管理器、数据管理器和时光管理器三者之间互相交叉网状连接,可以互相进行数据访问。
6.根据权利要求5所述的一种用于区块链的时光回滚系统,其特征在于,所述状态管理器包括:
参数管理模块:用于管理节点运行过程的参数,所述参数包括可变参数和不可变参数,在节点运行过程中,可变参数在进行时光回滚过程中将复制一份放入本次业务执行区域;
临时数据模块:用于保存本次业务处理过程中的数据,当业务执行出现错误时将丢弃临时数据,保持业务数据在处理前的状态;
空间切换模块:用于控制节点当前使用的状态数据,当业务处理过程中时使用临时的参数和临时的数据存储空间发生异常时,则直接将空间切换到处理前的空间。
7.根据权利要求5所述的一种用于区块链的时光回滚系统,其特征在于,所述数据管理器包括:
原子数据模块:用于管理当前业务执行结束时与业务相关的最终数据,当业务处理完成后发现节点出现异常则丢弃该原子数据;
数据仓库模块:用于将原子数据模块处理的原子数据装入数据仓库,并为其它模块在业务处理过程中提供数据查询服务;
数据回滚模块:用于在节点异常时通知原子数据模块丢弃数据,以及将数据仓库中的数据回退到业务处理之前的状态。
8.根据权利要求5所述的一种用于区块链的时光回滚系统,其特征在于,所述时光管理器包括:
时间标记模块:用于在特定时间记录时间标记,并记录对应引发的业务交易、时间标记的可用性和标记时间的大小;
标记内容模块:用于记录当前时间标记所使用的状态空间以及数据状态,并在时光回滚的时候提供状态空间中具体参数以及临时数据信息的查询;
时间回滚模块:用于在发生异常时将时间标记重置,通知数据回滚模块与空间切换模块将时间标记重置到指定的值。
技术总结