一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于区块链网络的方法和相关产品与流程

2021-10-24 07:27:00 来源:中国专利 TAG:区块 用于 计算机 程序 方法


1.本发明一般地涉及区块链技术领域。更具体地,本发明涉及一种用于区块链网络的方法、设备、区块链系统和计算机程序产品。


背景技术:

2.本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述可包括可以探究的概念,但不一定是之前已经想到或者已经探究的概念。因此,除非在此指出,否则在本部分中描述的内容对于本技术的说明书和权利要求书而言不是现有技术,并且并不因为包括在本部分中就承认是现有技术。
3.区块链系统是一种去中心化的分布式记账系统,所涉及的共识机制应具备一定数量的节点容错机制,即有共识算法理论阈值范围内数量的节点出现故障、错误或欺诈行为时,区块链系统仍能够正常运行,并产生新的有效账本。然而在实际应用中,仍无法避免出现超过共识算法理论阈值数量的共识节点出现故障、错误和欺诈的情况。例如,由于运维原因需要重启一定数量的节点,或者系统中节点部署过于集中、发生一些不可抗力因素导致大部分节点宕机或者停止服务。在系统中的共识节点停止服务时,可能部分共识节点没有存储最新有效账本。因此,在各个共识节点加载已存储账本重启时,由于各个共识节点中的最新有效账本不一致,可能导致区块链系统分裂,进而无法达成共识。
4.目前主要采用人为干预方式来对分裂的区块链系统进行恢复。这种人为干预方式需要主观判断存储有最新有效账本的共识节点,并手动从该共识节点处拷贝账本信息至其他共识节点或者设置复杂的逻辑运算来干预共识节点的启动顺序,以引导多数共识节点来获得最新有效账本。可以看出,这种人为引导操作大大降低了区块链系统中节点的共识效率,并进而降低了区块链架构的整体性能。


技术实现要素:

5.为了至少解决上述背景技术部分所描述的技术问题,本发明提出了一种用于区块链网络的方案。利用本发明的方案,区块链网络中的每个共识节点可以在执行账本共识操作之前,利用其他共识节点所宣告的本地最新账本信息来选择更新账本以获得全网最新账本,本发明在促使区块链网络中多数共识节点获得全网最新账本的过程中无需人工干预,有效提高区块链系统中节点的共识效率,并进而提升区块链架构的整体性能。鉴于此,本发明在如下的多个方面提供解决方案。
6.本发明的第一方面提供了一种用于区块链网络的方法,所述区块链网络包括多个共识节点,所述方法包括在每个共识节点处执行以下操作:获取所述共识节点的本地最新账本信息;在所述区块链网络内执行账本共识操作之前的预定时间段内,向所述区块链网络内的其他共识节点宣告所述本地最新账本信息;以及利用从所述其他共识节点接收到的、宣告的本地最新账本信息来选择执行账本更新操作,以获得执行账本共识操作之前的全网最新账本。
7.在一个实施例中,其中利用从所述其他共识节点接收的、宣告的本地最新账本信息来选择执行账本更新操作包括:对所述其他共识节点所宣告的本地最新账本信息进行验证;响应于所述其他共识节点所宣告的本地最新账本信息通过验证,确定执行账本更新操作;或者响应于所述其他共识节点所宣告的本地最新账本信息未通过验证,确定不执行账本更新操作。
8.在一个实施例中,其中所述本地最新账本信息包括与账本数量相关的账本高度,其中对所述其他共识节点所宣告的本地最新账本信息进行验证包括:根据所述共识节点中的账本高度与所述其他共识节点中的账本高度的比较来对所述其他共识节点所宣告的本地最新账本信息进行验证。
9.在一个实施例中,其中根据所述比较进行验证包括:判断所述共识节点中的账本高度是否大于所述其他共识节点中的账本高度;以及响应于所述共识节点中的账本高度大于或等于所述其他共识节点中的账本高度,确定所述其他共识节点所宣告的本地最新账本信息未通过验证;或者响应于所述共识节点中的账本高度小于所述其他共识节点中的账本高度,确定所述其他共识节点所宣告的本地最新账本信息通过验证。
10.在一个实施例中,其中所述本地最新账本信息包括与账本数量相关的账本高度和与账本可信性相关的共识证明,其中对所述其他共识节点所宣告的本地最新账本信息进行验证包括对所述其他共识节点中的账本高度和共识证明进行验证。
11.在一个实施例中,其中对所述其他共识节点中的账本高度和共识证明进行验证包括:判断所述共识节点中的账本高度是否大于所述其他共识节点中的账本高度;验证所述其他共识节点中的共识证明;响应于所述共识节点中的账本高度大于或等于所述其他共识节点中的账本高度和/或所述其他共识节点中的共识证明未通过验证,确定所述其他共识节点所宣告的本地最新账本信息未通过验证;或者响应于所述共识节点中的账本高度小于所述其他共识节点中的账本高度,并且所述其他共识节点中的共识证明通过验证,确定所述其他共识节点所宣告的本地最新账本信息通过验证。
12.在一个实施例中,其中向所述区块链网络内的其他共识节点宣告所述本地最新账本信息包括:在所述预定时间段内周期性地向所述其他共识节点宣告所述本地最新账本信息。
13.在一个实施例中,其中每个周期中的所述共识节点的本地最新账本信息包括所述共识节点启动时所加载的账本信息或上一周期中更新后的账本信息。
14.在一个实施例中,所述方法还包括:根据所述区块链网络内共识节点的数目来设置所述预定时间段的长度;和/或根据所述区块链网络内共识节点的数目来设置在所述预定时间段内执行宣告的周期。
15.本发明的第二方面提供了一种设备,包括:处理器;以及存储器,其存储有用于区块链网络的计算机指令,当所述计算机指令由所述处理器运行时,使得所述设备执行前述以及在下文多个实施例中所述的方法。
16.本发明的第三方面提供了一种计算机程序产品,包括用于区块链网络的程序指令,当所述程序指令由处理器执行时,使得实现前述以及在下文多个实施例中所述的方法。
17.本发明的第四方面,提出了一种区块链系统,包括:多个共识节点,其中每个所述共识节点包括如本发明的第二方面提供的设备,其中所述设备配置成执行前述以及在下文
或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
[0029]
下面结合附图来详细描述本发明的具体实施方式。
[0030]
为了能够更好地理解本发明的方案,以下将结合图1对区块链网络进行简单说明。
[0031]
图1是示出根据本发明实施例的区块链网络的架构图100。该区块链网络可以包括多个共识节点,这里的共识节点可以理解为区块链网络中可以共享区块链数据、并可以参与区块共识过程的节点。
[0032]
如图1所示,区块链网络可以包括a、b、c、d四个共识节点,并由节点a、b、c、d组网所形成。可以理解的是,这里仅为了说明的目的以四个共识节点为例对区块链网络进行阐述,并不对区块链网络中共识节点的数量进行限制。
[0033]
本发明的背景技术中提及区块链网络由于运维缘故或者因某些不可抗力因素导致网络中的共识节点停止服务后,若要恢复记账和对外提供正常服务,需要重启共识节点。在一个实施例中,以重启图1中的a、b、c、d四个共识节点为例进行说明。假设前述的四个节点在重启之前,a、b两个共识节点未将全网最新账本持久化到其存储设备中,而c、d两个共识节点已将全网最新账本持久化到其存储设备中。在重启前述四个共识节点的服务进程中,由于a、b两个共识节点可以加载的账本和c、d两个共识节点可以加载的账本不一致,会导致区块链网络发生分裂而无法达成共识。为了解决该技术问题,本发明提出如图2中所示出的技术方案。
[0034]
图2是示出根据本发明实施例的用于区块链网络的方法200的流程图。该区块链网络可以包括多个共识节点,并且每个共识节点可以执行图2中所示的步骤。可以理解的是,这里的区块链网络和共识节点可以具有与前文结合图1所描述的区块链网络和共识节点相同的通用属性,并且通过本发明的方案得到进一步性能优化和提升。
[0035]
对于每个前述的共识节点,如图2所示,在步骤s201处,可以获取该共识节点的本地最新账本信息。在一个实施例中,可以从该共识节点的存储设备(例如本地磁盘)中获取前述的本地最新账本信息。可以理解的是,前述的本地最新账本信息的获取方式仅是步骤s201的一种可能实现方式,本发明的方案并不受此限制。例如,该最新账本信息也可以存储在与该共识节点关联的云端处。接着,在步骤s202处,可以在前述的区块链网络内执行账本共识操作之前的预定时间段内,向该区块链网络内的其他共识节点宣告前述的本地最新账本信息。在一个实施例中,前述步骤s202可以通过虚框中示出的步骤s202

1来实现。
[0036]
具体地,在步骤s202

1处,可以在预定时间段内周期性地向前文的其他共识节点宣告前述的本地最新账本信息。在一些实施场景中,前述的预定时间段和前述的执行宣告的周期可以根据前述的区块链网络内共识节点的数目来设置。例如,前述的区块链网络规模较大(即其内的共识节点的数目较多)时,可以增大前述的预定时间段的长度和前述的周期的长度。通过增大前述的预定时间段的长度,可以提高其他共识节点接收到该本地最新账本信息的概率。另外,增大前述的周期的长度,可以减少信息(包括各自的最新账本信息)的宣告频率,从而可以降低对进出口网络宽带的消耗,以避免网络拥塞。可以理解的是图2中示出的步骤s202

1仅仅是步骤s202的一种可能实现方式,本发明的方案并不受此限制。根据本发明的教导,本领域技术人员也可以采取其他的步骤或方式来实现步骤s202。
[0037]
接着,在步骤s203处,可以利用从前述其他共识节点接收到的、宣告的本地最新账本信息来选择执行账本更新操作,以获得执行账本共识操作之前的全网最新账本。下文将
结合图3对实现步骤s203的一种实施方式进行描述。
[0038]
图3是示出根据本发明实施例的选择执行账本更新操作300的流程图。
[0039]
如图3所示,在步骤s203

1处,可以对前述其他共识节点所宣告的本地最新账本信息进行验证,并在步骤s203

2处判断是否通过验证。在一些实施场景中,前述的本地最新账本信息可以包括与账本数量相关的账本高度。在该场景中,可以根据前述共识节点中的账本高度与前述其他共识节点中的账本高度的比较来实现前文的验证操作。例如,可以判断前述共识节点中的账本高度是否大于前述其他共识节点中的账本高度。在前述共识节点中的账本高度大于或等于前述其他共识节点中的账本高度时,可以确定前述其他共识节点所宣告的本地最新账本信息未通过验证。反之,则可以确定通过验证。
[0040]
在另一些实施场景中,前述的本地最新账本信息可以包括与账本数量相关的账本高度和与账本可信性相关的共识证明,这里的共识证明可以根据区块链网络所涉及的共识机制来设置,例如可以包括账本的数字签名、矿工的工作量证明等。在该场景中,可以对前述其他共识节点中的账本高度和共识证明进行验证来实现前文的验证操作。例如,可以判断前述共识节点中的账本高度是否大于前述其他共识节点中的账本高度,并且验证前述其他共识节点中的共识证明(例如可以对前述的账本的数字签名或工作量证明进行验证)。在前述共识节点中的账本高度大于或等于前述其他共识节点中的账本高度时、或者在前述其他共识节点中的共识证明未通过验证时、或者在前述共识节点中的账本高度大于或等于前述其他共识节点中的账本高度且前述其他共识节点中的共识证明未通过验证时,可以确定前述其他共识节点所宣告的本地最新账本信息未通过验证。相对而言,在共识节点中的账本高度小于前述其他共识节点中的账本高度,并且前述其他共识节点中的共识证明通过验证时,可以确定前述其他共识节点所宣告的本地最新账本信息通过验证。
[0041]
在前述步骤s203

2处确定通过验证时,接着在步骤203

3处,确定执行账本更新操作。相反,当在前述步骤s203

2处确定未通过验证时,则接着在步骤203

4处,确定不执行账本更新操作。在一个实施例中,每个前述的共识节点在预定时间段内周期性地宣告其本地最新账本信息的过程中,若接收到多个前述的其他共识节点所宣告的本地最新账本信息,则可以根据接收时间的先后顺序来依次对其他共识节点所宣告的本地最新账本信息进行验证。在这一过程中,每个前述的共识节点所宣告的本地最新账本信息可以包括启动时所加载的账本信息或上一周期中更新后的账本信息。可以理解的是,图3中示出的步骤s203

1、步骤s203

2、步骤s203

3以及步骤s203

4仅仅是步骤s203的一种可能实现方式,本发明的方案并不受此限制。根据本发明的教导,本领域技术人员也可以采取其他的步骤或方式来实现步骤s203。
[0042]
图4是示出根据本发明实施例的用于区块链网络的另一方法400的流程图。该区块链网络包括多个共识节点,并且每个共识节点可以执行图4中所示的步骤。可以理解的是,这里的区块链网络和共识节点可以是前文结合图2和图3所描述的区块链网络和共识节点,因此前文关于区块链网络和共识节点的描述也同样适用于下文的描述。
[0043]
如图4所示,在步骤s401处,区块链网络中的每个前述的共识节点加载已存储的账本信息启动后,经过一个时间段t的引导宣告后,再执行账本共识操作。这里的时间段t可以称为共识节点的引导时间段(例如可以是前文的预定时间段),因此前文关于预定时间段的描述同样适用于引导时间段t。
[0044]
接着,在步骤s402处,在引导时间段t内,每个前述的共识节点每间隔时间段t(例如可以是前文的执行宣告的周期),向前述的区块链网络中的其他共识节点宣告本节点加载的账本信息,以完成本节点的引导宣告。在一个实施例中,前述的引导时间段t和间隔时间段t可以通过节点程序来预置,或者可以在节点配置文件中进行配置指定。进一步,前述的本节点加载的账本信息可以是前文的本地最新账本信息,因此前文结合图2和图3所描述的本地最新账本信息同样适用于本节点加载的账本信息。另外,关于前述的宣告操作,在一个实施例中,具体可以通过全网广播的方式或者其它p2p消息传播协议(例如gossip协议)方式来实现。
[0045]
在步骤s403处,其他共识节点在收到上述引导宣告时,对引导宣告中的账本信息进行验证,并在验证通过后,利用该账本信息进行账本更新操作以及对更新后的账本进行保存。在一些实施例场景中,引导宣告中的账本信息可以包括账本高度和共识证明。在该场景中,在一个实施例中,对于前述的验证操作具体可以涉及对前述引导宣告中的账本高度和共识证明的验证。例如,判断前述引导宣告中的账本高度是否大于本节点中的账本高度,以及验证前述引导宣告中的共识证明(例如对账本的数字签名或者对矿工的工作量证明进行验证等)。在前述引导宣告中的账本高度大于本节点中的账本高度、且前述引导宣告中的共识证明通过验证时,可以确定前述引导宣告中的账本信息通过验证。反之,则可以确定未通过验证。
[0046]
以下将结合图1中a、b、c、d四个共识节点对上述步骤s401至s403进一步说明。
[0047]
本实施例中的区块链网络可以涉及hotstuff共识协议,根据该共识协议可以采用阈值签名作为账本的工作证明。可以理解的是,这里的阈值签名是指共识节点利用各自的私钥对账本提案进行签名,并由当前共识轮次的leader节点收集签名。其它共识节点(包括leader节点自身)只需将签名消息发送给前述leader节点即可。接着,前述的leader节点将满足阈值数的签名个数聚合成一个签名(可称为聚合签名)、并广播给前述的其它节点,前述的其它节点在每一轮的共识中只需验证一次签名即可。
[0048]
本实施例中的a、b、c、d四个共识节点在重启前已通过共识的全网最新账本的账本高度为n,共识节点a和b在重启前所存储的账本高度为n

1,共识节点c和d在重启前所存储的账本高度为n。前文步骤s401至s403的具体实现过程可以涉及如下操作:
[0049]
首先,进行初始化操作。例如,可以在各个共识节点的设备系统中设置节点服务进程为开机自启动、并且启动一个节点服务进程的守护进程。这里的守护进程用于监控节点服务进程的运行状态、并在节点服务进程停止后可再次启动节点服务进程。例如,可以在每个共识节点的配置文件中配置引导时间段t(例如10s)以及引导宣告间隔时间t(例如1s)。
[0050]
接着,在四个共识节点处执行宣告操作。例如共识节点a和b的服务进程在重启后,每隔1s宣告从存储设备中加载的引导账本及引导账本的聚合签名(即宣告加载的账本信息)。而共识节点c、d的服务进程在重启后,每隔1s宣告从存储设备中加载的引导账本及引导账本的聚合签名(即宣告加载的账本信息)。前述共识节点a和b的引导账本的账本高度为n

1,前述共识节点c和d的引导账本的账本高度为n,所采用的宣告方法可以为全网广播。
[0051]
接着,在共识节点a和b处执行账本更新操作。共识节点a和b在收到共识节点c或者共识节点d的引导宣告消息后,对前述共识节点c或者共识节点d的引导宣告进行验证。例如,在确定共识节点c或者共识节点d的引导宣告中账本高度n大于账本高度n

1时,可以确
定对账本高度的验证通过;以及验证高度为n的账本的聚合签名。由于高度为n的账本在共识节点a、b、c、d重启之前已通过共识,并由c、d共识节点持久化到其存储设备中,因此高度为n的账本的聚合签名是有效证明。接着,共识节点a和b将前述的高度为n的账本以及该账本的聚合签名持久化到存储设备中。由于共识节点a、b仍处于引导时间段t之内,可以将高度为n的账本作为本节点的引导账本,重复上述共识节点a、b相关的宣告操作。
[0052]
接着,在共识节点c和d处执行账本更新操作。共识节点c、d在收到共识节点a或者节点b的引导宣告消息后,对共识节点a或者节点b的引导宣告进行验证,具体可参照上述共识节点a和b处执行验证操作。由于引导宣告中账本高度n

1小于共识节点c、d中的账本高度n,所以验证不通过。此外,由于共识节点c、d两个共识节点仍处于引导时间段t之内,将账本高度为n的账本作为本节点的引导账本,重复上述共识节点c、d相关的宣告操作。
[0053]
最后,a、b、c、d中的任一节点在结束前述的引导时间段后,获得高度为n的账本,可以基于获取到高度为n的账本开始执行账本共识操作。
[0054]
图5是示出根据本发明实施例的共识节点500的示意框图。该共识节点500可以包括根据本发明实施例的设备501以及其外围设备和外部网络。如前所述,该共识节点(例如通过设备501)实现宣告本节点的本地最新账本信息、并利用其他节点所宣告的本地最新账本信息来选择执行账本更新等操作,以实现前述结合图2

图4所述的本发明的方案。
[0055]
如图5中所示,设备501可以包括cpu5011,其可以是通用cpu、专用cpu或者其他信息处理以及程序运行的执行单元。进一步,设备501还可以包括大容量存储器5012和只读存储器rom 5013,其中大容量存储器5012可以配置用于存储各类数据,包括账本、账本信息、宣告周期等以及区块链网络所需的各种程序,rom 5013可以配置成存储对于设备501的加电自检、系统中各功能模块的初始化、系统的基本输入/输出的驱动程序及引导操作系统所需的数据。
[0056]
进一步,设备501还包括其他的硬件平台或组件,例如示出的tpu 5014、gpu 5015、fpga5016和mlu5017。可以理解的是,尽管在设备501中示出了多种硬件平台或组件,但这里仅仅是示例性的而非限制性的,本领域技术人员可以根据实际需要增加或移除相应的硬件。例如,设备501可以仅包括cpu作为公知硬件平台和另一硬件平台作为本发明的测试硬件平台。
[0057]
本发明的设备501还包括通信接口5018,从而可以通过该通信接口5018连接到局域网/无线局域网(lan/wlan)505,进而可以通过lan/wlan连接到本地服务器506或连接到因特网(“internet”)507。替代地或附加地,本发明的设备501还可以通过通信接口5018基于无线通信技术直接连接到因特网或蜂窝网络,例如基于第三代(“3g”)、第四代(“4g”)或第5代(“5g”)的无线通信技术。
[0058]
设备501的外围设备可以包括显示装置502、输入装置503以及数据传输接口504。在一个实施例中,显示装置502可以例如包括一个或多个扬声器和/或一个或多个视觉显示器,其配置用于对本发明测试设备的运算过程或者最终结果进行语音提示和/或图像视频显示。输入装置503可以包括例如键盘、鼠标、麦克风、姿势捕捉相机,或其他输入按钮或控件,其配置用于接收测试数据的输入或用户指令。数据传输接口504可以包括例如串行接口、并行接口或通用串行总线接口(“usb”)、小型计算机系统接口(“scsi”)、串行ata、火线(“firewire”)、pci express和高清多媒体接口(“hdmi”)等,其配置用于与其他设备或系统
的数据传输和交互。根据本发明的方案,该数据传输接口504可以接收本节点的本地最新账本信息或者其他节点所宣告的本地最新账本信息,并且向设备501传送本节点的本地最新账本信息。
[0059]
本发明的设备501的上述cpu 5011、大容量存储器5012、只读存储器rom 5013、tpu 5014、gpu 5015、fpga 5016、mlu 5017和通信接口5018可以通过总线5019相互连接,并且通过该总线与外围设备实现数据交互。在一个实施例中,通过该总线5019,cpu 5011可以控制设备501中的其他硬件组件及其外围设备。
[0060]
在工作中,本发明的设备501的处理器cpu 5011可以通过输入装置503或数据传输接口504获取本节点的和其他节点的本地最新账本信息,并调取存储于存储器5012中的计算机程序指令或代码对获取到的信息进行处理,以便获得执行账本共识操作之前的全网最新账本。
[0061]
从上面关于本发明模块化设计的描述可以看出,本发明的系统可以根据应用场景或需求进行灵活地布置而不限于附图所示出的架构。进一步,还应当理解,本发明示例的执行操作的任何模块、单元、组件、服务器、计算机或设备可以包括或以其他方式访问计算机可读介质,诸如存储介质、计算机存储介质或数据存储设备(可移除的)和/或不可移动的)例如磁盘、光盘或磁带。计算机存储介质可以包括以用于存储信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质,例如计算机可读指令、数据结构、程序模块或其他数据。基于此,本发明也公开了一种计算机可读存储介质,其上存储有用于区块链网络的计算机可读指令,该计算机可读指令被一个或多个处理器执行时,实现在前结合附图所描述的方法和操作。
[0062]
虽然本说明书已经示出和描述了本发明的多个实施方式,但对于本领域技术人员显而易见的是,这样的实施方式是仅以示例的方式提供的。本领域技术人员在不偏离本发明思想和精神的情况下想到许多更改、改变和替代的方式。应当理解在实践本发明的过程中,可以采用本文所描述的本发明实施方式的各种替代方案。所附权利要求书旨在限定本发明的保护范围,并因此覆盖这些权利要求范围内的模块组成、等同或替代方案。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜