区块链节点的控制方法、装置、存储介质及电子设备与流程

文档序号:18329419发布日期:2019-08-03 11:54阅读:167来源:国知局
区块链节点的控制方法、装置、存储介质及电子设备与流程

本公开涉及区块链技术领域,具体地,涉及一种区块链节点的控制方法、装置、存储介质及电子设备。



背景技术:

区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改、不可伪造、完全可追溯、去中心化的分布式账本。随着基于智能合约的分布式应用的快速发展,区块链系统中不断有新的节点加入。

相关技术中,当有新节点加入区块链系统中时,新节点需要同步完该区块链系统中的所有区块才启动广播、挖矿等各种业务功能。但是,随着区块链系统中交易与数据的增多,区块数量也越来越多,新节点同步区块链系统中的所有区块需要耗费较多时间,从而导致新节点从加入区块链系统到启动业务功能需要较长时间,区块链系统无法快速扩展。



技术实现要素:

本公开的目的是提供一种区块链节点的控制方法、装置、存储介质及电子设备,用于解决相关技术中存在的新节点从加入区块链系统到开始提供业务功能需要较长时间的问题。

为了实现上述目的,第一方面,本公开提供一种区块链节点的控制方法,

一种区块链节点的控制方法,应用于加入区块链系统的新节点,所述方法包括:

从所述区块链系统中的目标全节点查询所述区块链系统中区块号最大的目标区块,所述新节点与所述目标全节点连接;

将所述目标区块从所述目标全节点同步至所述新节点;

在将所述目标区块同步至所述新节点完成后,启动所述新节点已配置的在所述区块链系统中能够执行的业务功能。

第二方面,本公开还提供一种区块链节点的控制装置,应用于加入区块链系统的新节点,所述装置包括:

查询模块,用于从所述区块链系统中的目标全节点查询所述区块链系统中区块号最大的目标区块,所述新节点与所述目标全节点连接;

同步模块,用于将所述目标区块从所述目标全节点同步至所述新节点;

启动模块,用于在将所述目标区块同步至所述新节点完成后,启动所述新节点已配置的在所述区块链系统中能够执行的业务功能。

第三方面,本公开还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一项所述方法的步骤。

第四方面,本公开还提供一种电子设备,包括:

存储器,其上存储有计算机程序;

处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面中任一项所述方法的步骤。

通过上述技术方案,可以从区块链系统中的目标全节点查询区块链系统中区块号最大的目标区块,然后将目标区块从目标全节点同步至新节点,最后在将目标区块同步至新节点完成后,启动新节点已配置的在区块链系统中能够执行的业务功能。也即是说,本公开提供的区块链节点的控制方法可以在新节点同步完目标区块之后,启动新节点已配置的在区块链系统中能够执行的业务功能,相较于相关技术中的方案,新节点在加入区块链系统后可以快速提供业务功能,有利于区块链系统的快速扩展。

本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。

附图说明

附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:

图1是根据本公开示例性实施例示出的一种区块链节点的控制方法的流程图;

图2是根据本公开示例性实施例示出的一种区块链节点的控制方法的应用过程示意图;

图3是根据本公开示例性实施例示出的一种区块链节点的控制装置的框图;

图4是根据本公开示例性实施例示出的一种电子设备的框图。

具体实施方式

以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。

首先说明本公开实施例中涉及的技术名词。

全节点:具有区块链系统中所有数据的节点。

挖矿服务:区块链系统中节点产生新区块的业务功能。相关技术中提供挖矿服务时,需要节点具有全部的区块链数据,因此能够提供挖矿服务的通常是全节点。

广播服务:区块链系统中节点将数据广播至整个区块链系统的业务功能。

查询服务:用于查询区块链系统中区块数据、合约代码结果等数据的业务功能。

前向同步:按照区块的排列顺序从前往后同步数据。

后向同步:按照区块的排列顺序从后往前同步数据。

相关技术中,当有新节点加入区块链系统时,新节点需要同步完该区块链系统中的所有区块才启动广播、挖矿等各种业务功能。例如,区块链系统中包括区块1到区块n的多个区块,按照相关技术中的方案,新节点需要从区块1开始,按照区块排列顺序依次同步至区块n才能启动各种业务功能。

但是,随着区块链系统中交易与数据的增多,区块数量也越来越多,新节点同步区块链系统中的所有区块需要耗费较多时间,从而导致新节点从加入区块链系统到启动业务功能的过程较漫长,影响区块链系统的扩展。

为了解决上述技术问题,本公开实施例提供一种区块链节点的控制方法、装置、存储介质及电子设备,以使新节点在加入区块链系统后可以快速提供业务功能,使得区块链系统可以快速扩展。

图1是根据本公开一示例性实施例示出的一种区块链节点的控制方法的流程图。参照图1,该控制方法可以应用于加入区块链系统的新节点,包括:

步骤s101,从区块链系统中的目标全节点查询区块链系统中区块号最大的目标区块,其中,新节点与目标全节点连接。

示例地,目标全节点可以是一个,也可以是多个,本公开实施例对此不作限定。在目标全节点为一个的情况下,查询目标区块的过程可以是把该目标节点中区块号最大的区块作为目标区块。在目标全节点为多个的情况下,查询目标区块的过程可以是先从多个目标全节点分别查询区块号最大的区块,然后在这些查询到的区块中将区块号最大的区块确定为目标区块。

应当理解的是,本公开实施例中区块号最大的目标区块是指该区块链系统中具有最新数据的区块,因此为了保证查询到的目标区块是该区块链系统中具有最新数据的区块,即为了保证查询结果的准确性,目标全节点可以优选为多个。

步骤s102,将目标区块从目标全节点同步至新节点。

示例地,将目标区块从目标全节点同步至新节点可以是以目标区块的区块头的哈希树根遍历分支实现的,具体实现方式与相关技术中类似,这里不再赘述。或者,也可以按照其他的方式将目标区块从目标全节点同步至新节点,本公开实施例对此不作限定。

步骤s103,在将目标区块同步至新节点完成后,启动新节点已配置的在区块链系统中能够执行的业务功能。

示例地,将目标区块同步至新节点完成可以是将目标区块的全部数据同步至新节点完成,也可以是将目标区块的部分数据同步至新节点完成。对于前一种情况,可以是将目标区块中默克尔树的根所能遍历的数据同步至新节点完成后,启动新节点已配置的在区块链系统中能够执行的业务功能。对于后一种情况,可以是在开始将目标区块同步新节点时,先启动新节点已配置的查询业务功能,然后随着同步进程的继续,即将目标区块的部分数据同步至新节点完成后,启动新节点已配置的广播业务功能和挖矿业务功能。

示例地,新节点已配置的在区块链系统中能够执行的业务功能包括广播业务功能、挖矿业务功能和查询业务功能。也即是说,本公开实施例中,当将目标区块同步至新节点完成后,可以启动新节点提供的广播业务功能、挖矿业务功能和查询业务功能,相较于相关技术中,需要新节点同步完区块链系统中所有数据才提供上述业务功能的方案,本公开实施例的方法可以快速提供业务功能,有利于区块链系统的快速扩展。

在一种可能的方式中,启动新节点已配置的在区块链系统中能够执行的业务功能可以是先确定区块链系统中是否存在区块号大于目标区块的新区块,如果区块链系统中存在区块号大于目标区块的新区块,则将新区块中区块号最大的区块作为新的目标区块,并在将新的目标区块同步至新节点完成后,启动新节点已配置的在区块链系统中能够执行的业务功能。

在区块链系统中,随着交易数据的不断生成,区块也不断生成,因此为了保证新节点提供的业务功能的可靠性,即为了保证在启动业务功能时新节点同步的是具有最新数据的区块,可以在启动新节点的业务功能之前进一步判断目标区块是否为当前区块链系统中的最新区块。

示例地,可以先确定区块链系统中是否存在区块号大于目标区块的新区块。如果区块链系统中存在区块好大于目标区块的新区块,则说明目标区块不是当前区块链系统中的最新区块。在此种情况下,可以将该新区块作为新的目标区块,然后在将新的目标区块同步至新节点完成后,启动新节点已配置的在区块链系统中能够执行的业务功能,以此保证新节点同步的是区块链系统中的最新区块。

在其他的情况下,如果区块链系统中不存在区块号大于目标区块的新区块,则说明目标区块是当前区块链系统中的最新区块,那么可以直接启动对新节点已配置的在区块链系统中能够执行的业务功能。

在一种可能的情况下,启动新节点已配置的在区块链系统中能够执行的业务功能之后,可以当接收到交易时,确定新节点当前已同步的区块数据中是否包括核验该交易所需的数据,如果新节点当前已同步的区块数据包括核验该交易所需的数据,则对该交易执行广播业务功能和挖矿业务功能。

在本公开实施例中,在启动业务功能时,新节点同步的是区块链系统中目标区块的全部数据或部分数据,而不是区块链系统中的所有数据,因此新节点对接收到的交易执行的是受限的业务功能,即新节点可以对接收到的交易进行核验,当核验通过时再对该交易执行相应的业务功能。

例如,目标区块包括账户x和账户y的余额数据,且账户x的余额为10元,账户y的余额为20元。新节点在将目标区块同步至新节点完成后,即新节点当前已同步的区块数据包括账户x和账户y的余额数据的情况下,当新节点接收到账户x转账5元给账户y的转账交易时,新节点先确定当前已同步的区块数据中是否可以查询到账户x和账户y分别对应的余额数据,即新节点可以先确定当前已同步的区块数据中是否包括核验该转账交易的数据。

此种情况下,由于新节点当前已同步的区块数据包括账户x和账户y的余额,即新节点当前已同步的数据包括核验该交易所需的数据,因此新节点可以对该转账交易执行广播业务功能和挖矿业务功能。具体地,新节点可以将该转账交易广播至整个区块链系统。并且,新节点可以将该转账交易打包为一个新的区块,其中,该新的区块包括账户x余额为5以及账户y余额为25的数据。

通过上述方式,新节点在接收到交易时,可以对该交易进行核验,当核验通过时再对该交易执行相应的业务功能,对于核验不通过的交易则不执行业务功能,从而可以保证区块链系统中的数据安全性。

进一步,为了增强新节点执行业务功能的能力,在本公开实施例中还可以在启动新节点业务功能的过程中,将该区块链系统中除目标区块以外的其他区块同步至新节点,以使新节点最终可以同步完区块链系统中的所有区块。

在一种可能的方式中,可以是通过最长链机制将区块链系统中区块号大于目标区块的区块同步至新节点;以及如果区块链系统中区块号小于目标区块的多个区块的区块头通过有效性验证,则将区块头通过有效性验证的多个区块同步至新节点。

也即是说,将该区块链系统中除目标区块以外的其他区块同步至新节点可以是双向同步的过程,即同时进行前向同步和后向同步。其中,前向同步过程(对于区块号大于目标区块的区块的同步过程)可以通过最长链机制实现,其具体的实现过程与相关技术中类似,这里不再赘述。

后向同步过程(对于区块号小于目标区块的区块的同步过程),可以先对区块链系统中区块号小于目标区块的多个区块的区块头进行有效性验证,然后将区块头有效性验证通过的多个区块同步至新节点。

例如,新节点可以先从区块号小于目标区块的区块中获取多个连续的区块头,然后从区块链系统中的任一全节点获取与该多个连续的区块头具有相同标识(比如,相同区块号)的多个连续区块头,并将从全节点获取的多个连续的区块头与从区块号小于目标区块的区块中获取的多个连续的区块头进行比对。如果比对一致,则表明区块头的有效性验证通过,从而可以将该区块头对应的区块同步至新节点。

在另一种情况下,如果比对不一致,则表明区块头的有效性验证不通过,因此为了保证数据安全性,则不将该区块头对应的区块同步至新节点,并且,在下一次数据同步时可以舍弃区块头有效性验证没通过的区块,并从上一次区块头有效性验证通过的最后一个区块开始继续同步过程。例如,获取了多个连续的区块头分别为区块5、区块4、区块3,并且在进行区块头有效性验证时,区块4的区块头有效性验证没通过,则在下一次同步过程中,可以继续获取区块3、区块2、区块1进行有效性验证。

通过上述方式,可以通过双向同步将区块链系统中除目标区块以外的其他区块同步至新节点,使得新节点可以更加快速同步区块链系统中的所有区块,从而增强新节点执行业务功能的能力。

在另一种可能的方式中,当将区块链系统中除目标区块以外的其他区块同步至新节点时,如果新节点处于不可连接状态,则可以先在已同步至新节点的区块中确定区块号最小的已同步区块、以及当前区块链系统的目标区块,然后当新节点处于可连接状态时,如果区块链系统中存在区块号大于目标区块的新区块,则将新区块中区块号最大的区块与目标区块之间的所有区块同步至新节点,并将区块号小于已同步区块的所有区块同步至新节点。

在将区块链系统中除目标区块以外的其他区块同步至新节点的过程中,可能出现新节点掉线(处于不可连接状态)的情况。对于这种情况,当新节点重新上线(处于可连接状态)时,可以继续同步新节点掉线前未同步的数据,而对于新节点在掉线前已同步的数据则可以不用再重复数据同步的过程。并且,如果在新节点掉线的过程中,产生了新的区块,即区块链系统中存在区块号大于目标区块的新区块,那么可以将新区块中区块号最大的区块与目标区块之间的所有区块同步至新节点。

例如,新节点在同步了区块10、9、8、7、6的数据后掉线,在此种情况下,已同步至新节点的区块中区块号最小的已同步区块为区块6,当前区块链系统的目标区块为区块10,并且在新节点掉线的过程中产生了新的区块11、12、13。因此,当新节点重新上线时,可以将区块13(新区块中区块号最大的区块)与区块10(目标区块)之间的所有区块同步至新节点,并且可以继续将区块号小于区块6(已同步区块)的所有区块同步至新节点。

通过上述方式,可以在新节点从不可连接恢复到可连接的状态时,继续同步区块链系统中未同步的数据,而对于已同步的数据不用再次重复同步过程,加快了新节点的数据同步进程,使得新节点可以更加快速同步区块链系统中的所有数据,从而增强新节点执行业务功能的能力。

下面通过一个完整实施例对本公开的区块链节点的控制方法进行说明。

参照图2,节点a,b,c是包含当前区块链系统所有区块数据(区块1到区块n)的全节点,节点e是加入该区块链系统的新节点,区块n是当前区块链系统中区块号最大的目标区块。新节点e在加入该区块链系统后,可以从全节点a查询当前区块链系统中区块号最大的目标区块。在此种情况下,新节点可以查询到目标区块为区块n。然后,新节点e将该区块n从全节点a同步至新节点,在将区块n同步至新节点e完成后,可以启动新节点已配置的在区块链系统中能够执行的业务功能。

此时,如果产生了一条为“账户x转账5元给新账户y”的交易f,并将该交易f发送至新节点e。由于节点e已经同步了区块n中“账户x余额为10元”的数据,因此新节点e可以对该交易f进行核验,从而可以对该交易f执行业务功能。比如,新节点e可以将该交易f广播给相邻的全节点a和c。或者,新节点e可以将交易f打包为区块n+1并广播至整个区块链系统,在区块n+1具有“账户x余额为5”以及“账户y余额为5”的数据。

通过上述技术方案,可以在新节点同步完目标区块之后,启动新节点已配置的在区块链系统中能够执行的业务功能,即启动新节点提供的服务,相较于相关技术中的方案,新节点在加入区块链系统后可以快速提供服务,有利于区块链系统的快速扩展。

基于同一发明构思,本公开实施例还提供一种区块链节点的管理装置300,可以应用于加入区块链系统的新节点。参照图3,装置300可以包括:

查询模块301,用于从所述区块链系统中的目标全节点查询所述区块链系统中区块号最大的目标区块,所述新节点与所述目标全节点连接;

同步模块302,用于将所述目标区块从所述目标全节点同步至所述新节点;

启动模块303,用于在将所述目标区块同步至所述新节点完成后,启动所述新节点已配置的在所述区块链系统中能够执行的业务功能。

可选地,所述启动模块303用于确定所述区块链系统中是否存在区块号大于所述目标区块的新区块,当所述区块链系统中存在区块号大于所述目标区块的新区块时,将所述新区块中区块号最大的区块作为新的目标区块,并在将所述新的目标区块同步至所述新节点完成后,启动所述新节点已配置的在所述区块链系统中能够执行的业务功能。

可选地,所述装置300还包括:

前向同步模块,用于通过最长链机制将所述区块链系统中区块号大于所述目标区块的区块同步至所述新节点;以及

后向同步模块,用于当所述区块链系统中区块号小于所述目标区块的多个区块的区块头通过有效性验证时,将区块头通过有效性验证的多个区块同步至所述新节点。

可选地,所述装置300还包括:

确定模块,用于当将所述区块链系统中除所述目标区块以外的其他区块同步至所述新节点,且所述新节点处于不可连接状态时,在已同步至所述新节点的区块中确定区块号最小的已同步区块、以及当前区块链系统的目标区块;

同步执行模块,用于当所述新节点处于可连接状态,且所述区块链系统中存在区块号大于所述目标区块的新区块时,将所述新区块中区块号最大的区块与所述目标区块之间的所有区块同步至所述新节点,并将区块号小于所述已同步区块的所有区块同步至所述新节点。

可选地,所述新节点已配置的在所述区块链系统中能够执行的业务功能包括广播业务功能、挖矿业务功能和查询业务功能。

可选地,所述装置300还包括:

第二确定模块,用于在启动所述新节点已配置的在所述区块链系统中能够执行的业务功能之后,当接收到交易时,确定所述新节点当前已同步的区块数据中是否包括核验所述交易所需的数据;

执行模块,用于当所述新节点当前已同步的区块数据包括核验所述交易所需的数据时,对所述交易执行广播业务功能和挖矿业务功能。

关于上述实施例中的任一装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

通过上述任一控制装置,可以在新节点同步完目标区块之后,启动新节点已配置的在区块链系统中能够执行的业务功能,即启动新节点提供的服务,相较于相关技术中的方案,新节点在加入区块链系统后可以快速提供服务,有利于区块链系统的快速扩展。

基于同一发明构思,本公开实施例还提供一种电子设备,包括:

存储器,其上存储有计算机程序;

处理器,用于执行所述存储器中的所述计算机程序,以实现上述任一区块链节点的控制方法的步骤。

在一种可能的方式中,该电子设备的框图可以如图4所示。参照图4,该电子设备400可以包括:处理器401,存储器402。该电子设备400还可以包括多媒体组件403,输入/输出(i/o)接口404,以及通信组件405中的一者或多者。

其中,处理器401用于控制该电子设备400的整体操作,以完成上述的区块链节点的控制方法中的全部或部分步骤。存储器402用于存储各种类型的数据以支持在该电子设备400的操作,这些数据例如可以包括用于在该电子设备400上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如区块号、区块头等等。

该存储器402可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(staticrandomaccessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammableread-onlymemory,简称eprom),可编程只读存储器(programmableread-onlymemory,简称prom),只读存储器(read-onlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。

多媒体组件403可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器402或通过通信组件405发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口404为处理器401和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。

通信组件405用于该电子设备400与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(nearfieldcommunication,简称nfc),2g、3g、4g、nb-iot、emtc、或其他5g等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件407可以包括:wi-fi模块,蓝牙模块,nfc模块等等。

在一示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(applicationspecificintegratedcircuit,简称asic)、数字信号处理器(digitalsignalprocessor,简称dsp)、数字信号处理设备(digitalsignalprocessingdevice,简称dspd)、可编程逻辑器件(programmablelogicdevice,简称pld)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的区块链节点的控制方法。

在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的区块链节点的控制方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器402,上述程序指令可由电子设备400的处理器401执行以完成上述的区块链节点的控制方法。

通过上述电子设备或存储介质,可以在新节点同步完目标区块之后,启动新节点已配置的在区块链系统中能够执行的业务功能,即启动新节点提供的服务,相较于相关技术中的方案,新节点在加入区块链系统后可以快速提供服务,有利于区块链系统的快速扩展。

以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。

另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。

此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。

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