一种基于区块链的共识方法及装置制造方法及图纸

技术编号:24616460 阅读:28 留言:0更新日期:2020-06-24 02:47
本申请实施例公开了一种基于区块链的共识方法及装置,一个区块链节点包括第一服务器、第二服务器和至少一个数据库,所述方法包括:数据库存储执行共识所需的共识数据,供第一服务器和第二服务器在执行共识的过程中进行调用,第一服务器在执行共识前或执行共识过程中出现异常,第二服务器代替第一服务器,从数据库中获取共识数据,并根据共识数据执行共识,生成共识结果,第二服务器将共识结果存储在数据库中。利用本申请实施例,节点中正常的服务器能够接替异常的服务器,从数据库中获取共识数据执行共识,从而保证了共识的正常进行,能够在一定程度上提升共识过程的成功率,进而提升区块链的业务处理效率。

A consensus method and device based on blockchain

【技术实现步骤摘要】
一种基于区块链的共识方法及装置
本申请涉及计算机
,尤其涉及一种基于区块链的共识方法及装置。
技术介绍
目前,区块链技术得到了广泛应用,其去中心化的模式保证了数据不易被篡改,从而提升了安全性。在实际应用场景下,区块链能够为客户端提供相应的业务服务,其中的区块链节点可以针对用户的业务请求进行处理,生成相应的处理结果。但区块链中可能包含恶意节点或故障节点,这无疑将影响客户端所获得的业务服务。为此,区块链中各节点之间可进行诸如拜占庭容错算法(PracticalByzantineFaultTolerance,PBFT)的共识过程,以使得各节点能够共同认可正确的处理结果。以基于PBFT的共识过程为例,PBFT的共识过程包含预准备阶段(pre-prepare)、准备阶段(prepare)、确认阶段(commit),如图1所示。接收到客户端(Client,图1中以C表示)的业务请求的节点(如图中编号为0的节点),会将该业务请求发送给其他节点(如图中编号为1、2、3的节点)进行共识。在每个阶段,各节点均会向彼此发送共识消息,使得各节点进行共识。经过三个阶段的共识过程,可视为共识达成,各节点便会分别处理业务请求,并向客户端反馈处理结果。在现有技术中的一些场景下,为了能够处理大量的共识过程,上述区块链的每个节点中,通常设置多个服务器,不同的服务器可分别参与不同的共识过程,以提升区块链的处理量及处理效率。但是,在实际应用中,节点中的服务器存在下线或重启等异常现象,以PBFT的共识过程为例,一旦服务器出现异常现象,将导致服务器不能继续参与共识并影响共识达成的概率,若某次共识未达成,则无论区块链处于任何一种共识阶段,均会从预准备阶段起重新发起共识。显然,这无疑会影响区块链共识的效率,并进一步影响区块链对业务处理的效率。
技术实现思路
本申请实施例提供一种基于区块链的共识方法及装置,用以解决目前节点中的服务器发生异常时导致共识效率较低的问题。本申请实施例提供的一种基于区块链的共识方法,一个区块链节点包括第一服务器、第二服务器和至少一个数据库构成,所述方法包括:所述数据库存储执行共识所需的共识数据,供所述第一服务器和所述第二服务器在执行共识的过程中进行调用;所述第一服务器在执行共识前或执行共识时出现异常;所述第二服务器代替所述第一服务器,从所述数据库中获取共识数据,并根据所述共识数据执行共识,生成共识结果;所述第二服务器将所述共识结果存储在所述数据库中。本申请实施例提供的一种基于区块链的共识装置,一个区块链节点包括第一服务器、第二服务器和至少一个数据库,其中,所述数据库存储执行共识所需的共识数据,供所述第一服务器和所述第二服务器在执行共识的过程中进行调用;所述第一服务器在执行共识前或执行共识时出现异常;所述装置包括:获取模块,根据所述共识消息,从所述数据库中获取与所述共识消息对应的共识数据;共识执行模块,根据所述共识数据执行共识,生成共识结果;存储模块,将所述共识消息及所述共识结果存储在所述数据库中。本申请实施例提供一种基于区块链的共识方法及装置,对于区块链节点中的每一服务器而言,参与了某次共识过程的服务器,会将不同共识阶段的共识消息或自身所生成的当前阶段的共识结果,进行“公开”保存,即,存储在该区块链节点内的数据库中,而该数据库对于该区块链节点内的所有服务器均可使用,这样一来,如果参与某次共识的服务器出现下线或重启等异常现象,该服务器的共识数据可被该区块链节点内的其他服务器使用,并可代替出现异常现象的服务器继续执行相应的共识过程。显然,相较于现有技术,区块链节点中的各服务器将共识数据存储在该区块链节点内数据库的方式,即使在某一服务器出现异常时,其他正常运行的服务器也能够从数据库中获取到相应的共识数据,接替异常的服务器完成共识,也就保证了共识过程的正常进行,在减少重新发起共识次数的同时,能够在一定程度上提升共识过程的成功率,进而提升区块链的业务处理效率。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1为现有技术中基于PBFT的共识过程;图2a为本申请实施例提供的基于区块链的共识过程中区块链的架构;图2b为本申请实施例提供的基于区块链的共识过程中区块链节点的架构。图2c为本申请实施例提供的在服务器侧的基于区块链的共识过程;图2d为本申请实施例提供的另一种区块链节点的架构;图3a和3b为本申请实施例提供的一种同一共识过程中的服务器变更过程示意图;图4为本申请实施例提供的一种在服务器侧的基于区块链的共识装置结构示意图。具体实施方式为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。正如前述,在任意一次区块链内各节点之间的共识过程中,任一节点内参与本次共识的服务器可能会出现下线或重启等异常现象,导致该服务器不能继续参与共识,从而有可能会降低共识成功率,特别是在采用PBFT共识的情况下,一定次数的共识失败,便可能触发PBFT下的垃圾回收机制,清除各服务器中的共识数据,显然,这无疑将影响区块链的业务处理。基于此,本申请实施例中提供一种基于区块链的共识方法,通过将共识数据存储在区块链节点中的数据库,使得当服务器出现异常(下线或重启)时,该区块链节点中其他正常运行的服务器也能够读取已存储在数据库中的共识数据,代替出现异常现象的服务器继续执行共识。当然,本申请实施例中的基于区块链的共识方法并不仅限于基于PBFT的共识过程,还可用于诸如Paxos等共识算法的共识过程。需要说明的是,在本申请实施例中,基于区块链的共识方法所采用的架构如图2a所示,从图2a中可见,区块链中包含多个区块链节点,为了便于后续描述,以下将区块链节点简称为:节点。多个客户端可与该区块链进行业务交互,其中,所述的区块链,可以是联盟链和/或私有链,能够向用户提供业务服务。所述的客户端,可包括浏览器、应用等,客户端可以运行在诸如终端、服务器、数据库中,这里不作具体限定。基于图2a所示的架构,对于任一节点而言,其架构可如图2b所示。在图2b中可见,节点中包含n个服务器以及一个共用于各服务器的数据库。不同的服务器可参与不同的共识过程,各服务器之间可以彼此独立运行。所述的数据库用于为该节点中的各服务器提供数据存储服务。也就是说,各服务器在共识过程中,可将相应的共识数据存储在该数据库中。当然,图2b所示的节点中的数据库的数量仅是一种通用数量,在实际应用中,节点中的数据库的数量可以根据本文档来自技高网
...

【技术保护点】
1.一种基于区块链的共识方法,一个区块链节点包括第一服务器、第二服务器和至少一个数据库,所述方法包括:/n所述数据库存储执行共识所需的共识数据,供所述第一服务器和所述第二服务器在执行共识的过程中进行调用;/n在所述第一服务器执行共识前或执行共识过程中,所述第二服务器代替所述第一服务器,从所述数据库中获取共识数据,并根据所述共识数据执行共识,生成共识结果;/n所述第二服务器将所述共识结果存储在所述数据库中。/n

【技术特征摘要】
1.一种基于区块链的共识方法,一个区块链节点包括第一服务器、第二服务器和至少一个数据库,所述方法包括:
所述数据库存储执行共识所需的共识数据,供所述第一服务器和所述第二服务器在执行共识的过程中进行调用;
在所述第一服务器执行共识前或执行共识过程中,所述第二服务器代替所述第一服务器,从所述数据库中获取共识数据,并根据所述共识数据执行共识,生成共识结果;
所述第二服务器将所述共识结果存储在所述数据库中。


2.如权利要求1所述的方法,所述在所述第一服务器执行共识前,所述第二服务器代替所述第一服务器,从所述数据库中获取共识数据,具体包括:
当所述第一服务器在执行共识前出现异常时,所述第二服务器代替所述第一服务器,接收参与共识过程的其他设备发送的共识消息,根据所述共识消息,从所述数据库中获取与所述共识消息对应的共识数据;
所述在所述第一服务器执行共识过程中,所述第二服务器代替所述第一服务器,从所述数据库中获取共识数据,具体包括:
当所述第一服务器在执行共识过程中出现异常时,所述第二服务器代替所述第一服务器,接收参与共识过程的其他设备重试发送的共识消息,根据所述共识消息,从所述数据库中获取与所述共识消息对应的共识数据;
其中,当所述其他设备在发送共识消息并经过设定时间未接收到响应时,则重试发送所述共识消息。


3.如权利要求2所述的方法,所述共识消息中包含业务请求的标识;
根据所述共识消息,从所述数据库中获取与所述共识消息对应的共识数据,具体包括:
所述第二服务器根据所述共识消息中包含的业务请求的标识,从所述数据库中查找并获取与所述标识对应的共识数据。


4.如权利要求2所述的方法,所述区块链节点还包括网关;
所述接收参与共识过程的其他设备发送的共识消息,具体包括:
当所述网关确定出所述第一服务器在执行共识前出现异常时,所述网关将接收到的、参与共识过程的其他设备发送的共识消息,转发给正常运行的第二服务器;
所述第二服务器接收所述网关转发的、参与共识过程的其他设备发送的共识消息;
所述接收参与共识过程的其他设备重试发送的共识消息,具体包括:
当所述网关确定出所述第一服务器在执行共识过程中出现异常时,所述网关将接收到的、参与共识过程的其他设备重试发送的共识消息,转发给正常运行的第二服务器;
所述第二服务器接收所述网关转发的、参与共识过程的其他设备重试发送的共识消息。


5.如权利要求4所述的方法,...

【专利技术属性】
技术研发人员:唐强
申请(专利权)人:创新先进技术有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1