一种区块链节点的数据恢复方法、装置及电子设备

文档序号:25420378发布日期:2021-06-11 21:31阅读:85来源:国知局
一种区块链节点的数据恢复方法、装置及电子设备

本发明涉及计算机技术领域,特别是涉及一种区块链节点的数据恢复方法、装置及电子设备。



背景技术:

随着区块链技术的不断发展,针对区块链的应用领域也越来越广泛。区块链内的多个节点,在链内进行数据传输时,可以通过各节点的服务器对该节点的数据进行传输。

由于节点数据在链内传输时,存在诸多导致传输中断的故障,例如服务器宕机等,因此,容易造成节点数据产生不可逆的损伤,如:信息缺失、连接中断等。那么,当节点数据传输发生故障时,如何在保证数据传输可靠性的同时,快速恢复数据传输,是一个亟待解决的技术问题。



技术实现要素:

本发明实施例的目的在于提供一种区块链节点的数据恢复方法、装置及电子设备,以实现在保证数据传输可靠性的同时,快速恢复数据传输的目的。具体技术方案如下:

第一方面,本发明实施例提供了一种区块链节点的数据恢复方法,应用于区块链中的目标节点的从服务器,所述目标节点的服务器还包括主服务器,所述方法包括:

在所述主服务器为所述目标节点传输数据的过程中,检测所述主服务器是否发生故障;

若是,确定所述主服务器未完成传输的目标数据;

向所述区块链中的各个其他节点的服务器发送所述从服务器的公钥,并获取所述各个其他节点的服务器的公钥;任一服务器的公钥为该服务器在为节点传输数据时,用于数据加密的密钥信息;

针对每一其他节点,利用该其他节点的服务器的公钥或所述从服务器的私钥,传输针对该其他节点的所述目标数据;其中,该其他节点的服务器用于在所述从服务器利用自身的私钥传输针对该其他节点的所述目标数据时,利用该从服务器的公钥配合所述从服务器传输所述目标数据,以及用于在所述从服务器利用该其他节点的服务器的公钥传输针对该其他节点的所述目标数据时,利用该其他节点的服务器的私钥配合所述从服务器传输所述目标数据。

可选地,所述向所述区块链中的各个其他节点的服务器发送所述从服务器的公钥,并获取所述各个其他节点的服务器的公钥,包括:

向所述区块链中的各个其他节点的服务器广播所述从服务器的公钥,以使所述各个其他节点的服务器,更新本地存储的节点路径信息;其中,所述节点路径信息包括所述区块链中各节点的服务器的公钥;

向所述目标节点发送节点路径请求,以使所述目标节点在接收到所述节点路径请求后,向所述从服务器发送本地存储的节点路径信息。

可选地,当传输针对该其他节点的所述目标数据包括:向该其他节点的服务器发送所述目标数据时,所述利用该其他节点的服务器的公钥,传输针对该其他节点的所述目标数据,包括:利用该其他节点的服务器的公钥对所述目标数据进行加密,并向该其他节点的服务器发送加密后的目标数据;

该其他节点的服务器具体用于利用该其他节点的服务器的私钥,对所述从服务器发送的所述目标数据进行解密,得到解密后的目标数据,并将所述解密后的目标数据发送至该其他节点,以使该其他节点在接收到所述解密后的目标数据时,本地存储所述解密后的目标数据。

可选地,当传输针对该其他节点的所述目标数据包括:接收该其他节点的服务器发送的所述目标数据时,所述利用该其他节点的服务器的公钥,传输针对该其他节点的所述目标数据,包括:

接收该其他节点的服务器发送的所述目标数据,并利用所述从服务器的私钥,对所接收的目标数据进行解密,得到解密后的目标数据,并将所述解密后的目标数据发送至所述目标节点,以使所述目标节点接收到所述解密后的目标数据时,在本地存储所述解密后的目标数据;

该其他节点的服务器具体用于利用所述从服务器的公钥,对待发送的所述目标数据进行加密,将加密后的数据发送给所述从服务器。

可选地,所述检测所述主服务器是否发生故障的方式包括:

向所述主服务器发送检测指令,以使所述主服务器根据所述检测指令,查询自身的数据传输状态,并向所述从服务器反馈携带有所述数据传输状态的查询结果;

当接收到的查询结果与所述检测指令对应的预设的目标结果不同时,则判定所述主服务器发生故障;其中,所述目标结果为表征所述主服务器数据传输正常时,针对所述检测指令查询结果。

可选地,所述检测指令包括如下指令中的一种或多种:用于检测是否能够接收所述各个其他节点的服务器发送的数据的指令;用于检测是否能够向所述各个其他节点的服务器发送数据的指令;以及用于检测是否已完成数据传输的指令。

可选地,在所述主服务器为所述目标节点传输数据之前,所述方法还包括:

利用预设的密钥生成算法,生成所述从服务器的用于进行数据传输的密钥,并向所述目标节点发送所述从服务器的密钥,以使所述目标节点在接收到所述从服务器的密钥后,在本地存储所述从服务器的密钥;

所述向所述区块链中的各个其他节点的服务器发送所述从服务器的公钥,包括:向所述目标节点发送公钥获取请求,以使所述目标节点从本地存储的密钥中获取所述从服务器的公钥,并反馈至所述从服务器;接收所述目标节点发送的所述从服务器的公钥,并向所述区块链中的各个其他节点的服务器发送所述从服务器的公钥。

第二方面,本发明实施例还提供了一种区块链节点的数据恢复装置,应用于区块链中的目标节点的从服务器,所述目标节点的服务器还包括主服务器,所述装置包括:

故障检测模块,用于在所述主服务器为所述目标节点传输数据的过程中,检测所述主服务器是否发生故障;

数据确定模块,用于若是,确定所述主服务器未完成传输的目标数据;

密钥获取装置,用于向所述区块链中的各个其他节点的服务器发送所述从服务器的公钥,并获取所述各个其他节点的服务器的公钥;任一服务器的公钥为该服务器在为节点传输数据时,用于数据加密的密钥信息;

数据传输模块,用于针对每一其他节点,利用该其他节点的服务器的公钥,传输针对该其他节点的所述目标数据,其中,该其他节点的服务器用于在传输针对该其他节点的所述目标数据的过程中,利用所述从服务器的公钥,配合所述从服务器传输所述目标数据。

第三方面,本发明实施例还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现任一所述的区块链节点的数据恢复方法步骤。

第四方面,本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现现任一所述的区块链节点的数据恢复方法步骤。

本发明实施例有益效果:

本发明实施例提供的方案,应用于区块链中的目标节点的从服务器,所述目标节点的服务器还包括主服务器,包括:在所述主服务器为所述目标节点传输数据的过程中,检测所述主服务器是否发生故障;若是,确定所述主服务器未完成传输的目标数据;向所述区块链中的各个其他节点的服务器发送所述从服务器的公钥,并获取所述各个其他节点的服务器的公钥;任一服务器的公钥为该服务器在为节点传输数据时,用于数据加密的密钥信息;针对每一其他节点,利用该其他节点的服务器的公钥,传输针对该其他节点的所述目标数据。可见,本方案当检测到主服务器发生故障时,从服务器向区块链中的各个其他节点的服务器发送自身的公钥,并利用各个其他节点的服务器的公钥,传输针对各个其他节点的目标数据,使得从服务器能够接替主服务器继续传输目标数据,从而快速恢复目标数据的传输,并且,通过利用自身的公钥和各个其他节点的服务器的公钥,可以提高目标数据在传输过程中的可靠性,从而实现在保证数据传输可靠性的同时,快速恢复数据传输的目的。

当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。

图1为本发明实施例的一种区块链节点的数据恢复方法的流程图;

图2为本发明实施例的节点服务器的结构式示意图;

图3为本发明实施例的为主服务器与从服务器的工作流程图;

图4为本发明实施例的为主服务器、从服务器与目标节点的各存储单元的通信示意图;

图5为本发明实施例的检测主服务器是否故障的工作流程图;

图6为本发明实施例的一种区块链节点的数据恢复装置的结构示意图;

图7为本发明实施例的一种电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。

为了实现在保证数据传输可靠性的同时,快速恢复数据传输的目的,本发明实施例提供了一种区块链节点的灾备方法、装置及电子设备。

需要说明的是,本发明实施例提供的一种区块链节点的灾备方法,应用于区块链中的目标节点的从服务器,该目标节点的服务器还包括主服务器。其中,区块链中的任一节点均可以存在多个服务器,该多个服务器中包括主服务器和从服务器,主服务器与从服务器可以具有相同的硬件结构和运算能力,所能实现的功能可以相同,如:与节点进行通信,并为节点传输数据。并且,主服务器和从服务器均可以通过网络,例如:本地局域网(localareanetwork,lan)、虚拟专用网络(virtualprivatenetwork,vpn)等,与区块链中各个其他节点的服务器通信。

下面结合附图对本发明实施例提供的一种区块链节点的灾备方法进行介绍。

如图1所示,本发明实施例提供的一种区块链节点的灾备方法,可以包括:

s101,在主服务器为目标节点传输数据的过程中,检测所述主服务器是否发生故障;

其中,目标节点可以为区块链中的任一节点,并且,目标节点内可以存在多个存储单元,示例性的,该多个存储单元可以用于存储该目标节点的传输数据、操作日志等。

可以理解的是,为了方便为目标节点传输数据,当主服务器为非故障状态时,可以由主服务器为该目标节点传输数据,并且,为了保证数据的传输,可以由从服务器在主服务器为目标节点传输数据的过程中,检测该主服务器是否发生故障。

其中,主服务器为目标节点传输数据的方式可以存在多种,例如:方式一:为目标节点向区块链中的各个其他节点的服务器发送数据;方式二:接收区块链中的各个其他节点的服务器发送的数据,并反馈至目标节点。其中,任一其他节点的服务器可以是当前为该其他节点传输数据的服务器,若该其他节点的主服务器未故障,则上述的该其他节点的服务器可以为该其他节点的主服务器,而该其他节点的主服务器故障,则上述的该其他节点的服务器可以为该其他节点的从服务器。

为了方案清楚,下面针对当为目标节点传输数据的方式为方式二时,该目标节点的主服务器与各个其他节点的服务器的交互过程进行介绍。

示例性的,假设区块链中的节点包括:目标节点、节点1和节点2,相应的交互过程可以包括:节点1的服务器和节点2的服务器分别利用目标节点的主服务器的公钥,对待发送数据进行加密,并向目标节点的主服务器发送加密数据;目标节点的主服务器分别接收节点1的服务器和节点2的服务器所传输的加密数据,并利用该主服务器自身的私钥对所接收的加密数据进行解密和验证,在验证通过后,将解密后的数据发送至目标节点,以使该目标节点接收到该解密后的目标数据时,本地存储该解密后的目标数据。

为了保证数据传输的可靠性,区块链中的各个节点在进行数据传输前,可以对待传输数据进行加密。本发明实施例中,对利用目标节点的主服务器的公钥,对待发送数据进行加密的实现方式,不做具体限定,例如:可以采用哈希算法等。那么,相应的,对所接收的加密数据进行解密和验证可以包括:哈希运算、计算梅克尔树根、更新时间戳等。为了方案清楚,后续结合另一实施例,针对各个节点的服务器的密钥生成过程进行介绍。

可以理解的是,目标节点的主服务器可以将上述数据传输过程反馈至目标节点,以使目标节点在本地生成针对上述数据传输过程的日志,并将该日志存储至该目标节点的任一存储单元内。

在主服务器为目标节点传输数据的过程中,检测该主服务器是否故障的方式可以存在多种,示例性的,在一种实现方式中,检测主服务器是否发生故障的方式,可以包括:向主服务器发送检测指令,以使该主服务器根据该检测指令,查询自身的数据传输状态,并向从服务器反馈携带有该数据传输状态的查询结果;

当接收到的查询结果与该检测指令对应的预设的目标结果不同时,则判定该主服务器发生故障;其中,该目标结果为表征该主服务器数据传输正常时,针对该检测指令的查询结果。

其中,该检测指令可以包括如下指令中的一种或多种:用于检测是否能够接收各个其他节点的服务器发送的数据的指令、用于检测是否能够向各个其他节点的服务器发送数据的指令,以及用于检测是否已完成数据传输的指令。此外,为了检测该主服务器是否按照与其他各节点共同协商的合约,执行相关程序,该检测指令还可以包括,用于检测该主服务器是否执行合约的指令。

在具体应用时,检测是否能够接收各个其他节点的服务器传输的数据,可以包括检测是否能够接收各个其他节点的服务器发送的广播数据,例如:各个其他节点服务器的公钥等,和共识信息,例如:待写入区块的数据等。并且,为了方便获取该主服务器当前执行该检测指令的情况,可以为该主服务器添加用于监控系统或程序运行的看门狗,该主服务器可以通过查看看门狗的信息,获取检测指令的执行情况。检测是否已完成数据传输,可以包括:检测该主服务器是否已向各个其他节点的服务器发送完数据,或者,是否已将所接收的数据进行本地存储,或者,是否存在遗漏数据等。

可以理解的是,考虑到主服务器可能在传输数据的任一时刻发生故障,那么,为了能够及时检测到该主服务器的故障,从服务器可以定时向该主服务器发送检测指令,例如:每2分钟发送一条检测指令,或者,每5分钟发送一条检测指令等等。此外,为了实现数据恢复,在从服务器检测主服务器是否发生故障的同时,主服务器也可以定时检测从服务器是否发生故障。并且,主服务器检测从服务器是否发生故障的方式,可以与从服务器检测主服务器是否发生故障的方式相同,在此不做赘述。

此外,考虑到服务器的故障类型可以存在多种,那么,当从服务器在发出检测指令后的预定时间内,若没有接受到主服务器反馈的查询结果,或者,主服务器在接收到检测指令后,程序无响应,也可以判定该主服务器发生故障。

可以理解的是,为了减少主服务器的内容占用,减小主服务器的负载,主服务器在查询自身的数据传输状态时,可以调用本地存储的日志,通过查询日志的记录,得到自身的数据传输状态。

为了保证查询结果的准确性,当查询结果与预设的目标结果不同时,从服务器在判定该主服务器发生故障前,可以再次向该主服务器发送该检测指令,以使该主服务器再次根据该检测指令,查询自身的数据传输状态,并向从服务器再次反馈携带有该数据传输状态的查询结果。当从服务器再次接收到的查询结果与预设的目标结果不同时,则判定该主服务器发生故障,若再次接收到的查询结果与预设的目标结果相同,则判定该主服务器未发生故障。

另外,为了保证数据传输,在从服务器检测主服务器是否发生故障的同时,主服务器也可以检测从服务器是否发生故障;在从服务器接替主服务器传输目标数据的过程中,且主服务器解除故障后,主服务器可以定时向从服务器发送检测指令,以检测从服务器是否发生故障,主服务器检测从服务器是否发生故障的过程,与从服务器检测主服务器是否发生故障的过程相似,在此不做赘述。

s102,若是,确定该主服务器未完成传输的目标数据;

为了方便在主服务器发生故障时,可以快速恢复数据传输,从服务器可以在判定该主服务器发生故障时,确定该主服务器未完成传输的目标数据。确定该主服务器未完成传输的目标数据的实现方式可以存在多种,示例性的,在一种实现方式中,确定该主服务器未完成传输的目标数据,可以包括:获取该主服务器的日志,从所获取的日志中,确定该主服务器未完成传输的目标数据。

可以理解的是,为了防止数据丢失或发生损坏,可以在检测到该主服务器发生故障时,控制该主服务器进入停止工作状态。

s103,向区块链中的各个其他节点的服务器发送该从服务器的公钥,并获取各个其他节点的服务器的公钥;

任一服务器的公钥为该服务器在为节点传输数据时,用于数据加密的密钥信息。

考虑到数据传输的可靠性,主服务器在与各个其他节点的服务器之间进行数据传输时,可以利用对应服务器的公钥,对数据进行加密,那么,在主服务器发生故障时,为了快速恢复数据传输,该从服务器可以向各个其他节点的服务器发送自身的公钥,并获取各个其他节点的服务器的公钥。

其中,每一服务器的密钥,即公钥和私钥,可以由该服务器生成,也可以由区块链中的管理服务器生成,该管理服务器可以为新增的用于为区块链中各节点服务器生成密钥的服务器,也可以为区块链中各个节点服务器中的任一个服务器。那么,示例性的,在一种实现方式中,针对每一服务器,当该服务器的密钥由该服务器生成时,生成该服务器的密钥方式可以包括:利用预设的密钥生成算法,生成用于该服务器的进行数据传输的密钥。其中,该预设的密钥生成算法可以为任一种能够生成密钥的算法,例如:rsa加密算法等。

可以理解的是,每一服务器在生成密钥后,可以将密钥进行本地存储,并将公钥通过网络发送至区块链中各个其他节点的服务器,每一服务器在接收到各个其他节点的服务器发送的公钥后,可以将接收到的公钥进行本地存储。此外,每一服务器为了方便存储和管理公钥,可以在本地生成用于存储各节点服务器的公钥的节点路径信息,相应的,该节点路径信息可以包括该区块链中各节点服务器的公钥。

另外,为了防止服务器发生宕机,导致无法获取服务器内存储的节点路径信息,即无法获取各节点的服务器的公钥,每一服务器可以在生成或更新节点路径信息后,向该服务器对应的节点发送该节点路径信息,以使该服务器对应的节点在本地的任一存储单元存储该节点路径信息。

示例性的,在一种实现方式中,向区块链中的各个其他节点的服务器发送该从服务器的公钥,并获取各个其他节点的服务器的公钥,可以包括:向区块链中的各个其他节点的服务器广播该从服务器的公钥,以使各个其他节点的服务器,更新本地存储的节点路径信息;向目标节点发送节点路径请求,以使该目标节点在接收到该节点路径请求后,向该从服务器发送本地存储的节点路径信息,其中,该节点路径信息包括该区块链中各节点的服务器的公钥。

示例性的,在另一种实现方式中,向区块链中的各个其他节点的服务器发送该从服务器的公钥,并获取各个其他节点的服务器的公钥,可以包括:

向所述区块链中的各个其他节点的服务器广播所述从服务器的公钥,以使所述各个其他节点的服务器,更新本地存储的节点路径信息,并在更新后向所述从服务器发送自身的公钥;其中,该节点路径信息包括该区块链中各节点的服务器的公钥;接收所述各个其他节点的服务器的公钥。

s104,针对每一其他节点,利用该其他节点的服务器的公钥或所述从服务器的私钥,传输针对该其他节点的目标数据。

其中,该其他节点的服务器用于在所述从服务器利用自身的私钥传输针对该其他节点的所述目标数据时,利用该从服务器的公钥配合所述从服务器传输所述目标数据,以及用于在所述从服务器利用该其他节点的服务器的公钥传输针对该其他节点的所述目标数据时,利用该其他节点的服务器的私钥配合所述从服务器传输所述目标数据。

可以理解的是,服务器传输数据的方式可以存在多种,例如,向其他服务器发送数据,或者接收其他服务器发送的数据。相应的,传输针对该其他节点的目标数据的方式可以存在多种,例如:传输针对该其他节点的所述目标数据可以包括,向该其他节点的服务器发送目标数据,或者,接收其他节点的服务器发送的目标数据。示例性的,当传输针对该其他节点的目标数据包括:向该其他节点的服务器发送目标数据时,在一种实现方式中,利用该其他节点的服务器的公钥,传输针对该其他节点的目标数据,可以包括:利用该其他节点的服务器的公钥,对该目标数据进行加密,并向该其他节点的服务器发送的加密后的目标数据。

示例性的,当传输针对该其他节点的目标数据包括:接收其他节点的服务器发送的目标数据时,在一种实现方式中,利用该从服务器的私钥,传输针对该其他节点的目标数据,可以包括:在接收到其他节点的服务器发送的加密后的目标数据时,该从服务器利用自身的私钥,对所接收到的目标数据进行解密,得到解密后的目标数据。

该其他节点的服务器具体用于利用该其他节点的服务器的私钥,对该从服务器发送的目标数据进行解密,得到解密后的目标数据,并在本地存储所述解密后的目标数据。

示例性的,在一种实现方式中,当传输针对该其他节点的目标数据包括:接收该其他节点的服务器发送的目标数据时,利用该其他节点的服务器的公钥,传输针对该其他节点的目标数据,可以包括:

接收该其他节点的服务器发送的所述目标数据,并利用该从服务器的私钥,对所接收的目标数据进行解密,得到解密后的目标数据,并将该解密后的目标数据发送至目标节点,以使该目标节点接收到该解密后的目标数据时,在本地存储该解密后的目标数据;

该其他节点的服务器具体用于利用该从服务器的公钥,对待发送的目标数据进行加密,将加密后的数据发送给该从服务器。

另外,考虑到各节点的存储单元中,可以存储有节点路径信息,那么,在具体应用时,该其他节点的服务器还可以具体用于在传输针对该其他节点的所述目标数据的过程中,利用本地存储的节点路径信息中的所述从服务器的公钥,配合所述从服务器执行所述目标任务。

可见,本实施例中,当检测到主服务器发生故障时,从服务器向区块链中的各个其他节点的服务器发送自身的公钥,并利用各个其他节点的服务器的公钥,传输针对各个其他节点的目标数据,使得从服务器能够接替主服务器继续传输目标数据,从而快速恢复目标数据的传输,并且,通过利用自身的公钥和各个其他节点的服务器的公钥,可以目标数据在传输过程中的可靠性,从而实现在保证数据传输可靠性的同时,快速恢复数据传输的目的。

可选地,在发明实施例中,在主服务器为目标节点传输数据之前,该方法还可以包括:

利用预设的密钥生成算法,生成该从服务器的用于进行数据传输的密钥,并向目标节点发送该从服务器的密钥,以使该目标节点在接收到该从服务器的密钥后,在本地存储该从服务器的密钥;

向区块链中的各个其他节点的服务器发送该从服务器的公钥,可以包括:

向该目标节点发送公钥获取请求,以使该目标节点从本地存储的密钥中获取该从服务器的公钥,并反馈至该从服务器;接收该目标节点发送的该从服务器的公钥,并向该区块链中的各个其他节点的服务器发送该从服务器的公钥。

可以理解的是,为了提高数据传输的可靠性,在主服务器为目标节点传输数据之前,可以为从服务器生成用于进行数据传输的密钥,从服务器的密钥生成过程,可以参见上述实施例中的步骤s103,在此不做赘述。另外,在为从服务器生成密钥后,该从服务器可以向目标节点发送自身的密钥,以使该目标节点在接收到该从服务器的密钥后,在本地存储该从服务器的密钥。

可见,本实施例中,当检测到主服务器发生故障时,从服务器向区块链中的各个其他节点的服务器发送自身的公钥,并利用各个其他节点的服务器的公钥,传输针对各个其他节点的目标数据,使得从服务器能够接替主服务器继续传输目标数据,从而快速恢复目标数据的传输,并且,通过利用自身的公钥和各个其他节点的服务器的公钥,可以目标数据在传输过程中的可靠性,从而实现在保证数据传输可靠性的同时,快速恢复数据传输的目的。

为了方案清楚,下面结合图2,对本发明实施例中节点的服务器的结构进行介绍。

如图2所示,节点的服务器可以包括一个或多个的中央处理器(cpu)210、存储器220、网络接口230和数据输入/输出接口240,其中,中央处理器210可以满足一个或多个线程,存储器220可以存在多个,且存储器220用于存放操作系统,操作系统220用于控制数据的输入输出和程序运行。此外,存储器220内可以存在多个执行模块,例如:密钥生成模块、故障检测模块、数据传输模块等,各模块的具体功能参见下述区块链节点的数据恢复装置实施例。网络接口230用于为节点传输数据,完成节点与服务器之间的数据传输,同时还可以用于与其他服务器的信息同步。输出接口240用于与节点传递数据处理结果,同时可以将操作信息输出并存放至本节点所存储的日志中。此外,中央处理器210、存储器220、网络接口230、数据输入/输出接口240经由主线连接。

下面结合图3、图4,对目标节点的主服务器、从服务器的工作流程进行介绍。其中,图3为主服务器、从服务器在为目标节点接收数据时的工作流程图,图4为主、从服务器与目标节点的各存储单元的通信示意图。

如图3至图4所示,目标节点的主服务器、从服务器在为目标节点接收数据时的工作流程可以包括如下步骤:

s301,主服务器接收各个其他节点的服务器发送的数据;从服务器检测主服务器在接收过程中是否发生故障;

s302,主服务器对接收的数据进行解密和验证,得到解密后的数据,并将操作记录发送至目标节点,以使目标节点生成对应的日志表,并在本地存储;从服务器同步主服务器的操作记录;

其中,主服务器在对接收的数据进行解密时,可以向目标节点发送节点路径请求,以使目标节点在接收到该节点路径请求后,向主服务器反馈节点路径信息;主服务器利用所接收到的节点路径信息,对所接收的数据进行解密和验证。

s303,主服务器将解密后的数据发送至目标节点,以使目标节点在接收到该解密后的数据后,将解密后的数据存储至用于存放区块数据的存储单元。

下面结合具体示例,对检测主服务器是否故障的具体流程进行介绍。如图5所示,检测主服务器是否故障,可以包括如下步骤:

s501,从服务器定时向主服务器发送检测指令;

s502,判断主服务器是否处于被检测阶段;

s503,若是,则等待至预定时间,返回步骤s501;

s504,若否,延时等待接收主服务器发送的携带该检测指令的查询结果;

s505,判断所接收到的查询结果与该检测指令对应的预设的目标结果是否相同;

s506,若是,则结束;

s507,若否,判定所述主服务器发生故障。

可以理解的是,在为目标节点传输数据时,主服务器和从服务器的工作状态,在主服务器发生故障时,存在工作状态的改变。下面结合具体示例,对主服务器和从服务器的不同工作状态的转变进行介绍。

主服务器和从服务器可以存在如下状态:①主,从服务器均正常工作;②主服务器损坏、从服务器正常;③从服务器损坏,主服务器正常;④主从服务器均故障,系统中断。那么,主服务器和从服务器的工作状态的转变可以包括:

①-②:主服务器发生故障后,上报错误信息至目标节点并切断数据输入输出,停止工作。从服务器发送错误警报,从服务器同步主服务器信息并向其他节点的发送该从服务器的公钥,以使其他节点的服务器完成相应更新。最后,从服务器代替主服务器工作,代表当前节点执行合约、参与共识和写入区块等链上数据处理与存储任务。

①-③:从服务器发生故障后,主服务器上报错误信息至目标节点,从服务器停止工作,同时切断与从服务器之间的同步网络。

②-①:开启主服务器并完成主服务器初始化,即为主服务器生成密钥,并向其他节点的服务器广播该主服务器的公钥等,主服务器向目标节点和其他节点的服务器发送公钥信息,以使其他节点的服务器完成相应更新。完成故障切换,从服务器进行数据同步。

③-①:开启从服务器并完成从服务器初始化,同步主服务器信息。

④-①:开启主从服务器并重新初始化目标节点。

②-④/③-④:主从服务器均故障后,主从服务器保存当前存储器数据,切断一切数据输入输出,关闭故障节点与链上其他节点的通信。并发出警报。

相对于上述方法实施例,如图6所示,本发明实施例提供了一种区块链节点的数据恢复装置,应用于区块链中的目标节点的从服务器,所述目标节点的服务器还包括主服务器,所述装置包括:

故障检测模块610,用于在所述主服务器为所述目标节点传输数据的过程中,检测所述主服务器是否发生故障;

数据确定模块620,用于若是,确定所述主服务器未完成传输的目标数据;

密钥获取模块630,用于向所述区块链中的各个其他节点的服务器发送所述从服务器的公钥,并获取所述各个其他节点的服务器的公钥;任一服务器的公钥为该服务器在为节点传输数据时,用于数据加密的密钥信息;

数据传输模块640,用于针对每一其他节点,利用该其他节点的服务器的公钥或所述从服务器的私钥,传输针对该其他节点的所述目标数据;其中,该其他节点的服务器用于在所述从服务器利用自身的私钥传输针对该其他节点的所述目标数据时,利用该从服务器的公钥配合所述从服务器传输所述目标数据,以及用于在所述从服务器利用该其他节点的服务器的公钥传输针对该其他节点的所述目标数据时,利用该其他节点的服务器的私钥配合所述从服务器传输所述目标数据。

可选地,所述密钥获取模块630包括:

密钥接收子模块,用于向所述区块链中的各个其他节点的服务器广播所述从服务器的公钥,以使所述各个其他节点的服务器,更新本地存储的节点路径信息;其中,所述节点路径信息包括所述区块链中各节点的服务器的公钥;向所述目标节点发送节点路径请求,以使所述目标节点在接收到所述节点路径请求后,向所述从服务器发送本地存储的节点路径信息。

可选地,所述数据传输模块640包括:第一传输子模块,用于当传输针对该其他节点的所述目标数据包括:向该其他节点的服务器发送所述目标数据时,利用该其他节点的服务器的公钥对所述目标数据进行加密,并向该其他节点的服务器发送加密后的目标数据;

该其他节点的服务器具体用于利用该其他节点的服务器的私钥,对所述从服务器发送的所述目标数据进行解密,得到解密后的目标数据,并将所述解密后的目标数据发送至该其他节点,以使该其他节点在接收到所述解密后的目标数据时,本地存储所述解密后的目标数据。

可选地,所述数据传输模块640包括:第二传输子模块,用于当传输针对该其他节点的所述目标数据包括:接收该其他节点的服务器发送的所述目标数据时,接收该其他节点的服务器发送的所述目标数据,并利用所述从服务器的私钥,对所接收的目标数据进行解密,得到解密后的目标数据,并将所述解密后的目标数据发送至所述目标节点,以使所述目标节点接收到所述解密后的目标数据时,在本地存储所述解密后的目标数据;

该其他节点的服务器具体用于利用所述从服务器的公钥,对待发送的所述目标数据进行加密,将加密后的数据发送给所述从服务器。

可选地,所述故障检测模块610具体用于,向所述主服务器发送检测指令,以使所述主服务器根据所述检测指令,查询自身的数据传输状态,并向所述从服务器反馈携带有所述数据传输状态的查询结果;

当接收到的查询结果与所述检测指令对应的预设的目标结果不同时,则判定所述主服务器发生故障;其中,所述目标结果为表征所述主服务器数据传输正常时,针对所述检测指令查询结果。

可选地,所述检测指令包括如下指令中的一种或多种:用于检测是否能够接收所述各个其他节点的服务器发送的数据的指令;用于检测是否能够向所述各个其他节点的服务器发送数据的指令;以及用于检测是否已完成数据传输的指令。

可选地,所述装置还包括:密钥生成模块,用于在所述主服务器为所述目标节点传输数据之前,利用预设的密钥生成算法,生成所述从服务器的用于进行数据传输的密钥,并向所述目标节点发送所述从服务器的密钥,以使所述目标节点在接收到所述从服务器的密钥后,在本地存储所述从服务器的密钥;

所述密钥获取模块630具体用于向所述目标节点发送公钥获取请求,以使所述目标节点从本地存储的密钥中获取所述从服务器的公钥,并反馈至所述从服务器;接收所述目标节点发送的所述从服务器的公钥,并向所述区块链中的各个其他节点的服务器发送所述从服务器的公钥。

本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,

存储器703,用于存放计算机程序;

处理器701,用于执行存储器703上所存放的程序时,实现任一区块链节点的数据恢复方法的步骤。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,ram),也可以包括非易失性存储器(non-volatilememory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,cpu)、网络处理器(networkprocessor,np)等;还可以是数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一区块链节点的数据恢复方法的步骤。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一区块链节点的数据恢复方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备及存储介质等实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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