发明内容
有鉴于此,本发明的主要目的在于提供一种区块链共识方法、装置、设备及可读存储介质和一种联盟链系统,旨在解决联盟链系统待共识事件突增,导致待共识事件处理不过来而堆积的技术问题。其具体方案如下:
为实现上述目的,本发明提供了一种区块链共识方法,应用于包括至少一个域的联盟,所述联盟为联盟链系统中的任意一个,所述方法包括:
接收待共识事件,获取待共识事件的来源账号;
在联盟中确定与来源账号对应的第一目标域;
将待共识事件发送至第一目标域中的节点,以使第一目标域中的节点对待共识事件进行共识。
优选地,在第一目标域中的节点对待共识事件进行共识之后,所述方法还包括:
获取待共识事件的目的账号,并确定目的账号对应的第二目标域;
若第二目标域与第一目标域为不同的域,则将待共识事件发送至第二目标域中的节点,以使第二目标域中的节点对待共识事件进行共识。
优选地,在将待共识事件发送至第二目标域中的节点之前,所述方法还包括:
若联盟中不存在目的账号对应的域,则丢弃待共识事件。
优选地,获取待共识事件的来源账号之后,所述方法还包括:
判断来源账号是否属于联盟;
若是,则执行在联盟中确定与来源账号对应的第一目标域的步骤;
若否,则丢弃待共识事件。
优选地,所述方法还包括:
检测联盟中的每个域的负载,并判断每个域的负载是否超过预设的阈值;
若是,则在联盟中创建新的域,以利用创建得到的域中的节点进行事件共识。
优选地,所述方法还包括:
当接收到新的待共识事件,按照负载均衡算法在联盟中确定对新的待共识事件进行共识的域。
为实现上述目的,本发明进一步提供了一种区块链共识装置,应用于包括至少一个域的联盟,联盟为联盟链系统中的任意一个,所述装置包括:
接收模块,用于接收待共识事件,获取待共识事件的来源账号;
确定模块,用于在联盟中确定与来源账号对应的第一目标域;
共识模块,用于将待共识事件发送至第一目标域中的节点,以使第一目标域中的节点对待共识事件进行共识。
优选地,所述装置还包括:
获取模块,用于获取待共识事件的目的账号,并确定目的账号对应的第二目标域;
跨域共识模块,用于若第二目标域与第一目标域为不同的域,则将待共识事件发送至第二目标域中的节点,以使第二目标域中的节点对待共识事件进行共识。
优选地,所述装置还包括:
第一丢弃模块,用于若联盟中不存在目的账号对应的域,则丢弃待共识事件。
优选地,所述装置还包括:
判断模块,用于判断来源账号是否属于联盟;
执行模块,用于若来源账号属于联盟,则执行在联盟中确定与来源账号对应的第一目标域的步骤;
第二丢弃模块,用于若来源账号属于联盟,则丢弃待共识事件。
优选地,所述装置还包括:
检测模块,用于检测联盟中的每个域的负载,并判断每个域的负载是否超过预设的阈值;
创建模块,用于若每个域的负载超过预设的阈值,则在联盟中创建新的域,以利用创建得到的域中的节点进行事件共识。
优选地,所述装置还包括:
负载均衡模块,用于当接收到新的待共识事件,按照负载均衡算法在联盟中确定对新的待共识事件进行共识的域。
为实现上述目的,本发明进一步提供了一种区块链共识设备,设备包括存储器和处理器,存储器上存储有可在处理器上运行的计算机程序,计算机程序被处理器执行时实现前述任一项公开的区块链共识方法。
为实现上述目的,本发明进一步提供了一种联盟链系统,包括:
至少一个联盟,每个联盟包括至少一个域和至少一个路由模块,其中,每个域中包含至少两个节点;
路由模块用于接收待共识事件;获取待共识事件的来源账号;在联盟中确定与来源账号对应的第一目标域;将待共识事件发送至第一目标域中的节点,以使第一目标域中的节点对待共识事件进行共识。
为实现上述目的,本发明进一步提供了一种可读存储介质,用于保存计算机程序,其中,计算机程序被处理器执行时实现前述公开的区块链共识方法。
可见,本发明提供的区块链共识方法应用于联盟链系统中的任意一个设有至少一个域的联盟,当该联盟接收到待共识事件后,利用自身内部的域中的节点对待共识事件进行共识;也即:联盟不再将待共识事件发送至联盟外部的单一链进行共识,而是自我内部共识事件,从而解决了不同联盟争抢资源的问题;并且,联盟内设有多个域,这多个域同构且平行,因此可以并发共识事件,故解决了联盟内待共识事件突增的问题。
需要说明的是,本发明公开的“域”可看作现有技术中的单一“链”,且一个联盟内可设多个“域”,因此本发明不仅避免了不同联盟争抢资源的问题,还增加了“链”的数量,从而提高了联盟链系统的事件共识效率。同时,本发明公开的事件共识方法在联盟内完成,且与外部的其他联盟无通信,因此也实现了联盟链系统中的联盟内数据共享和联盟外数据隔离。
相应地,本发明提供的一种区块链共识装置、设备及可读存储介质和一种联盟链系统,也同样具有上述技术效果。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
本发明第一实施例公开了第一种区块链共识方法,参见图1,图1为本发明第一实施例公开的方法流程图。
在第一实施例中,该方法应用于包括至少一个域的联盟,所述联盟为联盟链系统中的任意一个,该方法包括:
S101、接收待共识事件,获取待共识事件的来源账号;
具体的,若待共识事件为联盟内的某个节点上的交易,则待共识事件的来源账号即为提交交易的账号。本实施例公开的方法可以由联盟中的路由模块执行。
S102、在联盟中确定与来源账号对应的第一目标域;
具体的,联盟中预设有至少一个域,本实施例公开的“域”可看作现有技术中的单一“链”。该域是一条单链,且是同构的,因此可以平行扩展,即:可设置多个域。每个域接入有多个节点,接入同一个域的节点可以共享数据,当然不同域之间也可以共享数据。其中,一个节点一般只能接入某一个域。
与来源账号对应的第一目标域为:对待共识事件进行共识的节点所在的域。需要说明的是,对待共识事件进行共识的节点一般根据待共识事件的来源账号确定,也就是说,对于某个来源账号提交的待共识事件,对其共识的节点是预先设定的,因此获取共识事件的来源账号,便可以确定对其共识的节点,而这些节点所在的域即为第一目标域。
S103、将待共识事件发送至第一目标域中的节点,以使第一目标域中的节点对待共识事件进行共识。
在本实施例中,对待共识事件进行共识的算法可参考现有技术,例如:实用拜占庭容错算法PBFT(Practical Byzantine Fault Tolerance),故本实施例在此不再赘述。
可见,本发明实施例提供的区块链共识方法应用于联盟链系统中的任意一个设有至少一个域的联盟,当该联盟接收到待共识事件后,利用自身内部的域中的节点对待共识事件进行共识;也即:联盟不再将待共识事件发送至联盟外部的单一链进行共识,而是自我内部共识事件,从而解决了不同联盟争抢资源的问题;并且,联盟内设有多个域,这多个域同构且平行,因此可以并发共识事件,故解决了联盟内待共识事件突增的问题。
需要说明的是,本实施例公开的“域”可看作现有技术中的单一“链”,且一个联盟内可设多个“域”,因此本实施例不仅避免了不同联盟争抢资源的问题,还增加了“链”的数量,从而提高了联盟链系统的事件共识效率。同时,本实施例公开的共识方法在联盟内完成,且与外部的其他联盟无通信,因此也实现了联盟链系统中的联盟内数据共享和联盟外数据隔离。
本发明第二实施例公开了第二种区块链共识方法,参见图2,图2为本发明第二实施例公开的方法流程图。
在第二实施例中,该方法应用于包括至少一个域的联盟,所述联盟为联盟链系统中的任意一个,所述方法包括:
S201、接收待共识事件,获取待共识事件的来源账号;
S202、判断来源账号是否属于联盟;若是,则执行S203;若否,则执行S206;
S203、在联盟中确定与来源账号对应的第一目标域;
S204、将待共识事件发送至第一目标域中的节点,以使第一目标域中的节点对待共识事件进行共识;
S205、获取待共识事件的目的账号,并确定目的账号对应的第二目标域;若第二目标域与第一目标域为不同的域,则将待共识事件发送至第二目标域中的节点,以使第二目标域中的节点对待共识事件进行共识;
S206、丢弃待共识事件。
需要说明的是,S205中的在将待共识事件发送至第二目标域中的节点之前,还包括:
判断联盟中是否存在目的账号对应的域;若是,则将待共识事件发送至第二目标域中的节点,以使第二目标域中的节点对待共识事件进行共识;若否,则丢弃待共识事件。
可以理解的是,S206的执行主体可以是对待共识事件进行共识的节点(例如第一目标域中的记账节点)。
可以理解的是,在来源账号和目的账号均属于同一联盟的前提下,若来源账号和目的账号对应的域相同,则利用此域中的节点共识事件;若来源账号和目的账号对应的域不同,则分别利用两个域中的节点共识事件,即实现跨域共识。
需要说明的是,由于本实施例应用于联盟内部,因此其一般只能处理联盟内部的待共识事件,因此在对一个待共识事件进行共识之前,需要首先确定待共识事件的来源账号和目的账号是否均属于联盟;若来源账号和目的账号均属于联盟,则联盟可以按照本实施例提供的方法进行内部共识;若来源账号和目的账号中的任意一个不属于联盟,则说明需要与其他联盟进行通信,而本实施例由于实现了联盟外数据隔离,因此需要丢弃待共识事件。
需要说明的是,本实施例中的其他实现步骤与上述实施例相同或类似,故本实施例在此不再赘述。
由上可见,本发明实施例提供的区块链共识方法应用于联盟链系统中的任意一个设有至少一个域的联盟,当该联盟接收到待共识事件后,利用自身内部的域中的节点对待共识事件进行共识;也即:联盟不再将待共识事件发送至联盟外部的单一链进行共识,而是自我内部共识事件,从而解决了不同联盟争抢资源的问题;并且,联盟内设有多个域,这多个域同构且平行,因此可以并发共识事件,故解决了联盟内待共识事件突增的问题。
需要说明的是,本实施例公开的“域”可看作现有技术中的单一“链”,且一个联盟内可设多个“域”,因此本实施例不仅避免了不同联盟争抢资源的问题,还增加了“链”的数量,从而提高了联盟链系统的事件共识效率。同时,本实施例公开的事件共识方法在联盟内完成,且与外部的其他联盟无通信,因此也实现了联盟链系统中的联盟内数据共享和联盟外数据隔离。
本发明第三实施例公开了一种域管理方法,参见图3,图3为本发明第三实施例公开的方法流程图。
在第三实施例中,该方法应用于包括至少一个域的联盟,所述联盟为联盟链系统中的任意一个,所述方法包括:
S301、检测联盟中的每个域的负载;
S302、判断每个域的负载是否超过预设的阈值;若是,则执行S303;若否,则执行S304;
S303、在联盟中创建新的域,以利用创建得到的域中的节点进行事件共识。
S304、将联盟中的超过预设阈值的域确定为待调整域,并在联盟中创建新的域,以利用创建得到的域中的节点共识待调整域中的待共识事件。
本发明公开了一种联盟内的域,因此也相应地公开了一种域管理方法。具体的,由于联盟内设有多个域,每个域中接入了至少两个节点,因此每个域的负载是随时变化的,每个域的负载指的是:该域共识的待共识事件的数量,数量越多,表明该域的负载越高;若当前域的负载较高,则可以创建新的域,以利用新的域来处理当前域中的待共识事件。
需要说明的是,负载均衡存在两种情况:
第一:当用户掌握账号,每个账号被分配到对应的域,若某个域负载较高时,创建新的域,可将负载较大的域对应的部分账号及其数据迁移到新的域上,由新的域来执行该账号的交易共识。
第二:若平台存在多个账号(用户不掌握账号),将其分配置至各个域后,每个账号对应一个域。当创建新的域时,同时也创建新的账号,以使新的账号对应新的域。发起交易时做负载均衡,选择负载较低的域上的账号来发起交易。
为了实现域负载均衡,本实施例实时检测联盟中的每个域的负载,当联盟中的每个域的负载均超过预设的阈值,表明当前联盟中的待共识事件突增,且联盟中的域不足以满足当前情况,因此可以在联盟中创建新的域,以便利用创建得到的域中的节点进行事件共识,以减轻其他域的负载,提高联盟的并发共识能力。若联盟中仅有个别域的负载超过预设的阈值,那么可以将联盟中的超过预设阈值的域确定为待调整域,并在联盟中创建新的域,以利用创建得到的域中的节点共识待调整域中的待共识事件,这样就可以减轻待调整域的负载。
需要说明的是,本实施例中的其他实现步骤与上述实施例相同或类似,故本实施例在此不再赘述。
由上可见,本发明实施例提供了一种域管理方法,可以使联盟链系统中的联盟中的域实现负载均衡,还提高了联盟的并发共识能力。
本发明第四实施例公开了一种联盟链系统,参见图4,图4为本发明第四实施例公开的系统示意图。
在图4中,该系统包括:至少一个联盟,图4中示意有联盟1,联盟2,……,联盟N;
每个联盟至少包括一个域,图4中每个联盟示意有域1,域2,……,域N;其中,每个域中包含至少两个节点;
每个联盟至少包括一个路由模块,图4中每个联盟示意一个路由模块。
每个联盟中的路由模块用于接收待共识事件,获取待共识事件的来源账号;在联盟中确定与来源账号对应的第一目标域;将待共识事件发送至第一目标域中的节点,以使第一目标域中的节点对待共识事件进行共识。
基于本实施例的核心思想,可设计如下系统,请参见图5,图5为本实施例公开的另一种联盟链系统,具体为:
若存在机构a、机构b和机构c,且机构a和机构b组成了联盟A,机构a和机构c组成了联盟B。因为商业机密,要求满足以下条件:
1、机构a和机构b都有对联盟A的读写权限,机构c没有对联盟A的任何权限;
2、机构a和机构c都有对联盟B的读写权限,机构b没有对联盟B的任何权限。
具体的,机构a和机构b分别提供自己的节点接入域1,这样机构a和机构b都在联盟A中有自己的节点,可以通过自己的节点对联盟A进行读写;而机构c没有节点接入联盟A,从而没有对联盟A的任何权限。
具体的,机构a和机构c分别提供自己的节点接入域1’,这样机构a和机构c都在联盟B中有自己的节点,可以通过自己的节点对联盟B进行读写,而机构b没有节点接入联盟B,从而没有对联盟B的任何权限。
因此,机构a和机构b的业务交易发生在联盟A的域1,机构a和机构c的业务交易发生在联盟B的域1’。域1和域1’不能发生跨域交易,也不会互相影响,即实现了联盟内数据共享和联盟外数据隔离。图5中的联盟管理指代的是管理联盟A和联盟B的管理中心。
机构a和机构b合作的业务交易量比较少,一个域的处理能力可以满足需求;但是机构a和机构c合作的业务交易量比较多,一个域的处理能力不能满足需求,于是机构a和机构c又分别提供自己的节点接入了域2’、甚至域3’、域4’等,直到这些域的处理能力能够满足需求。
需要说明的是,联盟链系统的最终目的是实现联盟内的数据共享和联盟外的数据隔离,原有技术方案也实现了这一点,但是,实际的联盟业务场景却不仅仅对这一点有要求,对高并发处理能力也有很高的期待,甚至有些业务对高并发处理能力是必须的。对于高并发处理能力,原有技术方案不具备。因此图5所示的系统引入了多域的概念,结合联盟链系统的权限控制,实现了联盟内的数据共享和联盟外的数据隔离,同时还让联盟内的域支持平行扩展,让联盟链系统能应用于更多领域,甚至是有高并发业务的领域都提供了可能性。
并且,各个联盟独立共识,相对于原有的统一共识,既有性能上的提高,也保证了各个联盟的稳定性。联盟内各个域支持域内部共识,所有发生在域内部的交易都只需内部共识。那么,只需尽量保证交易只发生在域内部,就可以节省域之间共识,这样性能又提高了很多,域的数量和并发处理能力也几乎呈倍数关系。
可见,本实施例提供了一种联盟链系统,该系统中的联盟不再将待共识事件发送至联盟外部的单一链进行共识,而是自我内部共识事件,从而解决了不同联盟争抢资源的问题;并且,联盟内设有多个域,这多个域同构且平行,因此可以并发共识事件,故解决了联盟内待共识事件突增的问题,提高了事件共识效率。本实施例公开的系统在联盟内完成事件共识,且任一联盟与外部的其他联盟无通信,因此也实现了联盟链系统中的联盟内数据共享和联盟外数据隔离。
本发明第五实施例公开了一种区块链共识装置,参见图6,图6为本发明第五实施例公开的装置示意图。
在第五实施例中,该装置应用于包括至少一个域的联盟,联盟为联盟链系统中的任意一个,所述装置包括:
接收模块601,用于接收待共识事件,获取待共识事件的来源账号;
确定模块602,用于在联盟中确定与来源账号对应的第一目标域;
共识模块603,用于将待共识事件发送至第一目标域中的节点,以使第一目标域中的节点对待共识事件进行共识。
在一种具体实施方式中,所述装置还包括:
获取模块,用于获取待共识事件的目的账号,并确定目的账号对应的第二目标域;
跨域共识模块,用于若第二目标域与第一目标域为不同的域,则将待共识事件发送至第二目标域中的节点,以使第二目标域中的节点对待共识事件进行共识。
在一种具体实施方式中,所述装置还包括:
第一丢弃模块,用于若联盟中不存在目的账号对应的域,则丢弃待共识事件。
在一种具体实施方式中,所述装置还包括:
判断模块,用于判断来源账号是否属于联盟;
执行模块,用于若来源账号属于联盟,则执行在联盟中确定与来源账号对应的第一目标域的步骤;
第二丢弃模块,用于若来源账号属于联盟,则丢弃待共识事件。
在一种具体实施方式中,所述装置还包括:
检测模块,用于检测联盟中的每个域的负载,并判断每个域的负载是否超过预设的阈值;
创建模块,用于若每个域的负载超过预设的阈值,则在联盟中创建新的域,以利用创建得到的域中的节点进行事件共识。
在一种具体实施方式中,所述装置还包括:
负载均衡模块,用于当接收到新的待共识事件,按照负载均衡算法在联盟中确定对新的待共识事件进行共识的域。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
可见,本实施例提供了一种区块链共识装置,包括:接收模块、确定模块以及共识模块。首先由接收模块接收待共识事件,获取待共识事件的来源账号;然后确定模块在联盟中确定与来源账号对应的第一目标域;最后共识模块将待共识事件发送至第一目标域中的节点,以使第一目标域中的节点对待共识事件进行共识。如此各个模块之间分工合作,各司其职,从而解决了不同联盟争抢资源和联盟内待共识事件突增的问题,提高了事件共识效率。
本发明第六实施例公开了一种区块链共识设备,参见图7,图7为本发明第六实施例公开的设备示意图。本实施例描述的一种区块链共识设备与上文描述的一种区块链共识方法及装置可以相互参照。
在第六实施例中,该设备包括存储器701和处理器702,其中:
所述存储器上存储有可在所述处理器上运行的计算机程序,所述处理器用于执行所述计算机程序,以实现以下步骤:
接收待共识事件,获取待共识事件的来源账号;在联盟中确定与来源账号对应的第一目标域;将待共识事件发送至第一目标域中的节点,以使第一目标域中的节点对待共识事件进行共识。
在本实施例中,所述处理器执行所述存储器中保存的计算机子程序时,可以具体实现以下步骤:获取待共识事件的目的账号,并确定目的账号对应的第二目标域;若第二目标域与第一目标域为不同的域,则将待共识事件发送至第二目标域中的节点,以使第二目标域中的节点对待共识事件进行共识。
在本实施例中,所述处理器执行所述存储器中保存的计算机子程序时,可以具体实现以下步骤:若联盟中不存在目的账号对应的域,则丢弃待共识事件。
在本实施例中,所述处理器执行所述存储器中保存的计算机子程序时,可以具体实现以下步骤:判断来源账号是否属于联盟;若是,则执行在联盟中确定与来源账号对应的第一目标域的步骤;若否,则丢弃待共识事件。
在本实施例中,所述处理器执行所述存储器中保存的计算机子程序时,可以具体实现以下步骤:检测联盟中的每个域的负载,并判断每个域的负载是否超过预设的阈值;若是,则在联盟中创建新的域,以利用创建得到的域中的节点进行事件共识。
在本实施例中,所述处理器执行所述存储器中保存的计算机子程序时,可以具体实现以下步骤:当接收到新的待共识事件,按照负载均衡算法在联盟中确定对新的待共识事件进行共识的域。
本发明第七实施例公开了一种可读存储介质,本实施例描述的一种可读存储介质与上文描述的一种区块链共识方法、装置及设备可以相互参照。
一种可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述实施例公开的区块链共识方法。关于该方法的具体步骤可以参考前述实施例中公开的相应内容,在此不再进行赘述。
需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的可读存储介质中。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。