一种新增节点快速参与共识的方法、装置及电子设备制造方法及图纸

技术编号:25715501 阅读:29 留言:0更新日期:2020-09-23 03:00
本说明书实施例涉及一种新增节点快速参与共识的方法、装置及电子设备,应用于采用BFT共识算法的区块链系统中。新增共识节点直接同步当前区块高度的状态根信息,从而快速的达到最高区块高度的状态,并通过从多个共识节点的获取块信息作为校验,保证了最新块信息的安全性,使得新的节点能快速的参与共识出块。而从创世块到新增共识节点加入高度之间的区块,则在后续进行同步,不影响当前的共识的进行。

【技术实现步骤摘要】
一种新增节点快速参与共识的方法、装置及电子设备
本说明书实施例涉及网络
,尤其涉及一种新增节点快速参与共识的方法、装置及电子设备。
技术介绍
区块链中使用的类PBFT的BFT共识算法(ByzantineFaultTolerance,拜占庭容错算法),一般可以容忍不超过共识节点总数的1/3的恶意或者错误节点,仍能正常工作。其共识过程是通过统计共识节点投票数,一般共识投票达到共识节点总数的2/3以上,就可以出块。而目前的区块链系统中,在某一区块高度新增共识节点后,一般需要从别的节点同步从创世块开始到链的当前高度的块,然后每个区块逐一的执行,直至当前的高度从而得到最新的状态,然后才能参与共识投票。因此,新的共识节点接入以后,视当时区块的高度而定,可能很长时间无法真正参与区块链的共识,减少了链的共识安全性,而且新节点把时间浪费在历史块的同步和执行上。
技术实现思路
本说明书实施例提供一种新增节点快速参与共识方法、装置及电子设备,用以解决现有技术的新增节点无法立即参与共识的问题。为了解决上述技术问题,本说明书实施例采用下述技术方案:第一方面,提供了一种新增节点快速参与共识的方法,应用于采用BFT共识算法的区块链系统,所述方法包括:新增共识节点在第一区块高度时加入区块链;所述新增共识节点向已有共识节点同步所述第一区块高度的状态根信息以获得第一状态根信息,其中,所述第一状态根信息为超过共识节点总数三分之一以上的共识节点拥有的内容一致的状态根信息;所述新增节点对以所述第一状态根信息为根部的所有叶子节点的正确性进行验证;当所述叶子节点的正确性验证通过后,所述新增节点依次同步所述第一区块高度到当前区块高度的区块信息,并执行得到当前区块的状态信息;所述新增节点在当前区块高度的下一高度参与共识。第二方面,提供了一种新增节点快速参与共识的装置,应用于采用BFT共识算法的区块链系统,所述装置包括:节点添加模块:用于新增共识节点在第一区块高度时加入区块链;第一状态根信息获取模块:用于所述新增共识节点向已有共识节点同步所述第一区块高度的状态根信息以获得第一状态根信息,其中,所述第一状态根信息为超过共识节点总数三分之一以上的共识节点拥有的内容一致的状态根信息;叶子节点验证模块:用于所述新增节点对以所述第一状态根信息为根部的所有叶子节点的正确性进行验证;第一同步模块:当所述叶子节点的正确性验证通过后,所述新增节点依次同步所述第一区块高度到当前区块高度的区块信息,并执行得到当前区块的状态信息;所述新增节点在得到当前区块的状态信息后,在当前区块高度的下一高度参与共识。第三方面,提供了一种电子设备,包括:处理器;以及被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行根据本专利技术各实施例提供的新增节点快速参与共识方法。第四方面,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行根据本专利技术各实施例提供的新增节点快速参与共识方法。本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:新增共识节点直接同步当前区块高度的状态根信息,从而快速的达到最高区块高度的状态,并通过从多个共识节点的获取块信息作为校验,保证了最新块信息的安全性,使得新的节点能快速的参与共识出块。而从创世块到新增共识节点加入高度之间的区块,则在后续进行同步,不影响当前的共识的进行。附图说明为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书实施例中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1为本说明书实施例提供的新增节点快速参与共识方法的步骤示意图;图2为本说明书实施例提供的新增节点快速参与共识装置的结构示意图;图3为本说明书实施例提供的电子设备的结构示意图。具体实施方式为使本说明书实施例的目的、技术方案和优点更加清楚,下面将结合本说明书具体实施例及相应的附图对本说明书实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书实施例保护的范围。以下结合附图,详细说明本说明书各实施例提供的技术方案。需要说明的是,状态根信息(Stateroot)是由区块链节点通过执行每个块的交易得到的状态,通过默克尔树或者其变种,通过账户状态两两哈希,最终产生的状态根。每个账号的状态修改,都会产生一个新的状态根。实施例一参照图1所示,为本说明书实施例提供的一种新增节点快速参与共识方法的步骤示意图,应用于采用BFT共识算法的区块链系统,所述方法包括:步骤101:新增共识节点在第一区块高度时加入区块链;步骤102:所述新增共识节点向已有共识节点同步所述第一区块高度的状态根信息以获得第一状态根信息;其中,所述第一状态根信息为超过共识节点总数三分之一以上的共识节点拥有的内容一致的状态根信息;步骤103:所述新增节点对以所述第一状态根信息为根部的所有叶子节点的正确性进行验证;步骤104:当所述叶子节点的正确性验证通过后,所述新增节点依次同步所述第一区块高度到当前区块高度的区块信息,并执行得到当前区块的状态信息;步骤105:所述新增节点在当前区块高度的下一高度参与共识。其中,步骤102可以进一步包括以下步骤:所述第一状态根信息为N个共识节点拥有的内容一致的状态根信息;所述N为共识节点总数除以3的结果向下取整加1得到;所述新增共识节点随机向N个已有共识节点同步所述第一区块高度的状态根信息;如果得到的N个状态根信息是一致的,则该状态根信息即为第一状态根信息;如果得到的N个状态根信息是不一致的,则所述新增共识节点继续向其他共识节点同步所述第一区块高度的状态根信息,直至获得N个共识节点拥有的内容一致的状态根信息。可选的,步骤103可以进一步包括以下步骤:所述新增节点向拥有第一状态根信息的共识节点请求以所述第一状态根信息为根部的所有叶子节点的状态信息;所述新增节点对所有叶子节点的状态信息进行计算得到第二状态根信息;对比所述第一状态根信息和第二状态根信息,如果结果一致,则所述叶子节点的正确性验证通过;如果结果不一致,则所述新增节点向其他拥有第一状态根信息的共识节点请求以所述第一状态根信息为根部的所有叶子节点的状态信息继续进行验证。本实施例中的方法可以进一步包括:所述新增节点参与共识后,依次同步从创世块到所述第一区块高度的区块本文档来自技高网...

【技术保护点】
1.一种新增节点快速参与共识的方法,应用于采用BFT共识算法的区块链系统,所述方法包括:/n新增共识节点在第一区块高度时加入区块链;/n所述新增共识节点向已有共识节点同步所述第一区块高度的状态根信息以获得第一状态根信息,其中,所述第一状态根信息为超过共识节点总数三分之一以上的共识节点拥有的内容一致的状态根信息;/n所述新增节点对以所述第一状态根信息为根部的所有叶子节点的正确性进行验证;/n当所述叶子节点的正确性验证通过后,所述新增节点依次同步所述第一区块高度到当前区块高度的区块信息,并执行得到当前区块的状态信息;/n所述新增节点在当前区块高度的下一高度参与共识。/n

【技术特征摘要】
1.一种新增节点快速参与共识的方法,应用于采用BFT共识算法的区块链系统,所述方法包括:
新增共识节点在第一区块高度时加入区块链;
所述新增共识节点向已有共识节点同步所述第一区块高度的状态根信息以获得第一状态根信息,其中,所述第一状态根信息为超过共识节点总数三分之一以上的共识节点拥有的内容一致的状态根信息;
所述新增节点对以所述第一状态根信息为根部的所有叶子节点的正确性进行验证;
当所述叶子节点的正确性验证通过后,所述新增节点依次同步所述第一区块高度到当前区块高度的区块信息,并执行得到当前区块的状态信息;
所述新增节点在当前区块高度的下一高度参与共识。


2.如权利要求1所述的方法,所述新增共识节点向已有共识节点同步所述第一区块高度的状态根信息以获得第一状态根信息;进一步包括:
所述第一状态根信息为N个共识节点拥有的内容一致的状态根信息;所述N为共识节点总数除以3的结果向下取整加1得到;
所述新增共识节点随机向N个已有共识节点同步所述第一区块高度的状态根信息;
如果得到的N个状态根信息是一致的,则该状态根信息即为第一状态根信息;如果得到的N个状态根信息是不一致的,则所述新增共识节点继续向其他共识节点同步所述第一区块高度的状态根信息,直至获得N个共识节点拥有的内容一致的状态根信息。


3.如权利要求1所述的方法,所述新增节点对以所述第一状态根信息为根部的所有叶子节点的正确性进行验证;进一步包括:
所述新增节点向拥有第一状态根信息的共识节点请求以所述第一状态根信息为根部的所有叶子节点的状态信息;
所述新增节点对所有叶子节点的状态信息进行计算得到第二状态根信息;
对比所述第一状态根信息和第二状态根信息,如果结果一致,则所述叶子节点的正确性验证通过;
如果结果不一致,则所述新增节点向其他拥有第一状态根信息的共识节点请求以所述第一状态根信息为根部的所有叶子节点的状态信息继续进行验证。


4.如权利要求1-3所述的方法,进一步包括:所述新增节点参与共识后,依次同步从创世块到所述第一区块高度的区块信息,并依次执行。


5.一种新增节点快速参与共识的装置,应用于采用BFT共识算法的区块链系统,所述装置包括:
节点添加模块:用于新增共识节点在第一区块高度时加入区块链;
第一状态根信息获取模块:用于所述新增共识节...

【专利技术属性】
技术研发人员:王晓亮俞波
申请(专利权)人:杭州溪塔科技有限公司
类型:发明
国别省市:浙江;33

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

1