冻结区块链网络的方法、装置、电子设备及可读存储介质与流程

文档序号:23719809发布日期:2021-01-24 07:25阅读:108来源:国知局
冻结区块链网络的方法、装置、电子设备及可读存储介质与流程

[0001]
本发明涉及通信技术领域,特别是涉及一种冻结区块链网络的方法、装置、电子设备及可读存储介质。


背景技术:

[0002]
区块链技术构建在传输网络(也可称为区块链网络)之上,传输网络中的分布式节点设备(以下简称为节点)通过运行区块链程序,实现区块数据的生成、验证和上链保存,最终实现了数据防篡改机制,为业务开展提供了安全可信的技术新思路。
[0003]
区块链技术可应用至多种业务场景,例如金融领域、电子商务领域、商品或原材料溯源领域、电子存证领域等,由于区块链技术实现了数据防篡改机制,因此利用区块链技术开展业务,能解决业务参与各方之间的信任危机。
[0004]
在利用区块链网络开展业务期间,在一些情况下,可能会产生对区块链网络内的账户、资产或者智能合约的冻结需求。相关技术中,已经能实现对区块链网络内的账户、资产、智能合约等进行冻结。而在另一些情况下,也可能会产生对整个区块链网络进行冻结的需求。然而相关技术中,还难以有效地对整个区块链网络进行冻结。


技术实现要素:

[0005]
本发明实施例的目的在于提供一种冻结区块链网络的方法、装置、电子设备及可读存储介质,具体技术方案如下:
[0006]
在本发明实施例的第一方面,提供一种冻结区块链网络的方法,应用于所述区块链网络内的任一节点,所述方法包括:
[0007]
接收所述区块链网络内的排序节点所发送的交易包;
[0008]
检测所述交易包是否携带冻结标识;
[0009]
在所述交易包携带所述冻结标识的情况下,持续地从所述区块链网络之外的目标系统获取目标数据;
[0010]
在获取到所述目标数据之后,生成所述交易包对应的区块;
[0011]
在生成所述交易包对应的区块之后,开始处理所述交易包的下一个交易包。
[0012]
在本发明实施例的第二方面,提供一种冻结区块链网络的装置,应用于所述区块链网络内的任一节点,所述装置包括:
[0013]
交易包接收模块,用于接收所述区块链网络内的排序节点所发送的交易包;
[0014]
冻结标识检测模块,用于检测所述交易包是否携带冻结标识;
[0015]
目标数据获取模块,用于在所述交易包携带所述冻结标识的情况下,持续地从所述区块链网络之外的目标系统获取目标数据;
[0016]
区块生成模块,用于在获取到所述目标数据之后,生成所述交易包对应的区块;
[0017]
所述冻结标识检测模块,还用于在生成所述交易包对应的区块之后,开始处理所述交易包的下一个交易包。
[0018]
在本发明实施例的第三方面,提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
[0019]
所述存储器,用于存放计算机程序;
[0020]
所述处理器,用于在执行存储器上所存放的程序时,实现本发明任一实施例所提供的冻结区块链网络的方法。
[0021]
在本发明实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任一实施例所提供的冻结区块链网络的方法。
[0022]
本发明中,区块链网络的任一节点在接收到排序节点发送的交易包后,会检测该交易包是否携带冻结标识。如果该交易包携带冻结标识,则节点会持续地从区块链网络之外的目标系统获取目标数据。在获取到目标数据之后,节点为该交易包生成对应的区块。在为该交易包生成对应的区块之后,节点开始处理该交易包的下一个交易包。
[0023]
可见,在节点持续地从区块链网络之外的目标系统获取目标数据期间,由于节点暂时还没有获取到目标数据,因此节点还不能为当前处理的交易包生成对应的区块,进而也不能处理下一个交易包。如此,该节点相当于被冻结。而对于整个区块链网络而言,由于整个区块链网络的各节点因暂时未能获得目标数据而被冻结,因此相当于整个区块链网络被冻结。总言之,通过实施本发明,可以有效地实现对整个区块链网络的冻结。
附图说明
[0024]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,以下描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
[0025]
图1是本发明一实施例提出的交易处理方式的示意图;
[0026]
图2是本发明一实施例提出的执行跨链交易的示意图;
[0027]
图3是本发明一实施例提出的在执行跨链交易期间冻结区块链网络的示意图;
[0028]
图4是本发明一实施例提出的冻结区块链网络的方法的流程图;
[0029]
图5是本发明一实施例提出的冻结区块链网络的装置的示意图;
[0030]
图6是本发明一实施例提出的电子设备的示意图。
具体实施方式
[0031]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0032]
区块链技术构建在传输网络(也可称为区块链网络)之上,传输网络中的分布式节点设备(以下简称为节点)通过运行区块链程序,实现区块数据的生成、验证和上链保存,最终实现了数据防篡改机制,为业务开展提供了安全可信的技术新思路。
[0033]
相关技术中,在利用区块链网络开展业务时,可选地,在一些具体实施方式中,业务开展过程包括:物理世界中产生的真实数据被构建成区块链所支持的交易格式,并被发
布至区块链网络;区块链网络的各节点在接收到交易后,执行该交易,并根据该交易和该交易的执行结果生成区块;多个节点相互之间对各自生成的区块进行共识,并在达成共识的情况下,各节点将各自的区块追加至各自保存的区块链的末尾。
[0034]
需要说明的是,本发明在具体实现时,对于如何利用区块链网络开展业务,并不限定于上述具体实施方式。除上述具体实施方式以外,本领域技术人员也可采用其熟知的其他技术方案。
[0035]
可见,在相关技术中,区块链网络通过处理一个或多个与业务相关的交易,从而实现对业务的开展。可选地,在一些具体实施方式中,区块链网络可以按照图1所示的方式对交易进行处理,图1是本发明一实施例提出的交易处理方式的示意图。
[0036]
如图1所示,区块链网络包括多个节点,多个节点中具有一个排序节点,排序节点用于对交易进行排序打包以获得交易包,以及将交易包分发给区块链网络内的每个节点。
[0037]
其中,排序节点是从区块链网络的多个节点中选举出的。可选地,在一些具体实施方式中,可以按照以下方式选举排序节点:
[0038]
区块链网络内的任一节点会周期性地(例如每隔60秒)检测区块链网络中是否存在排序节点。如果不存在,或者现有排序节点发生故障,则该节点参与排序节点选举,并生成竞选提议(以下将竞选提议简称为proposal),该proposal中包括该节点的节点id。该节点将生成的proposal广播至区块链网络中,并在预设时间长度(例如5秒)内,收集其他节点各自广播的proposal。该节点根据每个proposal包括的节点id,判断自身的节点id是否为所有proposal包括的多个节点id中最小的节点id。如果该节点的节点id是最小的节点id,则该节点生成宣言(以下将宣言简称为declaration),并周期性地(例如每隔5秒)将该declaration广播至区块链网络,以声明自己为新的排序节点,该declaration中包括该节点的节点id。此外,如果该节点接收到其他节点广播的declaration,且其他节点广播的declaration中的节点id小于该节点的节点id,则该节点自动放弃排序节点身份。
[0039]
需要说明的是,本发明在具体实现时,对于如何选举排序节点,并不限定于上述具体实施方式。除上述具体实施方式以外,本领域技术人员也可采用其熟知的其他技术方案。
[0040]
如图1所示,当区块链网络内的任一节点接收到交易后,将接收到的交易提交给排序节点。排序节点对一段时间内接收的若干交易进行排序打包,以生成交易包。该交易包中包括排序节点在这段时间内排序打包的若干交易。
[0041]
此外,排序节点每生成一个交易包,就为该交易包赋予一个高度值,该交易包被赋予的高度值,等于各节点将来为该交易包生成的区块的区块高度。对于排序节点连续生成的多个交易包,多个交易包各自被赋予的高度值是连续的。
[0042]
为便于理解,假设排序节点在第一时刻生成了一个交易包,该交易包被赋予的高度值等于1056,则该交易包将来被各节点处理以生成相应区块后,区块的区块高度也等于1056。排序节点在第二时刻生成了另一个交易包,该交易包被赋予的高度值应该等于1057,该该交易包将来被各节点处理以生成相应区块后,区块的区块高度应该等于1057。
[0043]
以此类推,对于排序节点连续生成的多个交易包,多个交易包各自被赋予的高度值是连续的。且一个交易包被赋予的高度值,等于各节点将来为该交易包生成的区块的区块高度。可见,为了确保区块链的各个区块的区块高度是连续的,区块链网络的各节点在处理交易包时,会根据交易包的高度值,从低到高依次处理各个交易包。
[0044]
如图1所示,排序节点在每生成一个交易包后,会将该交易包分发给区块链网络内的每个节点(包括排序节点自身)。为简化附图,图1中仅示意性地示出了部分节点接收到交易包。
[0045]
如图1所示,每个节点在接收到交易包之后,一方面可以对接收到的交易包进行缓存。另一方面,从缓存的若干交易包(也即陆续接收到的多个交易包)中获取高度值最小的交易包,并处理该交易包。为简化附图,图1中仅示意性地示出了部分节点处理交易包的过程。
[0046]
其中,节点在处理交易包时,具体的处理过程包括:
[0047]
节点从交易包中依次读取交易,节点针对每读取到的一个交易,执行该交易以获得该交易的执行结果,节点将该交易及其执行结果记录至当前准备生成的区块的区块体中。如此,当节点依次读取完该交易包的所有交易,并执行完所有交易后,生成了该交易包对应的区块。此后,多个节点相互之间对各自生成的区块进行共识,并在达成共识的情况下,各节点将各自生成的区块追加至各自保存的区块链的末尾。
[0048]
可选地,在一些具体实施方式中,多个节点相互之间对各自生成的区块进行共识时,具体的共识方式可以是:每个节点针对其生成的区块的区块体计算根hash值,并将计算出的根hash值发送给其他各节点。相应地,每个节点也会接收到其他各节点发送的根hash值。每个节点将接收到的根hash值逐一与自身计算出的根hash值比较,如果超过预设数量的根hash值与自身计算出的根hash值相等,则节点确定其生成的区块通过共识。为便于理解,示例地,上述预设数量可以等于区块链网络的全部节点数量的51%。
[0049]
如图1所示,每个节点在为当前交易包生成区块之后,才开始处理当前交易包的下一个交易包。为便于理解,假设某一节点当前正在处理高度值等于1056的交易包,当该节点为该交易包生成区块之后,该节点才开始处理高度值等于1057的交易包。
[0050]
以上,本发明结合图1,提供了区块链网络处理交易的一种方式,该方式作为一种可选方式,不应理解为是对本发明的限定。还需要说明的是,上述相关技术中的部分或全部技术特征不等同于现有技术,上述相关技术中的部分或全部技术特征可能是本发明首次公开的技术特征。
[0051]
在利用区块链网络开展业务期间,在一些情况下,可能会产生对整个区块链网络进行冻结的需求。然而相关技术中,还难以有效地对整个区块链网络进行冻结。为此,本发明通过以下实施例,提出冻结区块链网络的方法、装置、电子设备及可读存储介质。
[0052]
例如,在两个区块链网络之间执行跨链交易期间,可能会产生对整个区块链网络进行冻结的需求。
[0053]
参考图2,图2是本发明一实施例提出的执行跨链交易的示意图。如图2所示,区块链网络收到跨链交易后,将该跨链交易发送给参与该跨链交易的另一区块链网络。
[0054]
可选地,在一些具体实施方式中,跨链交易携带跨链标识。跨链交易包括前置交易和后置交易两部分,其中,前置交易是指:跨链交易中需要在一个区块链网络内执行的部分,前置交易中携带需要执行该前置交易的区块链网络的网络id。后置交易是指:跨链交易中需要在另一个区块链网络内执行的部分,后置交易中携带需要执行该后置交易的区块链网络的网络id。
[0055]
为便于理解,示例地,假设银行a的账户a需要向银行b的账户b转账500元,则相应
跨链交易的前置交易包括以下两步:一个区块链网络的账户a向该区块链网络的主账户转账500元;然后从该区块链网络的主账户中销毁500元。后置交易包括以下两步:在另一个区块链网络的主账户中增加500元;然后所述另一个区块链网络的主账户向该区块链网络的账户b转账500元。其中,银行a参与对所述一个区块链网络的运维,银行b参与对所述另一个区块链网络的运维。
[0056]
第一区块链网络内的任一节点接收到一个交易后,检测该交易是否携带跨链标识。如果该交易携带跨链标识,则确定该交易为跨链交易。对于非跨链交易,节点可以按照图1所示的处理方式,将交易提交该排序节点。而对于跨链交易,节点可以将跨链交易提交给区块链网络内的每个节点,再由区块链网络内的指定节点将跨链交易发送给后置交易携带的网络id所对应的网络,也即发送给需要执行该后置交易的区块链网络。
[0057]
如图2所示,区块链网络对跨链交易中的前置交易进行预执行,获得前置交易的预执行结果。另一区块链网络对跨链交易中的后置交易进行预执行,获得后置交易的预执行结果。另一区块链网络将后置交易的预执行结果返回给区块链网络。
[0058]
其中,区块链网络对前置交易进行预执行,具体是指:区块链网络内的每个节点执行前置交易以获得前置交易的执行结果,每个节点将获得的执行结果记录至节点本身的非账本数据库。由于前置交易的执行结果被记录至非账本数据库,而不是被记录至账本数据库,因此前置交易的执行结果还没有被记录至区块链网络的区块链。
[0059]
同理地,另一区块链网络对后置交易进行预执行,具体是指:另一区块链网络内的每个节点执行后置交易以获得后置交易的执行结果,每个节点将获得的执行结果记录至节点本身的非账本数据库。由于后置交易的执行结果被记录至非账本数据库,而不是被记录至账本数据库,因此后置交易的执行结果还没有被记录至另一区块链网络的区块链。
[0060]
需要说明的是,上述对前置交易的预执行,相当于在区块链网络中预先演算一下前置交易能否被成功执行。同样地,上述对后置交易的预执行,相当于在另一区块链网络中预先演算一下后置交易能否被成功执行。如果区块链网络能成功执行前置交易,且另一区块链网络能成功执行后置交易,则区块链网络的各节点后续需要将记录在非账本数据库中的前置交易执行结果记录至区块链中,另一区块链网络的各节点后续需要将记录在非账本数据库中的后置交易执行结果记录至区块链中。
[0061]
可见,在区块链网络预执行前置交易之后,以及在前置交易的执行结果被记录至区块链之前,需要对区块链网络进行冻结。其目的是防止发生以下情况:
[0062]
区块链网络成功执行了前置交易,并将前置交易的执行结果记录至非账本数据库,然而在前置交易的执行结果被记录至区块链之前,与前置交易相关的账户再次发生资产转出交易,导致该账户的余额不足以支撑前置交易的执行。如果后续仍然将前置交易的执行结果记录至区块链,则最终会导致双花问题。
[0063]
同样地,在另一区块链网络预执行后置交易之后,以及在后置交易的执行结果被记录至区块链之前,需要对另一区块链网络进行冻结。
[0064]
对于如何对区块链网络进行冻结,请参考下文,此处暂不赘述。
[0065]
此外,如图2所示,区块链网络在接收到另一区块链网络返回的后置交易的预执行结果后,将前置交易的预执行结果、后置交易的预执行结果以及跨链交易发送给公共区块链网络。公共区块链网络根据前置交易的预执行结果和后置交易的预执行结果,判断前置
交易和后置交易是否均预执行成功。若是,则公共区块链网络执行跨链交易,并将跨链交易的执行结果返回给两个区块链网络,使得区块链网络将前置交易的预执行结果记录至区块链,使得另一区块链网络将后置交易的执行结果记录至区块链。
[0066]
其中,公共区块链网络对跨链交易的执行,相当于对跨链交易进行了见证。个人用户或者银行用户可以通过查询公共区块链网络的区块链,以证实前置交易和后置交易分别在所述区块链网络和另一区块链网络内执行过。
[0067]
需要说明的是,文中部分内容所述的“前置交易的预执行结果”,也即是预执行前置交易后记录至非账本数据库的执行结果,文中“前置交易的预执行结果”和“前置交易的执行结果”,实际指代的是相同概念。同理地,“后置交易的预执行结果”,也即是预执行后置交易后记录至非账本数据库的执行结果,文中“后置交易的预执行结果”和“后置交易的执行结果”,实际指代的是相同概念。
[0068]
如前所述,在区块链网络预执行前置交易之后,以及在前置交易的执行结果被记录至区块链之前,需要对区块链网络进行冻结。为了实现对区块链网络的冻结,参考图3,图3是本发明一实施例提出的在执行跨链交易期间冻结区块链网络的示意图。
[0069]
如图3所示,区块链网络内的任一节点在接收到跨链交易后,将跨链交易提交给区块链网络内的每个节点。
[0070]
可选地,在一些具体实施方式中,区块链网络内的若干投票节点还会对跨链交易进行投票,以表征该投票节点是否同意执行该跨链交易。区块链网络的指定节点将跨链交易以及若干投票,发送给另一区块链网络。另一区块链网络的投票节点对跨链交易进行投票,另一区块链网络的指定节点将跨链交易以及两个区块链网络各自的若干投票,发送给公共区块链网络。
[0071]
公共区块链网络接收到跨链交易以及两个区块链网络各自的若干投票后,根据两个区块链网络各自的若干投票,判断两个区块链网络是否均同意执行跨链交易。公共区块链网络将判断结果和跨链交易,记录至公共区块链网络新生成的区块体中。此外,区块链网络内的每个节点还会持续地同步公共区块链网络所新生成的公共区块。
[0072]
其中,公共区块链网络在判断两个区块链网络是否均同意执行跨链交易时,具体地,如果区块链网络超过一半的投票同意执行跨链交易,则确定该区块链网络同意执行跨链交易。如果另一区块链网络超过一半的投票同意执行跨链交易,则确定该另一区块链网络同意执行跨链交易。
[0073]
为简化附图,图3中未示出投票过程、公共区块链网络的判断过程、以及节点同步公共区块的过程。
[0074]
如图3所示,区块链网络的排序节点在特定情况下,会自动打包两个连续的交易包,并将这两个交易包发送给区块链网络的每个节点(包括排序节点自身,为简化附图,图3中未示出排序节点自身接收交易包的过程)。两个连续的交易包均不包含交易,其中,前一个交易包携带预执行标识,后一个交易包携带目标标识和冻结标识。为便于描述,下文及图3中将所述前一个交易包简称为第一交易包,将所述后一个交易包简称为第二交易包。
[0075]
可选地,在一些具体实施方式中,排序节点在以下特定情况下,会自动打包两个连续的交易包:当排序节点同步到的公共区块(假设该公共区块为区块a)中记录有判断结果,且该判断结果表征两个区块链网络均同意执行跨链交易时,排序节点响应于该判断结果,
自动打包两个连续的交易包。其中,第一交易包携带预执行标识,第二交易包携带冻结标识。此外,第二交易包还携带上述公共区块a的区块高度,该区块高度作为所述目标标识。
[0076]
如图3所示,区块链网络的每个节点在接收到两个交易包后,按照两个交易包的高度值顺序,首先处理第一交易包。节点在处理第一交易包期间,当节点检测到第一交易包携带预执行标识时,节点为该交易包生成一个区块。
[0077]
在为第一交易包生成区块之后,节点执行预先接收的跨链交易的前置交易,并获得前置交易的执行结果。节点将该执行结果记录至非账本数据库,并且节点将前置交易的执行结果提交给区块链网络的排序节点。
[0078]
排序节点在接收到前置交易的执行结果和另一区块链网络提交的后置交易的执行结果后,将跨链交易、前置交易的执行结果、后置交易的执行结果以及上述公共区块a的区块高度,发送给公共区块链网络。为简化附图,图3中未示出排序节点向公共区块链网络发送上述信息的过程。
[0079]
公共区块链网络根据前置交易的执行结果和后置交易的执行结果,判断前置交易和后置交易是否均预执行成功。若是,则公共区块链网络执行跨链交易,并将跨链交易的执行结果记录至新生成的公共区块(假设该公共区块为区块d)中。此外,公共区块链网络还会将上述公共区块a的区块高度记录至最新生成的公共区块d中。
[0080]
如图3所示,在为第一交易包生成区块之后,节点开始处理第二交易包。节点在处理第二交易包期间,当节点检测到第二交易包携带冻结标识时,表示整个区块链网络需要被冻结。
[0081]
具体实现时,当节点检测到第二交易包携带冻结标识时,节点从第二交易包中进一步读取出目标标识(也即是上述公共区块a的区块高度)。此后,节点针对同步到的每个公共区块,检测该公共区块是否携带公共区块a的区块高度。如此,当节点持续地检测每个公共区块是否携带目标标识(也即是上述公共区块a的区块高度)期间,由于节点一直处于处理第二交易包的状态,而不能处理第二交易包的下一个交易包,因此节点相当于被冻结。而对于整个区块链网络而言,由于整个区块链网络的各节点均被冻结,因此相当于整个区块链网络被冻结。图3中,粗虚线框所框示的阶段,也即是整个区块链网络被冻结的阶段。
[0082]
当节点检测到某一公共区块携带上述公共区块a的区块高度时,节点根据前置交易的执行结果,为第二交易包生成区块。
[0083]
具体实现时,当节点检测到某一公共区块携带上述公共区块a的区块高度后,节点从预先同步到的公共区块a中获取跨链交易,并执行该跨链交易的前置交易,以及将前置交易的执行结果作为第二交易包所对应的区块数据,从而为第二交易包生成区块。或者,当节点检测到某一公共区块携带上述公共区块a的区块高度后,节点从非账本数据库中读取相应前置交易的执行结果,并将该执行结果作为第二交易包所对应的区块数据,从而为第二交易包生成区块。
[0084]
如图3所示,在为第二交易包生成区块之后,节点开始处理第二交易包的下一个交易包。如此,当节点开始处理该第二交易包的下一个交易包时,相当于节点被解冻。而对于整个区块链网络而言,由于整个区块链网络的各节点均解冻,因此相当于整个区块链网络被解冻。
[0085]
以上,本发明通过若干实施例,提出了在执行跨链交易的场景下,冻结区块链网络
的方式。以下,本发明通过另一些实施例,提出在一般场景下,冻结区块链网络的普遍方式。需要说明的是,以下实施例和以上实施例之间可以相互参照。
[0086]
参考图4,图4是本发明一实施例提出的冻结区块链网络的方法的流程图,该方法应用于区块链网络内的任一节点。如图4所示,该方法包括以下步骤:
[0087]
步骤s41:接收所述区块链网络内的排序节点所发送的交易包。
[0088]
步骤s42:检测所述交易包是否携带冻结标识。
[0089]
可选地,在一些具体实施方式中,节点可以通过运行一个线程,用于接收排序节点陆续发送的交易包,并缓存这些交易包。节点可以通过运行另一个线程,用于从缓存的若干交易包中获取高度值最小的交易包,并处理该交易包,以及在处理完该交易包后,再从缓存的若干交易包中重新获取下一个高度值最小的交易包。对于处理交易包的具体过程,也即是本发明中步骤s42、步骤s43以及步骤s44所述的过程。
[0090]
可选地,在另一些具体实施方式中,节点也可以在每接收到一个交易包时,就立即开始处理该交易包。
[0091]
本发明中,排序节点可以是从区块链网络的多个节点中定期选举出的节点。或者,排序节点也可以是从区块链网络的多个节点中预先指定的节点。本发明对排序节点的确定方式不做限定。
[0092]
本发明中,冻结标识的形式可以是:预定字符、预定数字、由预定字符所组成的字符串、或者具有预定格式的字符串。需要说明的是,本发明对冻结标识的具体形式不做限定。
[0093]
步骤s43:在所述交易包携带所述冻结标识的情况下,持续地从所述区块链网络之外的目标系统获取目标数据。
[0094]
可选地,在一些具体实施方式中,所述区块链网络之外的目标系统可以是另一个区块链网络。如前所述,例如该目标系统可以是公共区块链网络。或者,例如该目标系统也可以是其他区块链网络。
[0095]
可选地,在一些具体实施方式中,所述区块链网络之外的目标系统也可以是非区块链网络,例如可以是中心化业务系统、用户终端设备、服务器集群、或者管理员终端等。以中心化业务系统为例,在步骤s43中,区块链网络的节点持续地从中心化业务系统获取目标数据。在获取到中心化业务系统的目标数据之前,区块链网络的节点不会执行下述步骤s44,因而也不会处理下一个交易包中的交易,整个区块链网络相当于处于冻结状态。如此,中心化业务系统何时生成并发送目标数据,决定了区块链网络的冻结时长。
[0096]
本发明中,节点持续地获取目标数据。所谓“持续”,在一些具体实施方式中,节点可以周期性地向目标系统发送数据获取请求,直至目标系统返回目标数据。或者,在另一些具体实施方式中,节点持续监听其预定接口,直至预定接口接收到目标系统发送的目标数据。需要说明的是,本发明不限定节点持续向目标系统获取目标数据的方式。
[0097]
本发明中,节点所需获取的目标数据,可以是:事物的处理结果、事物的处理凭证、指令信息、提示信息、或者其他区块链网络所产生的包含目标标识的区块等。
[0098]
步骤s44:在获取到所述目标数据之后,生成所述交易包对应的区块。
[0099]
可选地,在一些具体实施方式中,节点在获取到目标数据之后,节点响应于该目标数据的获得,开始执行交易包中的交易。节点将交易和交易的执行结果,作为该交易包所对
应的区块数据,从而为该交易包生成区块。
[0100]
可选地,在另一些具体实施方式中,如前所述,携带冻结标识的交易包不包含交易。节点在获取到目标数据之后,从非账本数据库中读取预先存储的预执行结果,并将该预执行结果作为该交易包所对应的区块数据,从而为该交易包生成区块。
[0101]
可选地,在又一些具体实施方式中,节点在获取到目标数据之后,还可以将目标数据作为该交易包所对应的区块数据,从而为该交易包生成区块。
[0102]
步骤s45:在生成所述交易包对应的区块之后,开始处理所述交易包的下一个交易包。
[0103]
具体实现时,节点在生成当前交易包对应的区块之后,开始检测下一个交易包是否携带冻结标识(也即针对下一个交易包执行上述步骤s42),从而开启对下一个交易包的处理。
[0104]
或者,节点在生成当前交易包对应的区块之前,已经针对下一个交易包执行了上述步骤s42。如果下一个交易包未携带冻结标识,则节点在生成当前交易包对应的区块之后,开始执行下一个交易包所包含的交易。
[0105]
总之,节点在为当前交易包生成区块之前,不会执行下一个交易包中的交易,从而达到冻结区块链网络的效果。
[0106]
本发明中,区块链网络的任一节点在接收到排序节点发送的交易包后,会检测该交易包是否携带冻结标识。如果该交易包携带冻结标识,则节点会持续地从区块链网络之外的目标系统获取目标数据。在获取到目标数据之后,节点为该交易包生成对应的区块。在为该交易包生成对应的区块之后,节点开始处理该交易包的下一个交易包。
[0107]
可见,在节点持续地从区块链网络之外的目标系统获取目标数据期间,由于节点暂时还没有获取到目标数据,因此节点还不能为当前处理的交易包生成对应的区块,进而也不能处理下一个交易包。如此,该节点相当于被冻结。而对于整个区块链网络而言,由于整个区块链网络的各节点因暂时未能获得目标数据而被冻结,因此相当于整个区块链网络被冻结。总言之,通过实施本发明,可以有效地实现对整个区块链网络的冻结。
[0108]
可选地,在一些具体实施方式中,如果通过上述步骤s42的检测,确定交易包未携带冻结标识,则可以直接生成该交易包对应的区块。其中,生成区块的方式可以是:如前所述,读取该交易包中的交易,执行读取到的交易以获得执行结果,将交易和执行结果作为该交易包对应的区块数据,从而为该交易包生成区块。同样地,在为该交易包生成区块之后,开始处理该交易包的下一个交易包。
[0109]
可选地,在一些具体实施方式中,所述目标数据用于表征:所述区块链网络之外的另一区块链网络已经成功预执行第一目标交易。如前所述,在执行跨链交易的场景下,所述第一目标交易可以是跨链交易中的后置交易。
[0110]
在执行上述步骤s44时,步骤s44具体包括:在获取到所述目标数据之后,执行第三目标交易,得到第三目标交易的执行结果;根据该执行结果,生成所述交易包对应的区块;其中,所述第三目标交易是与所述第一目标交易相关联的交易。如前所述,在执行跨链交易的场景下,所述第三目标交易可以是跨链交易中的前置交易。
[0111]
或者,在执行上述步骤s44时,步骤s44具体包括:在获取到所述目标数据之后,获取预先存储的预执行结果;根据该预执行结果,生成所述交易包对应的区块;其中,所述预
执行结果是节点本身预执行第二目标交易后得到的执行结果,所述第二目标交易是与所述第一目标交易相关联的交易。如前所述,在执行跨链交易的场景下,所述第二目标交易可以是跨链交易中的前置交易。
[0112]
示例地,如前所述,所述目标数据可以是公共区块链网络的包含目标标识的公共区块。节点在同步到包含目标标识的公共区块之后,从非账本数据库中读取预先存储的预执行结果,将该预执行结果作为该交易包所对应的区块数据,从而为该交易包生成区块。
[0113]
或者示例的,所述目标数据可以是所述另一区块链网络发送的提示信息,该提示信息是所述另一区块链网络在成功预执行第一目标交易后发出的信息。节点在接收到另一区块链网络发出的提示信息后,从非账本数据库中读取预先存储的预执行结果,将该预执行结果作为该交易包所对应的区块数据,从而为该交易包生成区块。
[0114]
可选地,在一些具体实施方式中,为了预执行第二目标交易,包括以下步骤:执行所述第二目标交易,得到所述第二目标交易的执行结果;将所述执行结果记录至节点本身的非账本数据库。其中,非账本数据库是指:与区块链无关的数据库。由于本发明将预执行第二目标交易的执行结果记录在非账本数据库中,相当于暂时还没有将第二目标交易的执行结果上链保存。而当节点获取到目标数据之后,也即确定另一区块链网络已经成功预执行第一目标交易之后,才将第二目标交易在非账本数据库中的执行结果保存至区块链中。
[0115]
具体实现时,如前所述,当节点接收到所述交易包的前一个交易包,且检测到所述前一个交易包携带预执行标识的情况下,生成所述前一个交易包对应的区块。在生成所述前一个交易包对应的区块之后,节点执行预先存储的所述第二目标交易。节点将第二目标交易的执行结果记录至节点本身的非账本数据库。
[0116]
可选地,在一些具体实施方式中,如前所述,携带所述冻结标识的所述交易包还携带目标标识;所述区块链网络之外的目标系统为公共区块链网络,所述公共区块链网络同时与所述区块链网络和所述另一区块链网络通信连接。
[0117]
在执行上述步骤s43时,步骤s43具体包括:在所述交易包携带所述冻结标识的情况下,持续地获取所述公共区块链网络所生成的公共区块;针对所述每个公共区块,检测该公共区块中是否包含所述交易包携带的所述目标标识;如果一个公共区块携带所述目标标识,则将该公共区块确定为所述目标数据;其中,所述公共区块链网络是在以下情况下,将所述目标标识填充至该公共区块的,该情况是:所述公共区块链网络确定所述区块链网络成功预执行所述第二目标交易,并确定所述另一区块链网络成功预执行所述第一目标交易。
[0118]
可选地,在一些具体实施方式中,所述第一目标交易和所述第二目标交易是两个相同的交易。或者,所述第一目标交易是跨链交易中需要在所述另一区块链网络中执行的部分,所述第二目标交易是所述跨链交易中需要在所述区块链网络中执行的部分。
[0119]
可选地,在一些具体实施方式中,所述第一目标交易和所述第三目标交易是两个相同的交易;或者,所述第一目标交易是跨链交易中需要在所述另一区块链网络中执行的部分,所述第三目标交易是所述跨链交易中需要在所述区块链网络中执行的部分。
[0120]
基于同一发明构思,本发明实施例还提供一种冻结区块链网络的装置。参考图5,图5是本发明一实施例提出的冻结区块链网络的装置的示意图,该装置应用于区块链网络内的任一节点。如图5所示,该装置包括:
[0121]
交易包接收模块51,用于接收所述区块链网络内的排序节点所发送的交易包;
[0122]
冻结标识检测模块52,用于检测所述交易包是否携带冻结标识;
[0123]
目标数据获取模块53,用于在所述交易包携带所述冻结标识的情况下,持续地从所述区块链网络之外的目标系统获取目标数据;
[0124]
区块生成模块54,用于在获取到所述目标数据之后,生成所述交易包对应的区块;
[0125]
所述冻结标识检测模块52还用于:在生成所述交易包对应的区块之后,开始处理所述交易包的下一个交易包。
[0126]
可选地,在一些具体实施方式中,所述区块生成模块还用于:在所述交易包未携带所述冻结标识的情况下,生成所述交易包对应的区块。
[0127]
可选地,在一些具体实施方式中,所述目标数据用于表征:所述区块链网络之外的另一区块链网络已经成功预执行第一目标交易;所述区块生成模块,包括:
[0128]
预执行结果获取单元,用于在获取到所述目标数据之后,获取预先存储的预执行结果,所述预执行结果是节点本身预执行第二目标交易后得到的执行结果,所述第二目标交易是与所述第一目标交易相关联的交易;
[0129]
区块生成单元,用于根据该预执行结果,生成所述交易包对应的区块。
[0130]
或者可选地,在一些具体实施方式中,所述目标数据用于表征:所述区块链网络之外的另一区块链网络已经成功预执行第一目标交易;所述区块生成模块,包括:
[0131]
交易执行单元,用于在获取到所述目标数据之后,执行第三目标交易,得到第三目标交易的执行结果;其中,所述第三目标交易是与所述第一目标交易相关联的交易;
[0132]
区块生成单元,用于根据该执行结果,生成所述交易包对应的区块。
[0133]
可选地,在一些具体实施方式中,所述装置还包括预执行模块,所述预执行模块用于:执行所述第二目标交易,得到所述第二目标交易的执行结果,并将所述执行结果记录至节点本身的非账本数据库。
[0134]
可选地,在一些具体实施方式中,所述预执行模块具有用于:在接收到所述交易包的前一个交易包,且检测到所述前一个交易包携带预执行标识的情况下,生成所述前一个交易包对应的区块,在生成所述前一个交易包对应的区块之后,执行预先存储的所述第二目标交易。
[0135]
可选地,在一些具体实施方式中,携带所述冻结标识的所述交易包还携带目标标识;所述区块链网络之外的目标系统为公共区块链网络,所述公共区块链网络同时与所述区块链网络和所述另一区块链网络通信连接;所述目标数据获取模块,包括:
[0136]
公共区块获取单元,用于在所述交易包携带所述冻结标识的情况下,持续地获取所述公共区块链网络所生成的公共区块;
[0137]
目标标识检测单元,用于针对所述每个公共区块,检测该公共区块中是否包含所述交易包携带的所述目标标识;
[0138]
目标数据确定单元,用于如果一个公共区块携带所述目标标识,则将该公共区块确定为所述目标数据;其中,所述公共区块链网络是在以下情况下,将所述目标标识填充至该公共区块的,该情况是:所述公共区块链网络确定所述区块链网络成功预执行所述第二目标交易,并确定所述另一区块链网络成功预执行所述第一目标交易。
[0139]
可选地,在一些具体实施方式中,所述第一目标交易和所述第二目标交易是两个
相同的交易;或者,所述第一目标交易是跨链交易中需要在所述另一区块链网络中执行的部分,所述第二目标交易是所述跨链交易中需要在所述区块链网络中执行的部分。
[0140]
可选地,在一些具体实施方式中,所述第一目标交易和所述第三目标交易是两个相同的交易;或者,所述第一目标交易是跨链交易中需要在所述另一区块链网络中执行的部分,所述第三目标交易是所述跨链交易中需要在所述区块链网络中执行的部分。
[0141]
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0142]
基于同一发明构思,本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信。
[0143]
所述存储器603,用于存放计算机程序;
[0144]
所述处理器601,用于在执行存储器603上所存放的程序时,实现如下步骤:
[0145]
接收所述区块链网络内的排序节点所发送的交易包;
[0146]
检测所述交易包是否携带冻结标识;
[0147]
在所述交易包携带所述冻结标识的情况下,持续地从所述区块链网络之外的目标系统获取目标数据;
[0148]
在获取到所述目标数据之后,生成所述交易包对应的区块;
[0149]
在生成所述交易包对应的区块之后,开始处理所述交易包的下一个交易包。
[0150]
或者,处理器601用于在执行存储器603上所存放的程序时,实现本发明以上其他方法实施例所提供的冻结区块链网络的方法步骤。
[0151]
上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,简称pci)总线或扩展工业标准结构(extended industry standard architecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
[0152]
通信接口用于上述电子设备与其他设备之间的通信。
[0153]
存储器可以包括随机存取存储器(random access memory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0154]
上述的处理器可以是通用处理器,包括中央处理器(central processing unit,简称cpu)、网络处理器(network processor,简称np)等;还可以是数字信号处理器(digital signal processing,简称dsp)、专用集成电路(application specific integrated circuit,简称asic)、现场可编程门阵列(field-programmable gate array,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0155]
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的冻结区块链网络的方法。
[0156]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或
部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0157]
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0158]
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0159]
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1