用于更换区块链网络的领导者的方法和系统与流程

文档序号:19421327发布日期:2019-12-14 01:31阅读:374来源:国知局
用于更换区块链网络的领导者的方法和系统与流程

本公开一般涉及区块链技术,更具体地说,涉及一种用于更换区块链网络的领导者的方法和系统。



背景技术:

近来,随着区块链技术的发展,在金融领域,区块链变得越来越流行。在区块链网络中,特别是在一些具有领导者的区块链网络中,需要随机地更换领导者。更换领导者的这种随机性依赖于产生的随机数的随机性。随机数目前在密码学中通常由随机源通过密码学的方法生成。随机源的随机性至关重要,例如使用切尔诺贝利的放射物质强度、大气情况等等作为随机源。

在区块链网络中,由于不存在中心化的可信计算单元,无法集中化地产生随机数。而如果由每个区块链节点单独产生随机数,则每个区块链节点产生的随机数可能会各不相同,从而无法在区块链的智能合约中使用。所以,目前在区块链网络中产生随机数的方法是通过把外部随机源引入到智能合约中来使用。外部随机源的一个例子是项目provabletm(参见http://provable.xyz/)。

在诸如实用拜占庭容错(pbft)的需要更换领导者的共识算法中,领导者的轮换通常是节点按照顺序依次轮换,或者依赖于外部随机源。这是因为无法在区块链网络自身中获得随机数。这两种方法都很容易被外部攻击者利用。



技术实现要素:

本文所公开的各种具体实施例提供了一种用于更换区块链网络的领导者的方法。该方法包括响应于更换领导者的请求,向至少两个客户端发送选举请求。所述至少两个客户端中的每一个客户端与一个账户相关联。该方法还包括由所述至少两个客户端生成对应的至少两个随机数。该方法还包括由所述至少两个客户端把所述至少两个随机数传递给智能合约。该方法还包括利用智能合约对所述至少两个随机数进行运算以得到最终随机数。该方法还包括在共识算法中利用所述最终随机数来确定所述区块链网络中的一个节点作为下一个领导者。

本文所公开的各种具体实施例还提供了一种用于更换区块链网络的领导者的系统。该系统包括一个或多个处理器以及耦接到所述一个或多个处理器的存储器。所述存储器存储有计算机指令,所述计算机指令当由所述一个或多个处理器执行时使所述一个或多个处理器执行以下操作:响应于更换领导者的请求,向至少两个客户端发送选举请求,其中所述至少两个客户端中的每一个客户端与一个账户相关联;由所述至少两个客户端生成对应的至少两个随机数;由所述至少两个客户端把所述至少两个随机数传递给智能合约;利用智能合约对所述至少两个随机数进行运算以得到最终随机数;以及在共识算法中利用所述最终随机数来确定所述区块链网络中的一个节点作为下一个领导者。

本文所公开的各种具体实施例还提供了一种计算机可读存储介质,存储有计算机指令,所述计算机指令当由处理器运行时使所述处理器执行如上所述的方法。

采用本公开的实施例的技术方案,能够在区块链网络内部产生随机数供智能合约使用,从而使得在区块链网络中选举领导者时使用的随机数无法被预测,因此领导者难以被单独攻击。这增强了含有领导者的区块链网络的健壮性。

附图说明

因此,本公开可被本领域的普通技术人员理解,更详细的描述可参考一些例示性具体实施的方面,其中一些具体实施在附图中示出。

图1示出了根据本发明的一个实施例的用于更换区块链网络的领导者的方法的流程图。

图2示出了根据本发明的一个实施例的用于更换区块链网络的领导者的方法的说明图。

根据通常的做法,附图中示出的各种特征部可能未按比例绘制。因此,为了清楚起见,可以任意地扩展或减小各种特征部的尺寸。另外,一些附图可能未描绘给定的系统、方法或设备的所有部件。最后,在整个说明书和附图中,类似的附图标号可用于表示类似的特征部。

具体实施方式

描述了许多细节以便提供对附图中所示的示例具体实施的透彻理解。然而,附图仅示出了本公开的一些示例方面,因此不应被视为限制。本领域的普通技术人员将会知道,其他有效方面或变体不包括本文所述的所有具体细节。此外,没有详尽地描述众所周知的系统、方法、部件、设备和电路,以免模糊本文所述的示例性具体实施的更多相关方面。

在区块链网络中,对于攻击者而言,如果想要攻陷整个区块链网络,需要同时攻陷达到一定数量的节点才能够做到。例如,在pbft算法中,如果整个区块链网络的总节点数为3f+1的话,那么需要同时攻陷f个节点才能够使得网络停止工作,并且需要同时攻陷2f+1个节点才能够使得网络产生错误的区块,这是非常难以做到的。

但是,如果攻击者可以知晓哪个节点是区块链网络中的领导者节点,那么攻击者就可以在单独的时间段内只攻击该领导者节点。当领导者节点被攻陷时,区块链网络就会停止工作。由于只需要攻击单个节点(领导者节点),攻击者的攻击难度会大幅下降。

本发明的发明人提出了一种方法,该方法相对于按照顺序依次轮换或者依赖于外部随机源来更换领导者这两种方法而言,在区块链网络的内部产生无法预知的随机数,从而解决了攻击者容易预测领导者节点并一直单独攻击领导者节点使得网络停止工作的问题。这增强了具有领导者的区块链网络的健壮性。

参见图1,图1示出了根据本发明的一个实施例的用于更换区块链网络的领导者的方法的流程图。所述方法由包含处理器和存储器的计算设备执行,并且从步骤110开始。

在步骤110中,响应于更换领导者的请求,向至少两个客户端发送选举请求。这里,所述至少两个客户端中的每一个客户端与一个账户相关联。在下面结合图2对图1中所述的方法进行举例说明。图2示出了根据本发明的一个实施例的用于更换区块链网络的领导者的方法的说明图。

在图2的实施例中,智能合约210响应于接收到更换领导者的请求而向客户端201、202和203发送选举请求(electrequest)。例如,客户端201可以与账户a相关联,客户端202可以与账户b相关联,而客户端203可以与账户c相关联。尽管在图2中作为示例仅仅示出了三个客户端,但是也可以向两个客户端或者四个以上的客户端发送选举请求。

在根据本发明的一个实施例中,上述的账户a、b和c可以是普通账户。在根据本发明的另一个实施例中,与所述至少两个客户端相关联的账户属于管理成员账户,并且在步骤110中向至少两个客户端发送选举请求包括向与管理成员账户关联的至少两个客户端发送选举请求。也就是说,仅向管理成员账户而不向非管理成员账户发送选举请求。这里的管理成员账户为区块链网络中指定的账户,并且管理成员账户有资格参与随机数的生成。在一个实施例中,所述管理成员账户可以是由区块链网络的节点通过多方签名投票决定的。例如,当区块链网络的节点中有m/n比例的节点同意时,一个账号就可以被确定为管理成员账号。这里,m=2f+1,n=3f+1,并且f是自然数。

在根据本发明的一个实施例中,所述更换领导者的请求是由一个管理成员账户发出的,例如由账户a发出。账户a发出更换请求者的请求可以是响应于特定的事件或者是满足了预定的条件。在根据本发明的一个实施例中,响应于发现当前领导者出现问题时,某管理成员账户发出更换领导者的请求。在根据本发明的另一个实施例中,每当一个区块被加入区块链后产生更换领导者的请求。

现在返回参照图1,在步骤120中,由所述至少两个客户端生成对应的至少两个随机数。以图2的情况为例,在接收到选举请求后,例如,客户端201生成随机数a,客户端202生成随机数b,客户端203生成随机数c。各个客户端产生随机数的方法可以相同,也可以不同。在根据本发明的一个实施例中,接收到选举请求的各个客户端可以使用不同的随机数生成算法以及不同的随机源来生成各自的随机数,从而使得结合了各个随机数的随机性的最终随机数更加难以预测。

在根据本发明的一个实施例中,不需要所有接收到选举请求的客户端都对选举请求进行回应。只要有至少两个客户端响应于选举请求而生成了各自的随机数就足够了。

在步骤130中,由所述至少两个客户端把所述至少两个随机数传递给智能合约。在根据本发明的一个实施例中,由所述至少两个客户端把所述至少两个随机数传递给智能合约包括:通过由与所述至少两个客户端相关联的账户分别调用所述智能合约而把所述至少两个随机数传递给所述智能合约。以图2的情况为例,与客户端201关联的账户a以生成的随机数a作为参数调用智能合约210,与客户端202关联的账户b以生成的随机数b作为参数调用智能合约210,与客户端203关联的账户c以生成的随机数c作为参数调用智能合约210。也就是说,被调用的智能合约210分别从客户端201、202和203接收到了输入参数a、b和c。

在根据本发明的一个实施例中,与所述至少两个客户端相关联的账户对所述至少两个随机数分别签名后再传递给智能合约。所述智能合约通过验证所述签名来确定与所述至少两个客户端相关联的账户是管理成员账户。在这个实施例中,以图2的情况为例,智能合约210的输入参数可以是signa(a)、signb(b)、signc(c)。这里,signa()、signb()和signc()分别是管理成员账户a、b和c的签名函数。通过对生成的随机数a、b和c进行签名,一方面可以保护随机数在网络上传递时不会被窃取,另一方面使得智能合约能够识别随机数是否由管理成员账户生成。

现在返回参照图1,在步骤140中,利用智能合约对所述至少两个随机数进行运算以得到最终随机数。以图2中的情况为例,即,利用智能合约210来计算最终随机数r=aopbopc。这里,op为任意的运算,只要能够把来自客户端的至少两个随机数的随机性反映到最终随机数r中就够了。

在根据本发明的一个实施例中,所述运算可以包括:把所述至少两个随机数连接成字符串;对所述字符串应用安全散列算法;把散列后得到的值的末位字符变为小写并且取其acsii值;以及将所述acsii值除以区块链网络的节点数并且取余数,其中所述余数是所述最终随机数。以图2中的情况为例,例如可以由智能合约210使用sha(“a”&&“b”&&“c”)。这里,运算符“&&”代表字符串的串接,sha()代表sha散列算法。在一个实施例中,随机数a、b和c的串接顺序由智能合约210接收到输入参数a、b和c的顺序决定。根据本实施例中的算法,通过sha(“a”&&“b”&&“c”)计算得到的值的末位字符被变为小写并且取其acsii值,然后将该acsii值除以区块链网络的节点数n(其中n=3f+1)并且取余数,该余数即为最终随机数r。

如上所述,上述实施例仅仅给出了使用多个客户端生成的随机数进行运算来生成最终随机数r的一个例子。其他的运算也是可以的,只要能够把来自客户端的至少两个随机数的随机性反映到最终随机数r中就够了。

现在返回参照图1,在步骤150中,在共识算法中利用所述最终随机数来确定所述区块链网络中的一个节点作为下一个领导者。在根据本发明的一个实施例中,该最终随机数是利用abigen被传递给共识算法的。所述共识算法包括raft、paxos、实用拜占庭容错pbft中的一者,并且包括未来出现的需要选举和更换领导者节点的共识算法。以图2中的情况为例,由智能合约210计算出的最终随机数被传递给共识算法220,该共识算法220基于该随机数可以确定区块链网络中的一个节点s。也就是说,节点s被确定作为下一个领导者。在根据本发明的一个具体实施例中,所确定的节点s的参数votingpower被增加了40(使其高于其他节点),从而在共识算法中确定下一个领导者的计算中基于该参数被确定为领导者。

根据本发明的一个实施例,当所确定的节点为非健康节点时,把序号为该节点的序号加1的节点确定为下一个领导者。

本领域技术人员会认识到,可以以方法、系统或计算机程序产品的形式提供本发明的实施例。因此,本发明可采取全硬件实施例、全软件实施例,或者组合软件和硬件的实施例的形式。硬件和软件的典型的结合可以是带有计算机程序的通用计算机系统,当程序被加载并被执行时,控制计算机系统,从而可以执行上述的方法。

根据本发明的一个实施例,提供了一种用于更换区块链网络的领导者的系统。该系统包括:一个或多个处理器;以及耦接到所述一个或多个处理器的存储器。所述存储器存储有计算机指令,所述计算机指令当由所述一个或多个处理器执行时使所述一个或多个处理器执行以下操作:响应于更换领导者的请求,向至少两个客户端发送选举请求,其中所述至少两个客户端中的每一个客户端与一个账户相关联;由所述至少两个客户端生成对应的至少两个随机数;由所述至少两个客户端把所述至少两个随机数传递给智能合约;利用智能合约对所述至少两个随机数进行运算以得到最终随机数;以及在共识算法中利用所述最终随机数来确定所述区块链网络中的一个节点作为下一个领导者。

在根据本发明的一个实施例的系统中,与所述至少两个客户端相关联的账户属于管理成员账户,并且向至少两个客户端发送选举请求包括向与管理成员账户关联的至少两个客户端发送选举请求。

根据本发明的一个实施例的系统还包括使所述系统执行以下操作的计算机指令:与所述至少两个客户端相关联的账户对所述至少两个随机数分别签名后再传递给智能合约;并且所述智能合约通过验证所述签名来确定与所述至少两个客户端相关联的账户是管理成员账户。

在根据本发明的一个实施例的系统中,所述共识算法包括raft、paxos、实用拜占庭容错pbft中的一者。

在根据本发明的一个实施例的系统中,由所述至少两个客户端把所述至少两个随机数传递给智能合约包括:通过由与所述至少两个客户端相关联的账户分别调用所述智能合约而把所述至少两个随机数传递给所述智能合约。

在根据本发明的一个实施例的系统中,所述运算包括:把所述至少两个随机数连接成字符串;对所述字符串应用安全散列算法;把散列后得到的值的末位字符变为小写并且取其acsii值;以及将所述acsii值除以区块链网络的节点数并且取余数,其中所述余数是所述最终随机数。

在根据本发明的一个实施例的系统中,所述更换领导者的请求是由一个管理成员账户发出的,或者是每当一个区块被加入区块链后产生的。

在根据本发明的一个实施例的系统中,所述管理成员账户是由区块链网络的节点通过多方签名投票决定的。

在根据本发明的一个实施例的系统中,当所确定的节点为非健康节点时,把序号为该节点的序号加1的节点确定为下一个领导者。

在根据本发明的一个实施例的系统中,所述最终随机数是利用abigen被传递给共识算法的。

本发明可以嵌入在计算机程序产品中,它包括使此处描述的方法得以实施的所有特征。所述计算机程序产品被包含在一个或多个计算机可读存储介质(包括,但不限于,磁盘存储器、cd-rom、光学存储器等)中,所述计算机可读存储介质具有包含于其中的计算机可读程序代码。

根据本发明的一个实施例,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机指令,所述计算机指令当由处理器运行时使所述处理器执行如图1所述的方法。

已参考根据本发明的方法、系统及计算机程序产品的流程图和/或方框图说明了本发明。流程图和/或方框图中的每个方框,以及流程图和/或方框图中的方框的组合显然可由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、嵌入式处理器或者其他可编程的数据处理设备的处理器,以产生一台机器,从而指令(所述指令通过计算机或者其他可编程数据处理设备的处理器)产生用于实现在流程图和/或方框图的一个或多个方框中规定的功能的装置。

这些计算机程序指令也可保存在一个或多个计算机的读存储器中,每个这种存储器能够指挥计算机或者其他可编程数据处理设备按照特定的方式发挥作用,从而保存在计算机可读存储器中的指令产生一种制造产品,所述制造产品包括实现在流程图和/或方框图的一个或多个方框中规定的功能的指令装置。

计算机程序指令也可被加载到一个或多个计算机或者其他可编程数据处理设备上,使得在所述计算机或者其他可编程数据处理设备上执行一系列的操作步骤,从而在每个这样的设备上产生计算机实现的过程,以致在该设备上执行的指令提供用于实现在流程图和/或方框图的一个或多个方框中规定的步骤。

以上结合本发明的实施方式对本发明的原理进行了说明,但这些说明只是示例性的,不应理解为对本发明的任何限制。本领域技术人员可以对本发明进行各种改变和变形,而不会背离由随附权利要求所限定的本发明的精神和范围。

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