1.本发明涉及区块链技术领域,具体而言,涉及一种基于区块链的信息共识方法、装置及电子设备。
背景技术:
2.分布式系统是由多个节点互联,相互协作共同完成一个任务的系统。其中,在分布式系统中,需要解决的关键问题是系统一致性的问题,而解决系统一致性问题的方法就是信息共识方法。
3.其中,传统的信息共识方法主要包括paxos算法、raft算法以及pbft(practical byzantine fault tolerance)算法。但是,在上述三种算法中,主节点与其他节点之间需要多轮信息交互确认之后,才能得到对待共识信息验证成功的节点数量,从而根据节点数量确认待共识信息是否完成共识。另外,根据不同的应用场景,信息共识方法的复杂度也有较大的差别。
4.然而,由于实际应用中的分布式系统的节点的数量较多,因此,在处理待共识信息时,分布式系统每进行一轮信息交互确认,由此产生的通信资源开销也是巨大的。
技术实现要素:
5.本发明实施例提供了一种基于区块链的信息共识方法、装置及电子设备,以至少解决现有技术中分布式系统进行信息共识时存在通信资源开销大的技术问题。
6.根据本发明实施例的一个方面,提供了一种基于区块链的信息共识方法,应用于与预设区块链平台连接的分布式系统中,其中,分布式系统中存在用于处理待共识信息的多个节点,包括:从多个节点中确定主节点;通过主节点将待共识信息广播至多个节点中的其他节点;在其他节点接收到待共识信息之后,控制其他节点中的每个节点对待共识信息进行验证,得到第一验证结果;根据第一验证结果,控制目标节点通过对应的节点私钥对待共识信息进行签名,生成目标签名,其中,目标节点为对待共识信息验证成功的节点;根据主节点获取的目标签名的数量确定待共识信息是否完成共识。
7.进一步地,基于区块链的信息共识方法还包括:在通过主节点将待共识信息广播至多个节点中的其他节点之前,获取与分布式系统对应的用户公私钥对,其中,用户公私钥对包含用户公钥以及用户私钥;基于用户私钥生成与分布式系统中的每个节点对应的节点公私钥对,其中,节点公私钥对包含节点公钥以及节点私钥。
8.进一步地,基于区块链的信息共识方法还包括:在基于用户私钥生成与分布式系统中的每个节点对应的节点公私钥对之后,获取分布式系统中的每个节点的节点标识;将节点公私钥对分发至与节点标识对应的第一节点;获取节点公私钥对与第一节点之间的关联关系;将关联关系设置在智能合约中,其中,智能合约部署于预设区块链平台中。
9.进一步地,基于区块链的信息共识方法还包括:识别待共识信息对应的业务场景;根据业务场景确定验证规则;基于验证规则对待共识信息进行验证;在待共识信息满足验
证规则时,确定生成第一验证结果,其中,第一验证结果用于表征待共识信息验证成功。
10.进一步地,基于区块链的信息共识方法还包括:在根据主节点获取的目标签名的数量确定待共识信息是否完成共识之前,将目标签名发送至主节点;控制主节点根据待共识信息以及目标节点对应的节点公钥,对目标签名进行验证;在目标签名验证成功之后,存储目标签名至主节点中。
11.进一步地,基于区块链的信息共识方法还包括:在主节点中的目标签名的数量大于或等于预设数量时,对主节点中的目标签名进行聚合,得到聚合签名;通过用户公钥对聚合签名进行验证;在聚合签名验证成功的情况下,确定待共识信息完成共识。
12.进一步地,基于区块链的信息共识方法还包括:在确定待共识信息成功完成共识之后,控制主节点根据目标节点的节点标识,生成目标节点集合以及目标签名集合,其中,目标节点集合中至少包含每个目标节点的节点标识,目标签名集合中至少包含每个目标节点对待共识信息作出的目标签名;将目标节点集合、目标签名集合、聚合签名以及待共识信息发送至智能合约。
13.进一步地,基于区块链的信息共识方法还包括:在将目标节点集合、目标签名集合、聚合签名以及待共识信息发送至智能合约之后,控制智能合约根据节点私钥对目标签名集合中的每个目标签名进行验证,生成第二验证结果;控制智能合约根据用户公钥对聚合签名进行验证,生成第三验证结果;在第二验证结果以及第三验证结果全部为验证成功的状态时,将聚合签名以及目标节点集合存储至预设区块链平台中。
14.根据本发明实施例的另一方面,还提供了一种基于区块链的信息共识装置,应用于与预设区块链平台连接的分布式系统中,其中,分布式系统中存在用于处理待共识信息的多个节点,该装置包括:第一确定模块,用于从多个节点中确定主节点;广播模块,用于通过主节点将待共识信息广播至多个节点中的其他节点;第一控制模块,用于在其他节点接收到待共识信息之后,控制其他节点中的每个节点对待共识信息进行验证,得到第一验证结果;第二控制模块,用于根据第一验证结果,控制目标节点通过对应的节点私钥对待共识信息进行签名,生成目标签名,其中,目标节点为对待共识信息验证成功的节点;第二确定模块,用于根据主节点获取的目标签名的数量确定待共识信息是否完成共识。
15.根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的基于区块链的信息共识方法。
16.根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的基于区块链的信息共识方法。
17.根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述的基于区块链的信息共识方法。
18.在本发明实施例中,采用主节点与其他节点之间进行一轮信息交互确认的方式,在从多个节点中确定主节点之后,通过主节点将待共识信息广播至多个节点中的其他节点,并在其他节点接收到待共识信息之后,控制其他节点中的每个节点对待共识信息进行验证,得到第一验证结果,从而根据第一验证结果,控制目标节点通过对应的节点私钥对待
共识信息进行签名,生成目标签名,进而根据主节点获取的目标签名的数量确定待共识信息是否完成共识。其中,目标节点为对待共识信息验证成功的节点。
19.由上述内容可知,在对于一个待共识信息进行共识处理时,主节点与其他节点之间只需要一轮信息交互确认即可,即首先通过主节点向其他节点广播待共识信息,然后在其他节点接收到待共识信息之后,由其他节点中的目标节点生成目标签名并向主节点返回目标签名。与现有技术中至少需要多轮信息交互确认相比,本技术减少了信息交互确认的次数,从而降低了分布式系统在进行信息共识时的通信资源开销,解决了现有技术中分布式系统进行信息共识时存在通信资源开销大的技术问题。另外,在确认待共识信息的过程中,通过签名的方式对待共识信息进行确认,提高了信息确认过程的公开性以及透明性。
20.由此可见,通过本技术的技术方案,达到了简化信息交互确认过程的目的,从而实现了降低通信资源开销的效果,进而解决了有技术中分布式系统进行信息共识时存在通信资源开销大的技术问题。
附图说明
21.此处所说明的附图用来提供对本发明的进一步理解,构成本技术的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
22.图1是根据本发明实施例的一种基于区块链的信息共识方法的流程图;
23.图2是根据本发明实施例的一种信息共识系统的示意图;
24.图3是根据本发明实施例的分布式系统共识组的数据共识模块的示意图;
25.图4是根据本发明实施例的一种信息共识方法的示意图;
26.图5是根据本发明实施例的共识结果的数据结构示意图;
27.图6是根据本发明实施例的基于区块链的信息共识方法的流程图;
28.图7是根据本发明实施例的基于区块链的信息共识装置示意图;
29.图8是根据本发明实施例的一种可选的电子设备的示意图。
具体实施方式
30.为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
31.需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
32.另外,还需要说明的是,本技术的技术方案中,所涉及的用户个人信息的获取,存
储和应用等,均为经用户授权或者经过各方充分授权的信息。
33.实施例1
34.根据本发明实施例,提供了一种基于区块链的信息共识方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
35.图1是根据本发明实施例的一种基于区块链的信息共识方法的流程图,如图1所示,该方法包括如下步骤:
36.步骤s102,从多个节点中确定主节点。
37.在步骤s102中,与预设区块链平台连接的分布式系统中存在多个节点,其中,多个节点用于处理待共识信息。主节点可以是多个节点中的任意一个节点。
38.可选的,如图2所示,本技术提供了一种信息共识系统。其中,信息共识系统包括分布式系统共识组、预设区块链平台以及秘钥生成单元。具体的,上述分布式系统共识组,是由分布式系统中用于处理待共识信息的多个节点共同组成,可记为[a1,a2,a3
……
],每个节点可使用节点id号(即节点标识)进行区分,多个节点所对应的节点id号可记为[id1,id2,id3
……
]。
[0039]
可选的,图3是根据本发明实施例的分布式系统共识组的数据共识模块的示意图。如图3所示,分布式系统共识组的数据共识模块包括:智能合约交互单元、主节点选择单元以及数据共识单元。其中,智能合约交互单元用于实现主节点与智能合约之间的信息交互,通过该单元,主节点可将目标节点集合、目标签名集合、聚合签名以及共识信息等信息发送给智能合约。主节点选择单元用于从多个节点中选择主节点。其中,主节点选择单元可根据应用场景的不同,灵活的采用不同的主节点选择方案。数据共识单元用于执行主节点所主导的信息共识流程。另外,在数据共识单元每完成一次信息共识后,由主节点将共识结果发送给智能合约。
[0040]
此外,分布式系统共识组中的每个节点之间是相互独立的,信息共识系统通过多个节点之间的通信协作可完成一个待共识信息的确认。
[0041]
步骤s104,通过主节点将待共识信息广播至多个节点中的其他节点。
[0042]
在步骤s104中,信息共识系统在对待共识信息进行共识处理时,可分为广播阶段以及回复阶段。图4是根据本发明实施例的一种信息共识方法的示意图。如图4所示,在广播阶段,主节点leader将一个待共识信息打包,并将打包后的待共识信息在分布式系统共识组内进行广播。其中,如图4所示,在主节点之外,分布式系统共识组中国还有4个其他节点,分别为keeper1、keeper2、keeper3以及keeper4。在广播阶段,keeper1、keeper2、keeper3以及keeper4都将接收到主节点leader所发出的待共识信息。
[0043]
步骤s106,在其他节点接收到待共识信息之后,控制其他节点中的每个节点对待共识信息进行验证,得到第一验证结果。
[0044]
在步骤s106中,在其他节点接收到待共识信息之后,信息共识系统可控制其他节点中的每个节点分别对待共识信息进行验证。例如,如图4所示,keeper1、keeper2、keeper3以及keeper4在接收到主节点leader所广播的待共识信息之后,都会对待共识信息进行验证。另外,当一个节点对待共识信息验证成功后,该节点将生成第一验证结果。
[0045]
步骤s108,根据第一验证结果,控制目标节点通过对应的节点私钥对待共识信息进行签名,生成目标签名。
[0046]
在步骤s108中,目标节点为对待共识信息验证成功的节点。例如,如图4所示,当keeper1对待共识信息进行验证之后,如果keeper1确认待共识信息为验证成功的状态时,keeper1将使用对应的节点私钥对待共识信息进行签名。此时,信息共识系统将keeper1确认为一个目标节点,并将keeper1作出的签名确认为一个目标签名。同理,keeper2、keeper3以及keeper4在对待共识信息验证成功时,也将生成对应的目标签名。
[0047]
需要注意到的是,在上述过程中,本技术只需要在主节点与其他节点之间进行一轮信息交互确认,即可确定对待共识信息进行确认的节点的节点数量,从而避免了现有技术中由于多轮信息交互确认所导致的通信资源开销大的问题,进而降低了通信资源开销。
[0048]
步骤s110,根据主节点获取的目标签名的数量确定待共识信息是否完成共识。
[0049]
在步骤s110中,在生成对应的目标签名之后,每个目标节点将目标签名返回至主节点。另外,主节点将实时统计所接收到的目标签名的数量,在主节点接收到的目标签名的数量大于或者等于预设数量时,则说明待共识信息已经得到了大多数节点的共识,从而可确定待共识信息已经完成了共识。例如,如图4所示,在回复阶段中,keeper1、keeper2、keeper3以及keeper4都生成了对应的目标签名,并将目标签名返回至主节点leader。如果图4中的信息共识系统所设置的预设数量为3时,则目标签名的数量已经大于预设数量,此时,信息共识系统可确认待共识信息已经完成了共识。
[0050]
基于上述步骤s102至步骤s110的内容可知,在本发明实施例中,采用主节点与其他节点之间进行一轮信息交互确认的方式,在从多个节点中确定主节点之后,通过主节点将待共识信息广播至多个节点中的其他节点,并在其他节点接收到待共识信息之后,控制其他节点中的每个节点对待共识信息进行验证,得到第一验证结果,从而根据第一验证结果,控制目标节点通过对应的节点私钥对待共识信息进行签名,生成目标签名,进而根据主节点获取的目标签名的数量确定待共识信息是否完成共识。其中,目标节点为对待共识信息验证成功的节点。
[0051]
由上述内容可知,在对于一个待共识信息进行共识处理时,主节点与其他节点之间只需要一轮信息交互确认即可,即首先通过主节点向其他节点广播待共识信息,然后在其他节点接收到待共识信息之后,由其他节点中的目标节点生成目标签名并向主节点返回目标签名。与现有技术中至少需要多轮信息交互确认相比,本技术减少了信息交互确认的次数,从而降低了分布式系统在进行信息共识时的通信资源开销,解决了现有技术中分布式系统进行信息共识时存在通信资源开销大的技术问题。另外,在确认待共识信息的过程中,通过签名的方式对待共识信息进行确认,提高了信息确认过程的公开性以及透明性。
[0052]
由此可见,通过本技术的技术方案,达到了简化信息交互过程的目的,从而实现了降低通信资源开销的效果,进而解决了有技术中分布式系统进行信息共识时存在通信资源开销大的技术问题。
[0053]
在一种可选的实施例中,在通过主节点将待共识信息广播至多个节点中的其他节点之前,信息共识系统可获取与分布式系统对应的用户公私钥对,并基于用户私钥生成与分布式系统中的每个节点对应的节点公私钥对。其中,节点公私钥对包含节点公钥以及节点私钥,用户公私钥对包含用户公钥以及用户私钥。
[0054]
可选的,信息共识系统通过秘钥生成单元,可生成上述公私钥对以及上述节点公私钥对。例如,在分布式系统共识组中一共有n个节点,在节点初始化时,秘钥生成单元可针对分布式系统生成对应的用户公私钥对(sk,pk),进而使用用户私钥sk根据门限签名算法生成多组节点公私钥对((sk1,pk1),(sk2,pk2)
……
(skn,pkn))。其中,分布式系统中的每个节点对应一组节点公私钥对。
[0055]
进一步地,上述门限签名算法是一种特殊的数字签名方式,其流程可以比作将钥匙拆分成多份钥匙碎片,并且多个钥匙碎片由不同的签名参与方进行保管。在有足够数量的多个签名参与方共同拿出自己持有的钥匙碎片时,才能获得完整的钥匙将锁打开。
[0056]
在一种可选的实施例中,假设预设数量为t,信息共识系统通过用户私钥sk生成多个节点公私钥对((sk1,pk1),(sk2,pk2)
……
(skn,pkn)),并将这些公私钥对分发给分布式系统中的n个节点。其中,每个节点将自己收到的节点公钥公开,节点私钥不公开。在此基础上,信息共识系统使用任意t 1个节点私钥都可以算出用户私钥sk,但是任意少于t 1个节点私钥,都无法计算出用户私钥sk。
[0057]
可选的,在签名流程中,一个节点i使用对应的节点私钥ski对待共识信息d进行签名,得到目标签名ri,目标签名ri可以被节点i对应的节点公钥pki验证。同理,当t 1个节点同时对待共识信息d进行签名时,将最终生成t 1个目标签名,信息共识系统将t 1个目标签名通过门限签名算法可聚合生成聚合签名r。其中,聚合签名r则为用户私钥sk对待共识信息d的签名。另外,在签名流程中,多个节点之间的节点私钥互相保密,相互交换的只有目标签名。
[0058]
由此可见,通过门限签名算法,不仅仅可根据用户私钥生成多个节点公私钥对,还可通过多个目标签名生成聚合签名。
[0059]
需要注意到的是,非聚合类的签名方案需要将所有目标节点的目标签名都保存在预设区块链平台中,从而造成保存在预设区块链平台中的数据量会被节点的数量影响。例如,如果分布式系统中的节点越多,则生成的目标签名也会越多,需要保留在预设区块链平台中的数据也就越大,从而将直接影响预设区块链平台的性能。
[0060]
而本技术通过生成聚合签名的方案,无论有多少数量的目标签名,都最终生成一个聚合签名,并且在预设区块链平台中只需要存储该聚合签名即可,从而避免了由于生成的目标签名过多,导致的预设区块链平台存储压力过大的问题,进而实现了提高预设区块链平台的扩展性的效果。
[0061]
在一种可选的实施例中,在基于用户私钥生成与分布式系统中的每个节点对应的节点公私钥对之后,信息共识系统获取分布式系统中的每个节点的节点标识,并将节点公私钥对分发至与节点标识对应的第一节点,从而获取节点公私钥对与第一节点之间的关联关系,并将关联关系设置在智能合约中,其中,智能合约部署于预设区块链平台中。
[0062]
可选的,在秘钥生成单元生成多个节点公私钥对之后,秘钥生成单元可根据节点标识,将节点公私钥对分别发送给对应的第一节点。例如,节点公私钥对(sk1,pk1)分发给对应的节点1,节点公私钥对(ski,pki)分发给对应的节点i。
[0063]
另外,信息共识系统还将节点公私钥对与第一节点之间的关联关系设置在智能合约中。其中,智能合约是部署在网络上的一段代码与数据的集合,当满足一定的条件时,代码可以自动执行,不受人为的干预。因此,智能合约可有效规避合约各方的信用问题,一旦
合约部署成功,执行过程将由网络中的节点完成,不受合约各方的影响,从而实现了保障合约顺利履行的效果。
[0064]
此外,在本技术中,预设区块链平台是独立于分布式系统共识组的区块链网络,其种类可以是公有链、联盟链以及私有链中的任意一种。在本技术中,预设区块链平台可支持部署智能合约,并且预设区块链平台可以通过交易的形式将共识结果记录在区块中。
[0065]
可选的,图5是根据本发明实施例的共识结果的数据结构示意图。如图5所示,每一次共识完成后得到的共识结果以交易的形式存储在预设区块链平台中,共识结果至少包括:目标节点集合、主节点的节点标识、本次共识成功的时间戳以及聚合签名。
[0066]
需要注意到的是,在信息共识过程中,主节点与智能合约可进行交互,预设区块链平台可以作为一个可信机构,提供可靠的信息存储服务,提高数据的安全性,使信息共识完成后得到的共识结果具有公开透明可追溯的优点。
[0067]
在一种可选的实施例中,信息共识系统在其他节点接收到待共识信息之后,可控制其他节点中的每个节点对待共识信息进行验证,得到第一验证结果。具体的,其他节点中的每个节点可识别待共识信息对应的业务场景,并根据业务场景确定验证规则,从而基于验证规则对待共识信息进行验证,在待共识信息满足验证规则时,确定生成第一验证结果。其中,第一验证结果用于表征待共识信息验证成功。
[0068]
可选的,在许多业务场景下都可能使用到分布式系统,因此,基于不同的业务场景,分布式系统在进行信息共识时,所设计的验证规则也可能不同。本技术可基于不同业务场景下所设计的不同的验证规则,对待共识信息进行验证,并在待共识信息满足验证规则时,确定生成第一验证结果。
[0069]
在一种可选的实施例中,在根据主节点获取的目标签名的数量确定待共识信息是否完成共识之前,目标节点可将目标签名发送至主节点,从而信息共识系统控制主节点根据待共识信息以及目标节点对应的节点公钥,对目标签名进行验证,并在目标签名验证成功之后,存储目标签名至主节点中。
[0070]
可选的,在主节点接收到目标节点发送的目标签名之后,主节点可通过目标节点所公开的节点公钥以及共识信息对目标签名进行验证。另外,在一个目标签名验证成功之后,信息共识系统将控制主节点保留该目标签名。
[0071]
在一种可选的实施例中,在主节点中的目标签名的数量大于或等于预设数量时,主节点对主节点中的目标签名进行聚合,得到聚合签名,并通过用户公钥对聚合签名进行验证,在聚合签名验证成功的情况下,确定待共识信息完成共识。
[0072]
可选的,主节点在收集目标签名的过程中,将实时统计已存储的目标签名的数量。如果主节点中的目标签名的数量大于或者等于预设数量时,主节点将通过门限签名算法对主节点中存储的目标签名进行聚合,并生成一个聚合签名。另外,在生成聚合签名之后,信息共识系统还将通过用户公钥对聚合签名进行验证,如果验证通过,则确认待共识信息完成共识。
[0073]
需要说明到的是,通过生成聚合签名,并对聚合签名进行验证,实现了提高共识过程的安全性的效果。
[0074]
在一种可选的实施例中,在确定待共识信息成功完成共识之后,信息共识系统可控制主节点根据目标节点的节点标识,生成目标节点集合以及目标签名集合,将目标节点
集合、目标签名集合、聚合签名以及待共识信息发送至智能合约。其中,目标节点集合中至少包含每个目标节点的节点标识,目标签名集合中至少包含每个目标节点对待共识信息作出的目标签名。
[0075]
可选的,信息共识系统在对聚合签名进行验证通过成功之后,信息共识系统控制主节点针对此次信息共识过程生成目标节点集合、目标签名集合、聚合签名以及共识信息。例如,在一次信息共识过程中,共有3个目标节点作出了目标签名。其中,3个目标节点所对应的节点标识分别为节点1、节点2以及节点3,目标签名分别为目标签名a、目标签名b以及目标签名c,基于3个目标签名生成的聚合签名为聚合签名r。在此基础上,主节点生成的目标节点集合即为{节点1,节点2,节点3},主节点生成的目标签名集合即为{目标签名a,目标签名b,目标签名c}。
[0076]
进一步地,在得到目标签名集合以及目标节点集合之后,主节点将目标节点集合、目标签名集合、聚合签名以及待共识信息发送至智能合约。
[0077]
在一种可选的实施例中,在将目标节点集合、目标签名集合、聚合签名以及待共识信息发送至智能合约之后,信息共识系统控制智能合约根据节点私钥对目标签名集合中的每个目标签名进行验证,生成第二验证结果,并控制智能合约根据用户公钥对聚合签名进行验证,生成第三验证结果,在第二验证结果以及第三验证结果全部为验证成功的状态时,将聚合签名以及目标节点集合存储至预设区块链平台中。
[0078]
可选的,智能合约在接收到主节点发送的共识结果之后,根据目标节点对应的节点私钥,对目标签名集合中的每个目标签名进行验证,在每个目标签名都验证成功之后,智能合约将根据用户公钥对聚合签名进行验证,在聚合签名也验证成功之后,智能合约将与预设区块链平台进行交互,以交易的形式将聚合签名以及目标节点集合存储至预设区块链平台中。
[0079]
需要注意到的是,由于保存在预设区块链网络链上的数据具有安全性高以及公开透明可追溯的特点。因此,本技术通过将聚合签名以及目标节点集合保存在预设区块链网络上,实现了提高数据安全性的效果,并且也可以被第三方服务随时调取审计,提高了数据提取的灵活性。
[0080]
在一种可选的实施例中,图6是根据本发明实施例的基于区块链的信息共识方法的流程图。如图6所示,信息共识方法至少包括如下步骤:
[0081]
步骤1,信息共识系统首先进行秘钥初始化,并识别分布式系统共识组中的节点数量以及每个节点的节点标识。另外,信息共识系统还将获取预设数量的值。其中,秘钥初始化的过程具体为,由秘钥生成单元根据门限签名算法生成用户公私钥对,并基于用户私钥生成节点公私钥对。
[0082]
步骤2,秘钥生成单元将节点公私钥对分别发送给对应的第一节点。随后信息共识系统通过智能合约交互单元与预设区块链平台进行交互,并在智能合约中设置节点公私钥对与第一节点之间的关联关系。
[0083]
步骤3,从多个节点中确定主节点,并进入广播阶段。在此阶段,假设待共识信息为d,信息共识系统可通过主节点将d广播给分布式系统共识组内的其他节点,并等待其他节点的返回信息。
[0084]
步骤4,非主节点的其他节点i(i表征其他节点中的任意一个节点)在收到主节点
发来的d之后,根据业务场景对d进行相应的验证,验证通过后,使用对应的节点私钥ski对d进行签名,得到一个目标签名ri=sing(ski,d)。最后,其他节点i还需将目标签名ri回复给主节点。
[0085]
步骤5,主节点收集其他节点发来的目标签名,并根据节点公钥pki对每个目标签名进行验证verify(d,pki,ri)。在一个目标签名验证通过后,主节点将该目标签名进行存储。在主节点存储的目标签名的数量大于或者等于预设数量时,主节点根据门限签名算法对主节点中的目标签名进行聚合,得到聚合签名r。最后,主节点使用用户公钥pk对聚合签名r进行验证verify(d,pk,r),在验证成功之后,确认此次共识完成。
[0086]
步骤6,主节点根据目标节点所对应的节点标识,生成目标节点集合以及目标签名集合,并将目标节点集合、目标签名集合、聚合签名以及待共识信息发送至智能合约。其中,目标节点为生成目标签名的节点。
[0087]
步骤7,智能合约在接收到主节点发送的目标节点集合、目标签名集合、聚合签名以及待共识信息之后,根据节点公钥pki对目标签名集合中的每个签名进行单独验证verify(d,pki,ri),再根据用户公钥pk对聚合签名进行验证verify(d,pk,r)。在两项验证都验证成功之后,智能合约将聚合签名以及目标节点集合保存在预设区块链平台中。
[0088]
由上述内容可知,在本技术中,主节点通过收集其他节点的目标签名,以保证分布式系统中大多数节点对待共识信息做出了共识,并将此次信息共识所生成的共识结果发送至智能合约,通过智能合约保存在区块链网络中,从而实现了简化信息共识过程中主节点与其他节点之间的信息交互流程。另外,利用预设区块链平台存储聚合签名以及目标节点集合等共识结果,可实现共识结果的可追溯以及可审计,并且提高了信息共识过程的透明度。
[0089]
由上述内容可知,在对于一个待共识信息进行共识处理时,主节点与其他节点之间只需要一轮信息交互确认即可,即首先通过主节点向其他节点广播待共识信息,然后在其他节点接收到待共识信息之后,由其他节点中的目标节点生成目标签名并向主节点返回目标签名。与现有技术中至少需要多轮信息交互确认相比,本技术减少了信息交互确认的次数,从而降低了分布式系统在进行信息共识时的通信资源开销,解决了现有技术中分布式系统进行信息共识时存在通信资源开销大的技术问题。另外,在确认待共识信息的过程中,通过签名的方式对待共识信息进行确认,提高了信息确认过程的公开性以及透明性。
[0090]
由此可见,通过本技术的技术方案,达到了简化信息交互过程的目的,从而实现了降低通信资源开销的效果,进而解决了有技术中分布式系统进行信息共识时存在通信资源开销大的技术问题。
[0091]
实施例2
[0092]
根据本发明实施例,还提供了一种基于区块链的信息共识装置实施例,其中,图7是根据本发明实施例的基于区块链的信息共识装置示意图,如图7所示,该装置包括:第一确定模块701、广播模块702、第一控制模块703、第二控制模块704以及第二确定模块705。
[0093]
其中,第一确定模块701,用于从多个节点中确定主节点;广播模块702,用于通过主节点将待共识信息广播至多个节点中的其他节点;第一控制模块703,用于在其他节点接收到待共识信息之后,控制其他节点中的每个节点对待共识信息进行验证,得到第一验证结果;第二控制模块704,用于根据第一验证结果,控制目标节点通过对应的节点私钥对待
共识信息进行签名,生成目标签名,其中,目标节点为对待共识信息验证成功的节点;第二确定模块705,用于根据主节点获取的目标签名的数量确定待共识信息是否完成共识。
[0094]
需要说明的是,上述第一确定模块701、广播模块702、第一控制模块703、第二控制模块704以及第二确定模块705对应于上述实施例中的步骤s102至步骤s110,五个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
[0095]
可选地,基于区块链的信息共识装置还包括:获取模块以及生成模块。其中,获取模块,用于获取与分布式系统对应的用户公私钥对,其中,用户公私钥对包含用户公钥以及用户私钥;生成模块,用于基于用户私钥生成与分布式系统中的每个节点对应的节点公私钥对,其中,节点公私钥对包含节点公钥以及节点私钥。
[0096]
可选地,基于区块链的信息共识装置还包括:第一获取模块、分发模块、第二获取模块以及设置模块。其中,第一获取模块,用于获取分布式系统中的每个节点的节点标识;分发模块,用于将节点公私钥对分发至与节点标识对应的第一节点;第二获取模块,用于获取节点公私钥对与第一节点之间的关联关系;设置模块,用于将关联关系设置在智能合约中,其中,智能合约部署于预设区块链平台中。
[0097]
可选地,上述第一控制模块还包括:识别模块、第三确定模块、验证模块以及第四确定模块。其中,识别模块,用于识别待共识信息对应的业务场景;第三确定模块,用于根据业务场景确定验证规则;验证模块,用于基于验证规则对待共识信息进行验证;第四确定模块,用于在待共识信息满足验证规则时,确定生成第一验证结果,其中,第一验证结果用于表征待共识信息验证成功。
[0098]
可选地,基于区块链的信息共识装置还包括:发送模块、第三控制模块以及存储模块。其中,发送模块,用于将目标签名发送至主节点;第三控制模块,用于控制主节点根据待共识信息以及目标节点对应的节点公钥,对目标签名进行验证;存储模块,用于在目标签名验证成功之后,存储目标签名至主节点中。
[0099]
可选地,上述第二确定模块还包括:聚合模块、第一验证模块以及第五确定模块。其中,聚合模块,用于在主节点中的目标签名的数量大于或等于预设数量时,对主节点中的目标签名进行聚合,得到聚合签名;第一验证模块,用于通过用户公钥对聚合签名进行验证;第五确定模块,用于在聚合签名验证成功的情况下,确定待共识信息完成共识。
[0100]
可选地,基于区块链的信息共识装置还包括:第四控制模块以及第一发送模块。其中,第四控制模块,用于控制主节点根据目标节点的节点标识,生成目标节点集合以及目标签名集合,其中,目标节点集合中至少包含每个目标节点的节点标识,目标签名集合中至少包含每个目标节点对待共识信息作出的目标签名;第一发送模块,用于将目标节点集合、目标签名集合、聚合签名以及待共识信息发送至智能合约。
[0101]
可选地,基于区块链的信息共识装置还包括:第五控制模块、第六控制模块以及第一存储模块。其中,第五控制模块,用于控制智能合约根据节点私钥对目标签名集合中的每个目标签名进行验证,生成第二验证结果;第六控制模块,用于控制智能合约根据用户公钥对聚合签名进行验证,生成第三验证结果;第一存储模块,用于在第二验证结果以及第三验证结果全部为验证成功的状态时,将聚合签名以及目标节点集合存储至预设区块链平台中。
[0102]
实施例3
[0103]
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述实施例1中的基于区块链的信息共识方法。
[0104]
实施例4
[0105]
根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机程序/指令,计算机程序/指令被处理器执行时实现上述实施例1中的基于区块链的信息共识方法。
[0106]
实施例5
[0107]
根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的资金流向的监测方法。其中,图8是根据本发明实施例的一种可选的电子设备的示意图,如图8所示,电子设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:
[0108]
从多个节点中确定主节点;通过主节点将待共识信息广播至多个节点中的其他节点;在其他节点接收到待共识信息之后,控制其他节点中的每个节点对待共识信息进行验证,得到第一验证结果;根据第一验证结果,控制目标节点通过对应的节点私钥对待共识信息进行签名,生成目标签名,其中,目标节点为对待共识信息验证成功的节点;根据主节点获取的目标签名的数量确定待共识信息是否完成共识。
[0109]
可选的,处理器执行程序时还可实现以下步骤:在通过主节点将待共识信息广播至多个节点中的其他节点之前,获取与分布式系统对应的用户公私钥对,其中,用户公私钥对包含用户公钥以及用户私钥;基于用户私钥生成与分布式系统中的每个节点对应的节点公私钥对,其中,节点公私钥对包含节点公钥以及节点私钥。
[0110]
可选的,处理器执行程序时还可实现以下步骤:在基于用户私钥生成与分布式系统中的每个节点对应的节点公私钥对之后,获取分布式系统中的每个节点的节点标识;将节点公私钥对分发至与节点标识对应的第一节点;获取节点公私钥对与第一节点之间的关联关系;将关联关系设置在智能合约中,其中,智能合约部署于预设区块链平台中。
[0111]
可选的,处理器执行程序时还可实现以下步骤:识别待共识信息对应的业务场景;根据业务场景确定验证规则;基于验证规则对待共识信息进行验证;在待共识信息满足验证规则时,确定生成第一验证结果,其中,第一验证结果用于表征待共识信息验证成功。
[0112]
可选的,处理器执行程序时还可实现以下步骤:在根据主节点获取的目标签名的数量确定待共识信息是否完成共识之前,将目标签名发送至主节点;控制主节点根据待共识信息以及目标节点对应的节点公钥,对目标签名进行验证;在目标签名验证成功之后,存储目标签名至主节点中。
[0113]
可选的,处理器执行程序时还可实现以下步骤:在主节点中的目标签名的数量大于或等于预设数量时,对主节点中的目标签名进行聚合,得到聚合签名;通过用户公钥对聚合签名进行验证;在聚合签名验证成功的情况下,确定待共识信息完成共识。
[0114]
可选的,处理器执行程序时还可实现以下步骤:在确定待共识信息成功完成共识之后,控制主节点根据目标节点的节点标识,生成目标节点集合以及目标签名集合,其中,
目标节点集合中至少包含每个目标节点的节点标识,目标签名集合中至少包含每个目标节点对待共识信息作出的目标签名;将目标节点集合、目标签名集合、聚合签名以及待共识信息发送至智能合约。
[0115]
可选的,处理器执行程序时还可实现以下步骤:在将目标节点集合、目标签名集合、聚合签名以及待共识信息发送至智能合约之后,控制智能合约根据节点私钥对目标签名集合中的每个目标签名进行验证,生成第二验证结果;控制智能合约根据用户公钥对聚合签名进行验证,生成第三验证结果;在第二验证结果以及第三验证结果全部为验证成功的状态时,将聚合签名以及目标节点集合存储至预设区块链平台中。
[0116]
本文中的电子设备可以是服务器、手机、平板、计算机等设备。
[0117]
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0118]
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0119]
在本技术所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0120]
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0121]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0122]
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0123]
以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
技术特征:
1.一种基于区块链的信息共识方法,其特征在于,应用于与预设区块链平台连接的分布式系统中,其中,所述分布式系统中存在用于处理待共识信息的多个节点,包括:从所述多个节点中确定主节点;通过所述主节点将所述待共识信息广播至所述多个节点中的其他节点;在所述其他节点接收到所述待共识信息之后,控制所述其他节点中的每个节点对所述待共识信息进行验证,得到第一验证结果;根据所述第一验证结果,控制目标节点通过对应的节点私钥对所述待共识信息进行签名,生成目标签名,其中,所述目标节点为对所述待共识信息验证成功的节点;根据所述主节点获取的所述目标签名的数量确定所述待共识信息是否完成共识。2.根据权利要求1所述的方法,其特征在于,在通过所述主节点将所述待共识信息广播至所述多个节点中的其他节点之前,所述方法还包括:获取与所述分布式系统对应的用户公私钥对,其中,所述用户公私钥对包含用户公钥以及用户私钥;基于所述用户私钥生成与所述分布式系统中的每个节点对应的节点公私钥对,其中,所述节点公私钥对包含节点公钥以及所述节点私钥。3.根据权利要求2所述的方法,其特征在于,在基于所述用户私钥生成与所述分布式系统中的每个节点对应的节点公私钥对之后,所述方法还包括:获取所述分布式系统中的每个节点的节点标识;将所述节点公私钥对分发至与所述节点标识对应的第一节点;获取所述节点公私钥对与所述第一节点之间的关联关系;将所述关联关系设置在智能合约中,其中,所述智能合约部署于所述预设区块链平台中。4.根据权利要求1所述的方法,其特征在于,在所述其他节点接收到所述待共识信息之后,控制所述其他节点中的每个节点对所述待共识信息进行验证,得到第一验证结果,包括:识别所述待共识信息对应的业务场景;根据所述业务场景确定验证规则;基于所述验证规则对所述待共识信息进行验证;在所述待共识信息满足所述验证规则时,确定生成所述第一验证结果,其中,所述第一验证结果用于表征所述待共识信息验证成功。5.根据权利要求3所述的方法,其特征在于,在根据所述主节点获取的所述目标签名的数量确定所述待共识信息是否完成共识之前,所述方法还包括:将所述目标签名发送至所述主节点;控制所述主节点根据所述待共识信息以及所述目标节点对应的节点公钥,对所述目标签名进行验证;在所述目标签名验证成功之后,存储所述目标签名至所述主节点中。6.根据权利要求5所述的方法,其特征在于,根据所述主节点获取的所述目标签名的数量确定所述待共识信息是否完成共识,包括:在所述主节点中的目标签名的数量大于或等于预设数量时,对所述主节点中的目标签
名进行聚合,得到聚合签名;通过所述用户公钥对所述聚合签名进行验证;在所述聚合签名验证成功的情况下,确定所述待共识信息完成共识。7.根据权利要求6所述的方法,其特征在于,在确定所述待共识信息完成共识之后,所述方法还包括:控制所述主节点根据所述目标节点的节点标识,生成目标节点集合以及目标签名集合,其中,所述目标节点集合中至少包含每个所述目标节点的节点标识,所述目标签名集合中至少包含每个所述目标节点对所述待共识信息作出的目标签名;将所述目标节点集合、所述目标签名集合、所述聚合签名以及所述待共识信息发送至所述智能合约。8.根据权利要求7所述的方法,其特征在于,在将所述目标节点集合、所述目标签名集合、所述聚合签名以及所述待共识信息发送至所述智能合约之后,所述方法还包括:控制所述智能合约根据所述节点私钥对所述目标签名集合中的每个所述目标签名进行验证,生成第二验证结果;控制所述智能合约根据所述用户公钥对所述聚合签名进行验证,生成第三验证结果;在所述第二验证结果以及所述第三验证结果全部为验证成功的状态时,将所述聚合签名以及所述目标节点集合存储至所述预设区块链平台中。9.一种基于区块链的信息共识装置,其特征在于,应用于与预设区块链平台连接的分布式系统中,其中,所述分布式系统中存在用于处理待共识信息的多个节点,包括:第一确定模块,用于从所述多个节点中确定主节点;广播模块,用于通过所述主节点将所述待共识信息广播至所述多个节点中的其他节点;第一控制模块,用于在所述其他节点接收到所述待共识信息之后,控制所述其他节点中的每个节点对所述待共识信息进行验证,得到第一验证结果;第二控制模块,用于根据所述第一验证结果,控制目标节点通过对应的节点私钥对所述待共识信息进行签名,生成目标签名,其中,所述目标节点为对所述待共识信息验证成功的节点;第二确定模块,用于根据所述主节点获取的所述目标签名的数量确定所述待共识信息是否完成共识。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至8任一项中所述的基于区块链的信息共识方法。11.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现用于运行程序,其中,所述程序被设置为运行时执行所述权利要求1至8任一项中所述的基于区块链的信息共识方法。12.一种计算机程序产品,包括计算机程序/指令,其特征在于,所述计算机程序/指令被处理器执行时实现权利要求1至8任一项所述的基于区块链的信息共识方法。
技术总结
本发明公开了一种基于区块链的信息共识方法、装置及电子设备,涉及区块链技术领域。其中,该方法应用于与预设区块链平台连接的分布式系统中,分布式系统中存在用于处理待共识信息的多个节点,包括:从多个节点中确定主节点;通过主节点将待共识信息广播至多个节点中的其他节点;在其他节点接收到待共识信息之后,控制其他节点中的每个节点对待共识信息进行验证,得到第一验证结果;根据第一验证结果,控制目标节点通过对应的节点私钥对待共识信息进行签名,生成目标签名;根据主节点获取的目标签名的数量确定待共识信息是否完成共识。本发明解决了现有技术中分布式系统进行信息共识时存在通信资源开销大的技术问题。识时存在通信资源开销大的技术问题。识时存在通信资源开销大的技术问题。
技术研发人员:杨浩圆 林芝峰 彭顺求 罗强
受保护的技术使用者:中国工商银行股份有限公司
技术研发日:2022.02.18
技术公布日:2022/5/25
转载请注明原文地址:https://tc.8miu.com/read-7057.html