基于区块链系统的出块方法、设备以及存储介质与流程

文档序号:16931729发布日期:2019-02-22 20:20阅读:185来源:国知局
基于区块链系统的出块方法、设备以及存储介质与流程

本发明涉及区块链领域,具体而言,涉及一种基于区块链系统的出块方法、设备以及存储介质。



背景技术:

现有的区块链技术中普遍使用基于poa的clique共识算法,poa(proofofauthority即权利证明)不同于pow的工作量证明,poa算法能够直接确定多个认证节点具备出块的权力,该多个认证节点所生成的区块会被全网其他节点验证为有效区块。为了让每个认证节点都有均等的机会去签发一个区块,每个认证节点在签发区块的时候都会判断本认证节点是不是本轮的出块节点,从而每一轮仅有一个认证节点为出块节点。判断一个认证节点是否为出块节点十分简单,将本地维护的多个认证节点按照字典序排序,若当前区块号除以多个认证节点的个数的余数等于该认证节点的下标,则该认证节点为出块节点。出块节点生成的区块具有更高的难度值,这样可以使该区块能够朝着预定的方向收敛。倘若所有认证节点签发的区块难度没有区别,则会出现多条难度相同的岔链导致网络无法达成共识。但是,当前poa算法存在以下缺陷:出块节点拥有签发高难度区块的权力。从理论上来说,也就提前确定了本轮区块竞赛的最终胜者会是这个出块节点,这正是出块算法不完备的地方。恶意攻击者可以预知每一轮的出块节点,并且提前向该出块节点发起攻击,使其不能按时准确出块,从而造成区块网络瘫痪。

针对上述的目前的区块链系统中多个认证节点的出块顺序是固定的,从而造成恶意攻击者可以预知每一轮的出块节点,并且提前向该出块节点发起攻击,使其不能按时准确出块,从而造成区块网络瘫痪的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种基于区块链系统的出块方法、设备以及存储介质,以至少解决由于目前的区块链系统中多个认证节点的出块顺序是固定的,从而造成恶意攻击者可以预知每一轮的出块节点,并且提前向该出块节点发起攻击,使其不能按时准确出块,从而造成区块网络瘫痪的技术问题。

根据本发明实施例的一个方面,提供了一种基于区块链系统的出块方法,区块链系统包括多个认证节点,其中多个认证节点按照第一顺序出块,包括:获取当前待生成区块的第一区块号;以及在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块,其中第二区块号为多个认证节点确定按照第一顺序出块时所生成的区块的区块号。

根据本发明实施例的另一方面,还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行上述任意一项所述的出块方法。

根据本发明实施例的另一方面,还提供了一种基于区块链系统的出块设备,区块链系统包括多个认证节点,其中多个认证节点按照第一顺序出块,包括:获取模块,用于获取当前待生成区块的第一区块号;以及第一配置模块,用于在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块,其中第二区块号为多个认证节点确定按照第一顺序出块时所生成的区块的区块号。

根据本发明实施例的另一方面,还提供了一种基于区块链系统的出块设备,区块链系统包括多个认证节点,其中多个认证节点按照第一顺序出块,包括:处理器;以及存储器,与处理器连接,用于为处理器提供处理以下处理步骤的指令:获取当前待生成区块的第一区块号;以及在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块,其中第二区块号为多个认证节点确定按照第一顺序出块时所生成的区块的区块号。

在本发明实施例中,采用服务器对区块链系统中多个认证节点的出块顺序进行新一轮的排序的方式,通过服务器获取当前待生成区块的第一区块号,在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,服务器将多个认证节点配置为按照随机排序生成的第二顺序出块,其中第二区块号为多个认证节点确定按照第一顺序出块时所生成的区块的区块号。因此,通过上述的方式,多个认证节点的出块顺序不再具有规律性,使得恶意攻击者无法预知每一轮的出块节点,从而提高了区块链系统的安全性和稳定性,进而解决了由于目前的区块链系统中多个认证节点的出块顺序是固定的,从而造成恶意攻击者可以预知每一轮的出块节点,并且提前向该出块节点发起攻击,使其不能按时准确出块,从而造成区块网络瘫痪的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1示出了一种用于实现基于区块链系统的出块方法的计算设备的硬件结构框图;

图2示出了根据本公开实施例1的方案所述的基于区块链系统的出块设备的示意图;

图3示出了根据本公开实施例1的第一个方面所述的基于区块链系统的出块方法的流程图;

图4示出了根据本公开实施例2所述的基于区块链系统的出块设备的结构框图;以及

图5示出了根据本公开实施例3所述的基于区块链系统的出块设备的结构框图。

具体实施方式

为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例1

根据本发明实施例,还提供了一种基于区块链系统的出块方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。图1示出了一种用于实现基于区块链系统的出块方法的计算机终端(或移动设备)的硬件结构框图。如图1所示,计算机终端10(或移动设备10)可以包括一个或多个(图中采用102a、102b,……,102n来示出)处理器102(处理器102可以包括但不限于微处理器mcu或可编程逻辑器件fpga等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。除此以外,还可以包括:显示器、输入/输出接口(i/o接口)、通用串行总线(usb)端口(可以作为i/o接口的端口中的一个端口被包括)、网络接口、电源和/或相机。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。

应当注意到的是上述一个或多个处理器102和/或其他数据处理电路在本文中通常可以被称为“数据处理电路”。该数据处理电路可以全部或部分的体现为软件、硬件、固件或其他任意组合。此外,数据处理电路可为单个独立的处理模块,或全部或部分的结合到计算机终端10(或移动设备)中的其他元件中的任意一个内。如本申请实施例中所涉及到的,该数据处理电路作为一种处理器控制(例如与接口连接的可变电阻终端路径的选择)。

存储器104可用于存储应用软件的软件程序以及模块,如本发明实施例中的基于区块链系统的出块方法对应的程序指令/数据存储装置,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的基于区块链系统的出块方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(networkinterfacecontroller,nic),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(radiofrequency,rf)模块,其用于通过无线方式与互联网进行通讯。

显示器可以例如触摸屏式的液晶显示器(lcd),该液晶显示器可使得用户能够与计算机终端10(或移动设备)的用户界面进行交互。

进一步地,图2示出了根据本实施例的方案所述的系统图。其中区块链系统包括五个认证节点,分别为认证节点1、认证节点2、认证节点3、认证节4以及认证节点5,这五个认证节点均具有出块的权利,并按照一定的顺次依次进行出块,多个认证节点出的块共同组成区块链121。然后,该区块链运行于服务器120内。例如但不限于,当前这五个认证节点的出块顺序为:1→2→3→4→5(即第一顺序),当前待生成区块为第i个区块(其中i为整数)。

在上述运行环境下,本公开第一个方面提供了如图3所示的基于区块链系统的出块方法。图3是根据本发明实施例的基于区块链系统的出块方法的流程图。该方法可以运行于图2中所示的服务器120,并且参考图3所示,该方法包括:

s301:获取当前待生成区块的第一区块号;以及

s302:在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块,其中第二区块号为多个认证节点确定按照第一顺序出块时所生成的区块的区块号。

正如背景技术所述,目前的区块链系统中多个认证节点的出块顺序是固定的,从而造成恶意攻击者可以预知每一轮的出块节点,并且提前向该出块节点发起攻击,使其不能按时准确出块,从而造成区块网络瘫痪。

为了解决该技术问题,本申请提供了一种基于区块链系统的出块方法。该方法通过服务器120获取当前待生成区块的第一区块号(例如区块号“i”)。然后计算第一区块号i与第二区块号(例如“a”)之间的差值(i-a)。其中第二区块号a为多个认证节点确定按照第一顺序出块时所生成的区块的区块号。也就是说,在生成第a个区块时,区块链系统的服务器120确定认证节点1~5按照第一顺序出块。

然后服务器120判定该差值(i-a)是否为多个认证节点的个数(例如5个)的预定整数倍。其中预定整数倍可以是1倍(即i-a=5)、2倍(即i-a=10)以及3倍(即i-a=15)等等,具体地,下面以3倍(即i-a=15)作为例子说明。

当服务器120判定该差值(i-a)为多个认证节点的个数的预定整数倍(例如3倍,在这种情况下差值(i-a)为15)的情况下,将多个认证节点1~5配置为按照随机排序生成的第二顺序出块。

例如,区块链系统中一共包含5个认证节点,如果第一区块号与第二区块号之间的差值为15,则该差值正好是认证节点的个数5的预定整数倍(即,3倍)。在这种情况下,服务器120将这五个认证节点配置为按照随机生成的第二顺序出块。例如:这五个认证节点出块的第二顺序为:2→1→4→3→5。也就是说,在这种情况下,服务器120将第二顺序确定为这五个认证节点的出块顺序。

从而,由于服务器120在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍(例如:3倍)的情况下,将这五个认证节点按照随机方式进行新一轮的排序,即按照第二顺序排序。然后,服务器120将第二顺序确定为这五个认证节点的出块顺序。从而,通过这种方式,使得这五个认证节点的出块顺序不具有规律性,使得恶意攻击者无法预知每一轮的出块节点,从而提高了区块链系统的安全性和稳定性。进而解决了目前的区块链系统中多个认证节点的出块顺序是固定的,从而造成恶意攻击者可以预知每一轮的出块节点,并且提前向该出块节点发起攻击,使其不能按时准确出块,从而造成区块网络瘫痪的技术问题。

作为示例性说明,上面所述的认证节点的个数为5个,并且预定整数倍为3倍。但是本领域技术人员应当清楚,认证节点的数量可以是任意的数量。并且预定整数倍也可以是任意的整数倍,例如1倍(即认证节点的个数本身)、2倍、3倍、4倍等等。这些都适用于本公开的技术方案。

可选地,还包括:根据第二顺序,将排在第一顺位的认证节点确定为待生成区块的出块节点。

具体地,例如这五个认证节点出块的第一顺序为:1→2→3→4→5,第二顺序为:2→1→4→3→5。当区块的第一区块号与第二区块号为认证节点的预定整数倍时(例如此时按照第一顺序,刚好由认证节点5已经完成了出块),这五个节点按照第二顺序出块,即接下来,由认证节点2进行出块,再到认证节点1出块,其他节点依次按照第二顺序进行出块。通过这种方式,使得在区块链系统中包含的多个认证节点中的每一个认证节点均具有相同的出块权利。因而有效的避免了存在个别节点从来不出块,或者个别节点的出块频率十分高的问题出现,进而保障了区块链系统的安全性和稳定性。

可选地,在第一区块号与第二区块号之间的差值不是多个认证节点的个数的整数倍的情况下,按照第一顺序确定待生成区块的出块节点。例如差值(i-a)为13,还没有到达认证节点个数的预定整数倍(例如,15)。在这种情况下,服务器120不会改变出块顺序,而是仍然按照第一顺序出块。通过这种方式,服务器120实现周期性地改变多个认证节点的出块顺序,而不是随意改变各个认证节点出块的顺序。这使得在区块链系统中包含的多个认证节点中的每一个认证节点均具有相同的出块权利,从而增强了区块链系统的安全性和稳定性。

可选地,在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块的操作,包括:在第一区块号与第二区块号之间的差值为多个认证节点的个数的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块。

具体地,服务器120在第一区块号i与第二区块号a之间的差值(i-a)为多个认证节点的个数(例如5)的情况下,将这五个认证节点按照随机方式进行新一轮的排序,即按照第二顺序排序。然后,服务器120将第二顺序确定为这五个认证节点的出块顺序。

也就是说在这种情况下,所述的预定整数倍为1倍,也就是说5个认证节点每完成一轮的出块操作之后,都会重新进行一次排序。从而,通过这种方式,使得这五个认证节点的出块顺序不具有规律性,使得恶意攻击者无法预知每一轮的出块节点,从而提高了区块链系统的安全性和稳定性。

可选地,还包括:在第一区块号与第二区块号之间的差值不是多个认证节点的个数的情况下,按照第一顺序确定待生成区块的出块节点。也就是说,当5个认证节点1~5至少要完成一轮的出块操作之后,才会进行重新排序。如果5个认证节点1~5还没有完成一轮的出块操作,则只能按照第一顺序进行出块。通过这种方式,服务器120实现周期性地改变多个认证节点的出块顺序,从而增强了区块链系统的安全性和稳定性。

可选地,按照第一顺序确定待生成区块的出块节点的操作,包括:将第一区块号除以多个认证节点的个数,并获取余数;以及根据余数以及第一顺序,确定出块节点。

具体地,服务器120将第一区块号除以多个认证节点的个数并获取余数。例如但不限于,第一区块号为106号,区块链系统中包含5个认证节点。然后,第一区块号106除以多个认证节点的个数即106除以5的余数等于1。然后该余数1对应于第一顺序中的顺位,即第一排序中位于第一顺位的出块节点。由于按照第一顺序,认证节点1位于第一顺位,所以由认证节点1进行出块操作。同样的,如果余数等于2,则由第一顺序中的第二顺位的认证节点(即认证节点2)进行出块操作,以此类推。通过这种方式,服务器120实现在一个周期内按照第一顺序安排多个认证节点1~5进行出块操作,进而增强了区块链系统的安全性和稳定性。

可选地,按照随机排序生成的第二顺序的操作,包括:为多个认证节点中的每一个认证节点赋予一个优先级;以及根据优先级,对多个认证节点进行排序,并将排序后的多个认证节点的顺序确定为第二顺序。

具体地,服务器120在每当在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,都先为每一个认证节点赋予一个优先级。例如但不限于,服务器120为认证节点1赋予的优先级为5,为认证节点2赋予的优先级为2,为认证节点3赋予的优先级为1,为认证节点4赋予的优先级为8,为认证节点5赋予的优先级为3。由于认证节点4的优先级最高,优先级为8;认证节点1的优先级第二高,优先级为5;认证节点5的优先级第三高,优先级为3;认证节点2的优先级第四高,优先级为2;认证节点3的优先级最低,优先级为1。因此,服务器120根据优先级的高低对这五个认证节点进行排序。因而区块链系统中包含的这五个认证节点出块的第二顺序为:4→1→5→2→3。

从而,通过上述的方式,使得服务器120可以通过赋予区块链系统中具有出块能力的每一个认证节点一个优先级。然后,在区块链121的待生成区块的第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,服务器120按照赋予的优先级对区块链系统中包含的所有认证节点进行新一轮的排序。从而,通过这种方式,使得这五个认证节点的出块顺序不具有规律性,使得恶意攻击者无法预知每一轮的出块节点,进而提高了区块链系统的安全性和稳定性。

本公开实施例的第二个方面还提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时由处理器执行上述任意一项所述的出块方法。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

实施例2

根据本发明实施例,还提供了一种用于实施上述基于区块链系统的出块方法的基于区块链系统的出块设备400,如图4所示,区块链系统包括多个认证节点,其中多个认证节点按照第一顺序出块,该设备包括:获取模块410,用于获取当前待生成区块的第一区块号;以及第一配置模块420,用于在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块,其中第二区块号为多个认证节点确定按照第一顺序出块时所生成的区块的区块号。

具体地,本实施例通过获取模块410获取当前待生成区块的第一区块号(例如106号)。然后在第一区块号与第二区块号之间的差值为多个认证节点的个数(例如5个)的预定整数倍的情况下,例如,区块链系统中一共包含5个认证节点,第一区块号与第二区块号之间的差值为15,则该差值正好是认证节点的个数5的预定整数倍(即,3倍)。在这种情况下,第一配置模块420将这五个认证节点配置为按照随机排序生成的第二顺序出块,其中第二区块号为多个认证节点确定按照第一顺序出块时所生成的区块的区块号。例如第二区块号为91号,当前待生成区块的第一区块号为106号,即第一区块号与第二区块号之间的差值为15,为这五个认证节点的个数的3倍,正好等于服务器120预定整数倍。因此,出块设备400按照随机方式,将这五个认证节点排序为第二顺序。例如:这五个认证节点出块的第二顺序为:2→1→4→3→5。也就是说,在这种情况下,出块设备400将第二顺序确定为这五个认证节点的出块顺序。

从而,由于出块设备400在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍(例如:1倍、2倍、3倍以及n倍等)的情况下,将这五个认证节点按照随机方式进行新一轮的排序,即按照第二顺序排序。然后,出块设备400将第二顺序确定为这五个认证节点的出块顺序。从而,通过这种方式,使得这五个认证节点的出块顺序不具有规律性,使得恶意攻击者无法预知每一轮的出块节点,从而提高了区块链系统的安全性和稳定性。进而解决了目前的区块链系统中多个认证节点的出块顺序是固定的,从而造成恶意攻击者可以预知每一轮的出块节点,并且提前向该出块节点发起攻击,使其不能按时准确出块,从而造成区块网络瘫痪的技术问题。

作为示例性说明,上面所述的认证节点的个数为5个,并且预定整数倍为3倍。但是本领域技术人员应当清楚,认证节点的数量可以是任意的数量。并且预定整数倍也可以是任意的整数倍,例如1倍(即认证节点的个数本身)、2倍、3倍、4倍等等。这些都适用于本公开的技术方案。

可选地,还包括:第一确定模块,用于根据第二顺序,将排在第一顺位的认证节点确定为待生成区块的出块节点。

具体地,例如但不限于,这五个认证节点出块的第一顺序为:1→2→3→4→5,第二顺序为:2→1→4→3→5,所以当按照第一顺序出块的认证节点5完成出块之后,第一确定模块将这五个节点按照第二顺序出块,即接下来,由认证节点2进行出块,再到认证节点1出块,其他节点依次按照第二顺序进行出块。通过这种方式,使得在区块链系统中包含的多个认证节点中的每一个认证节点均具有相同的出块权利。因而有效的避免了存在个别节点从来不出块,或者只有个别节点在出块的问题出现,进而保障了区块链系统的安全性和稳定性。

可选地,还包括:第二确定模块,用于在第一区块号与第二区块号之间的差值不是多个认证节点的个数的整数倍的情况下,按照第一顺序确定待生成区块的出块节点。例如差值为13,还没有到达认证节点个数的预定整数倍(例如,15)。在这种情况下,出块设备400不会改变出块顺序,而是仍然按照第一顺序出块。通过这种方式,出块设备400实现周期性地改变多个认证节点的出块顺序,而不是随意改变各个认证节点出块的顺序。这使得在区块链系统中包含的多个认证节点中的每一个认证节点均具有相同的出块权利,从而增强了区块链系统的安全性和稳定性。

可选地,在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块的操作,包括:第二配置模块,用于在第一区块号与第二区块号之间的差值为多个认证节点的个数的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块。

具体地,第二配置模块在第一区块号与第二区块号之间的差值为多个认证节点的个数的情况下,将这五个认证节点按照随机方式进行新一轮的排序,即按照第二顺序排序。然后,第二配置模块服务器120将第二顺序配置为这五个认证节点的出块顺序。

也就是说在这种情况下,所述的预定整数倍为1倍,也就是说5个认证节点每完成一轮的出块操作之后,都会重新进行一次排序。从而,通过这种方式,使得这五个认证节点的出块顺序不具有规律性,使得恶意攻击者无法预知每一轮的出块节点,从而提高了区块链系统的安全性和稳定性。

可选地,还包括:第三确定模块,用于在第一区块号与第二区块号之间的差值不是多个认证节点的个数的情况下,按照第一顺序确定待生成区块的出块节点。也就是说,当多个认证节点至少要完成一轮的出块操作之后,才会进行重新排序。如果该多个认证节点还没有完成一轮的出块操作,则只能按照第一顺序进行出块。通过这种方式,服务器120实现周期性地改变多个认证节点的出块顺序,从而增强了区块链系统的安全性和稳定性。

可选地,按照第一顺序确定待生成区块的出块节点的操作,包括:余数获取模块,用于将第一区块号除以多个认证节点的个数,并获取余数;以及第四确定模块,用于根据余数以及第一顺序,确定出块节点。

具体地,余数获取模块将第一区块号除以多个认证节点的个数并获取余数。例如但不限于,第一区块号为106号,区块链系统中包含5个认证节点。然后,由于第一区块号106除以多个认证节点的个数即106除以5的余数等于1。然后该余数1对应于第一顺序中的顺位,即第一排序中位于第一顺位的出块节点。由于按照第一顺序,认证节点1位于第一顺位,所以由认证节点1进行出块操作。同样的,如果余数等于2,则由第一顺序中的第二顺位的认证节点(即认证节点2)进行出块操作,以此类推。通过这种方式,出块设备400实现在一个周期内按照第一顺序安排多个认证节点1~5进行出块操作,进而增强了区块链系统的安全性和稳定性。

可选地,按照随机排序生成的第二顺序的操作,包括:赋予模块,用于为多个认证节点中的每一个认证节点赋予一个优先级;以及第五确定模块,用于根据优先级,对多个认证节点进行排序,并将排序后的多个认证节点的顺序确定为第二顺序。

具体地,赋予模块在每当在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,都先为每一个认证节点赋予一个优先级。例如但不限于,赋予模块为认证节点1赋予的优先级为5,为认证节点2赋予的优先级为2,为认证节点3赋予的优先级为1,为认证节点4赋予的优先级为8,为认证节点5赋予的优先级为3。由于认证节点4的优先级最高,优先级为8;认证节点1的优先级第二高,优先级为5;认证节点5的优先级第三高,优先级为3;认证节点2的优先级第四高,优先级为2;认证节点3的优先级最低,优先级为1。因此,第五确定模块根据优先级的高低对这五个认证节点进行排序,并将排序后的五个认证节点的顺序确定为第二顺序。因而区块链系统中包含的这五个认证节点出块的第二顺序为:4→1→5→2→3。

从而,通过上述的方式,使得出块设备400可以通过赋予区块链系统中具有出块能力的每一个认证节点一个优先级。然后,在区块链121的待生成区块的第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,出块设备400按照赋予的优先级对区块链系统中包含的所有认证节点进行新一轮的排序。从而,通过这种方式,使得这五个认证节点的出块顺序不具有规律性,使得恶意攻击者无法预知每一轮的出块节点,进而提高了区块链系统的安全性和稳定性。

此处需要说明的是,上述获取模块410和第一配置模块420对应于实施例1的第一个方面中的步骤s301至步骤s302,两个模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中。

实施例3

根据本发明实施例,还提供了一种基于区块链系统的出块设备,区块链系统包括多个认证节点,其中多个认证节点按照第一顺序出块,该设备500包括:处理器510;以及存储器520,与处理器510连接,用于为处理器510提供处理以下处理步骤的指令:获取当前待生成区块的第一区块号;以及在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块,其中第二区块号为多个认证节点确定按照第一顺序出块时所生成的区块的区块号。

可选地,存储器520还用于为处理器510提供处理以下处理步骤的指令:根据第二顺序,将排在第一顺位的认证节点确定为待生成区块的出块节点。

可选地,存储器520还用于为处理器510提供处理以下处理步骤的指令:在第一区块号与第二区块号之间的差值不是多个认证节点的个数的整数倍的情况下,按照第一顺序确定待生成区块的出块节点。

可选地,在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块的操作,包括:在第一区块号与第二区块号之间的差值为多个认证节点的个数的情况下,将多个认证节点配置为按照随机排序生成的第二顺序出块。

可选地,存储器520还用于为处理器510提供处理以下处理步骤的指令:在第一区块号与第二区块号之间的差值不是多个认证节点的个数的情况下,按照第一顺序确定待生成区块的出块节点。

可选地,按照第一顺序确定待生成区块的出块节点的操作,包括:将第一区块号除以多个认证节点的个数,并获取余数;以及根据余数以及第一顺序,确定出块节点。

可选地,按照随机排序生成的第二顺序的操作,包括:随机地为多个认证节点中的每一个认证节点赋予一个优先级;以及根据优先级,对多个认证节点进行排序,并将排序后的多个认证节点的顺序确定为第二顺序。

具体地,本实施例通过设备500获取当前待生成区块的第一区块号(例如106号)。然后在第一区块号与第二区块号之间的差值为多个认证节点的个数(例如5个)的预定整数倍的情况下,例如,区块链系统中一共包含5个认证节点,第一区块号与第二区块号之间的差值为15,预定整数倍为3。然后设备500将这五个认证节点配置为按照随机排序生成的第二顺序出块,其中第二区块号为多个认证节点确定按照第一顺序出块时所生成的区块的区块号。例如但不限于,第二区块号为91号,由于当前待生成区块的第一区块号为106号,即第一区块号与第二区块号之间的差值为15,为这五个认证节点的个数的3倍,正好等于服务器120预定整数倍。因此,设备500按照随机方式,将这五个认证节点排序为第二顺序。例如:这五个认证节点出块的第二顺序为:2→1→4→3→5。然后设备500将第二顺序确定为这五个认证节点的出块顺序。

从而,由于设备500在第一区块号与第二区块号之间的差值为多个认证节点的个数的预定整数倍(例如:1倍、2倍、3倍以及n倍等)的情况下,将这五个认证节点按照随机方式进行新一轮的排序,即第二顺序。然后,设备500将第二顺序确定为这五个认证节点的出块顺序。从而,通过这种方式,使得这五个认证节点的出块顺序不具有规律性,使得恶意攻击者无法预知每一轮的出块节点,从而提高了区块链系统的安全性和稳定性。进而解决了目前的区块链系统中多个认证节点的出块顺序是固定的,从而造成恶意攻击者可以预知每一轮的出块节点,并且提前向该出块节点发起攻击,使其不能按时准确出块,从而造成区块网络瘫痪的技术问题。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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