掌桥专利:专业的专利平台
掌桥专利
首页

群组加入方法、装置以及电子设备

文献发布时间:2023-06-19 09:29:07


群组加入方法、装置以及电子设备

技术领域

本发明涉及通信技术领域,特别是涉及一种群组加入方法、装置以及电子设备。

背景技术

区块链技术构建在传输网络(也可称为区块链网络)之上,传输网络中的分布式节点设备(以下简称为节点)通过运行区块链程序,实现以预设共识策略生成区块数据,并利用链式数据结构验证与存储区块数据,最终实现了数据防篡改机制,为业务开展提供了安全可信的技术新思路。

区块链技术可应用至多种业务场景,例如金融领域、电子商务领域、商品或原材料溯源领域、电子存证领域等,由于区块链技术实现了数据防篡改机制,因此利用区块链技术开展业务,能解决业务参与各方之间的信任危机。

相关技术中,多个企业级用户(例如银行)在利用区块链技术开展业务时,通常会共同参与管理区块链网络,具体地,每个企业级用户运行区块链网络内的一个或多个节点。其中,一个企业级用户所运行的一个或多个节点,可以视为一个节点群组(以下简称为群组)。在区块链网络使用期间,当新的企业级用户想加入区块链网络时,就产生了新群组加入区块链网络的需求。

发明内容

为了满足新群组加入区块链网络的需求,本发明实施例提供一种群组加入方法、装置以及电子设备,具体技术方案如下:

在本发明实施例的第一方面,提供一种群组加入方法,应用于区块链网络内的任一节点,所述方法包括:

获得群组加入交易和第一共识投票,所述群组加入交易携带第一群组标识,所述第一群组标识是待加入的新群组的标识,所述第一共识投票是所述区块链网络内的第一指定群组的节点对所述群组加入交易的共识投票;

根据第一共识策略和所述第一共识投票,确定所述群组加入交易的第一共识结果;

在所述第一共识结果为共识通过的情况下,执行所述群组加入交易,以将所述第一群组标识写入区块链;

获得节点加入交易,所述节点加入交易携带节点标识和第二群组标识,所述节点标识是待加入的新节点的标识,所述第二群组标识是所述新节点准备加入的群组的标识;

判断所述区块链是否记录有所述第二群组标识,在所述区块链记录有所述第二群组标识的情况下,执行所述节点加入交易,以将所述节点标识和所述第二群组标识的对应关系写入所述区块链。

在本发明实施例的第二方面,提供另一种群组加入方法,所述方法包括:

区块链网络内的第一目标节点接收到群组加入交易,并响应于所述群组加入交易,将所述群组加入交易发送给所述区块链网络内的指定群组的节点,其中,所述群组加入交易携带第一群组标识,所述第一群组标识是待加入的新群组的标识;

每个指定群组的节点响应于所述群组加入交易,对所述群组加入交易进行共识投票,以生成针对所述群组加入交易的共识投票,节点将所述共识投票返回给所述第一目标节点;

所述第一目标节点接收每个节点返回的共识投票,并将所述群组加入交易和所述共识投票打包提交给所述区块链网络内的交易排序节点,其中,所述交易排序节点用于接收各节点提交的交易,并对交易进行排序以获得交易集合,以及将交易集合分发给每个节点;

所述交易排序节点将所述群组加入交易排列至第一交易集合中,并将所述第一交易集合分发给每个节点;

所述区块链网络中的任一节点在接收到所述第一交易集合后,依次执行所述第一交易集合中的每个交易,当执行到所述群组加入交易时,根据预设共识策略和所述群组加入交易携带的共识投票,确定所述群组加入交易的共识结果,在所述共识结果为共识通过的情况下,执行所述群组加入交易,以将所述第一群组标识写入区块链;

区块链网络内的第二目标节点接收到待加入的新节点发送的节点加入交易,其中,所述节点加入交易携带节点标识和第二群组标识,所述节点标识是所述新节点的标识,所述第二群组标识是所述新节点准备加入的群组的标识;

所述第二目标节点将所述节点加入交易提交给所述交易排序节点;

所述交易排序节点将所述节点加入交易排列至第二交易集合中,并将所述第二交易集合分发给每个节点;

所述区块链网络中的任一节点在接收到所述第二交易集合后,依次执行所述第二交易集合中的每个交易,当执行到所述节点加入交易时,判断所述区块链是否记录有所述第二群组标识,在所述区块链记录有所述第二群组标识的情况下,执行所述节点加入交易,以将所述节点标识和所述第二群组标识的对应关系写入所述区块链。

在本发明实施例的第三方面,提供一种群组加入装置,应用于区块链网络内的任一节点,所述装置包括:交易获得模块、共识结果确定模块、群组加入交易执行模块以及节点加入交易执行模块,其中:

所述交易获得模块,用于获得群组加入交易和第一共识投票,所述群组加入交易携带第一群组标识,所述第一群组标识是待加入的新群组的标识,所述第一共识投票是所述区块链网络内的第一指定群组的节点对所述群组加入交易的共识投票;

所述共识结果确定模块,用于根据第一共识策略和所述第一共识投票,确定所述群组加入交易的第一共识结果;

所述群组加入交易执行模块,用于在所述第一共识结果为共识通过的情况下,执行所述群组加入交易,以将所述第一群组标识写入区块链;

所述交易获得模块,还用于获得节点加入交易,所述节点加入交易携带节点标识和第二群组标识,所述节点标识是待加入的新节点的标识,所述第二群组标识是所述新节点准备加入的群组的标识;

所述节点加入交易执行模块,用于判断所述区块链是否记录有所述第二群组标识,在所述区块链记录有所述第二群组标识的情况下,执行所述节点加入交易,以将所述节点标识和所述第二群组标识的对应关系写入所述区块链。

在本发明实施例的第四方面,提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于在执行存储器上所存放的程序时,实现本发明任一实施例所提供的群组加入方法。

本发明中,当区块链网络内的任一节点在获得群组加入交易和第一共识投票后,根据第一共识策略和第一共识投票,确定群组加入交易的第一共识结果,并在第一共识结果为共识通过的情况下,执行群组加入交易,以将新群组的群组标识写入区块链。如此,相当于在区块链网络中注册了一个新群组。当区块链网络内的任一节点在获得节点加入交易后,判断区块链是否记录有节点加入交易携带的群组标识。若是,则执行节点加入交易,以将节点加入交易携带的节点标识和群组标识对应地写入区块链。如此,相当于在已经注册的群组中加入了一个新节点。通过上述过程,实现了在区块链网络中加入新群组。

此外,由于节点在执行群组加入交易之前,需要判断第一共识结果是否为共识通过,并且在第一共识结果为共识通过的情况下,才执行群组加入交易。如此,可以实现第一指定群组对新群组加入的监管控制,有利于提高区块链网络的安全性。

此外,由于节点在执行节点加入交易之前,需要判断区块链是否记录有节点加入交易携带的群组标识。换言之,需要判断新节点准备加入的群组是否为已经在区块链网络内注册过的群组。如此,有利于防止区块链网络内混入非法节点(即不属于任何群组的节点),从而进一步提高区块链网络的安全性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,以下描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。

图1是本发明一实施例提出的区块链网络的示意图;

图2是本发明一实施例提出的群组加入方法的第一阶段的示意图;

图3是本发明一实施例提出的群组加入方法的第二阶段的示意图;

图4是本发明一实施例提出的群组加入方法的流程图;

图5是本发明另一实施例提出的群组加入方法的流程图;

图6是本发明一实施例提出的群组加入装置的示意图;

图7是本发明一实施例提出的电子设备的示意图。

具体实施方式

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

在区块链技术领域中,特别是在联盟链技术领域中,多个企业级用户(例如银行)在利用区块链技术开展业务时,通常会共同参与管理区块链网络,具体地,每个企业级用户运行区块链网络内的一个或多个节点。其中,一个企业级用户所运行的一个或多个节点,可以视为一个节点群组(以下简称为群组)。在区块链网络使用期间,当新的企业级用户想加入区块链网络时,就产生了新群组加入区块链网络的需求。

有鉴于此,本发明通过以下实施例提出区块链网络、群组加入方法、装置以及电子设备等,从而实现在区块链网络中动态加入新群组。

参考图1,图1是本发明一实施例提出的区块链网络的示意图。如图1所示,区块链网络包括多个节点群组(以下简称为群组),每个群组包括一个或多个分布式节点设备(以下简称为节点)。多个群组的多个节点,共同组成所述区块链网络。多个节点通过运行区块链程序,以实现区块链技术。图1中,每个椭圆虚线框分别表示一个群组,多个椭圆虚线框外围的圆形实线框表示区块链网络。

本发明中,一个群组所包括的节点,可以由一个用户(例如某银行)运行。为便于理解,示例地,区块链网络的群组A所包括的节点由银行A运行,区块链网络的群组B所包括的节点由银行B运行,银行A与银行B之间可基于该区块链网络开展业务。

本发明中,区块链网络主要应用于金融领域,银行、证券公司、基金公司等金融机构作为用户,用户之间基于区块链网络开展业务。考虑到业务开展期间,可能会涉及多个用户的利益。为了使得业务开展符合商业逻辑、合同规定或者法律要求,多个用户有必要通过其运行的节点,对业务的交易进行业务层面的共识投票。每个用户对交易的共识投票,用于表征该用户是否同意执行该交易。然而考虑到,如果某一用户运行了整个区块链网络内的大部分节点,则该用户共识投票的权重过大,该用户的共识投票结果可能会影响整个区块链网络的共识投票结果,导致业务共识的公平性受到损失。

为便于理解,示例地,假设整个区块链网络总共包括50个节点,其中银行A运行了30个节点,银行B运行了12个节点,银行C运行了8个节点。如此,由于银行A运行了大部分节点,因此银行A在业务层面的共识投票期间,具有60%的投票权重,银行A容易操控整个区块链网络的共识投票结果。

为此,本发明引入群组的概念,每个用户对应一个群组。区块链网络中的每个节点在其本地账本中存储有:群组与节点的对应关系。如此,每个节点可以通过查询该对应关系,以确定区块链网络的任一节点具体属于哪个群组,或者确定某一群组具体包括哪些节点。

当区块链网络中的目标节点接收到客户端发送的交易后,需要将交易发送给指定群组(也即指定用户)进行业务层面的共识投票。其中,所述目标节点是区块链网络内的任一节点。具体地,目标节点查询其本地账本存储的对应关系,从而确定各个指定群组具体包括哪些节点,然后目标节点将交易发送给确定出的各个节点,从而使得各个节点对交易进行业务层面的共识投票。需要说明的是,一个群组内所有节点的共识投票,会首先被归集为一个共识投票,该共识投票作为该群组的共识投票,然后再根据每个群组的共识投票,确定共识结果。如此,消除了群组的节点数量对投票权重的影响,有利于确保业务共识的公平性。

需要说明的是,对于如何将一个群组内所有节点的共识投票归集为一个共识投票,可以根据业务类型,采用相应的归集策略。示例地,对于某些业务类型,只要群组内有一个节点投出“同意执行”的共识投票,则该群组内所有节点的共识投票被归集为一个“同意执行”的共识投票,否则被归集为一个“不同意执行”的共识投票。或者示例地,对于另一些业务类型,只有当群组内所有节点均投出“同意执行”的共识投票时,该群组内所有节点的共识投票才被归集为一个“同意执行”的共识投票,否则被归集为一个“不同意执行”的共识投票。

通过上述说明,可见,群组的概念在区块链网络中具有重要作用。然而相关技术中,在区块链网络运行期间,当新群组(也即新用户)想加入区块链网络时,无法实现新群组的动态加入。为了实现新群组的动态加入,本发明提出:将新群组的加入计划作为一个交易(以下将该交易称为群组加入交易),通过各节点执行该群组加入交易,以实现新群组的动态加入。

为了进一步实现对新群组加入的监管控制,本发明还将区块链网络的多个群组中的部分群组,预先配置为第一指定群组,这些第一指定群组用于对群组加入交易进行业务层面的共识投票。其中,第一指定群组对群组加入交易的共识投票,用于表征该第一指定群组是否同意新群组加入。

此外,如图1所示,区块链网络的多个节点中还包括一个交易排序节点,该交易排序节点可以是直接从多个节点中人为指定的,也可以是从多个节点中定期选举出的。交易排序节点主要用于接收各节点先后提交的多个交易,并对多个交易进行排序以获得交易集合,以及将该交易集合分发给每个节点。如此,每个节点获得相同的交易集合,每个节点均按照交易集合中多个交易的排序,依次执行各个交易,从获得结果相同且顺序关系也相同的多个执行结果。

为便于理解,示例地,假设交易排序节点依次对交易a、交易b以及交易c进行排序,得到交易集合,交易排序节点将该交易集合分发给区块链网络内的每个节点(包括交易排序节点自身)。节点X接收到该交易集合后,按照该交易集合中多个交易的排序,依次执行各个交易,从而依次得到执行结果a、执行结果b以及执行结果c。同样地,节点Y接收到该交易集合后,按照该交易集合中多个交易的排序,依次执行各个交易,同样依次得到执行结果a、执行结果b以及执行结果c。

可见,通过交易排序节点对交易进行排序,且每个节点均按照交易排序依次执行各个交易,使得每个节点获得结果相同且顺序关系也相同的多个执行结果,有利于实现各个节点相互之间对交易结果的数据共识。

以上,本发明通过一些实施例提出了区块链网络,上述区块链网络引入了群组的概念,以解决业务共识的公平性问题。此外,上述区块链网络还可以实现新群组的动态加入。以下,本发明通过另一些实施例,具体介绍上述区块链网络如何实现新群组的动态加入。

参考图2,图2是本发明一实施例提出的群组加入方法的第一阶段的示意图。如图2所示,在有新群组需要加入区块链网络时,区块链网络的管理员向区块链网络的某一个已有节点(以下简称为第一目标节点)输入群组加入交易。如此,第一目标节点接收到群组加入交易。其中,群组加入交易携带第一群组标识和节点数量上限信息,该第一群组标识是待加入的新群组的标识,该节点数量上限信息用于表示新群组允许包含的最大节点数量。示例地,如果节点数量上限等于10,则标识新群组加入区块链网络后,新群组中最多能加入10个节点。

如图2所示,第一目标节点响应于群组加入交易,将群组加入交易发送给第一指定群组(假设为图2中的群组B和群组C)的节点,使第一指定群组的节点对群组加入交易进行共识投票。每个第一指定群组的节点在接收到群组加入交易后,可以将群组加入交易显示给节点的用户,并接收用户输入的第一共识投票,该第一共识投票用于表征用户是否同意执行该群组加入交易。节点将用户输入的第一共识投票返回给第一目标节点,如此,第一目标节点陆续接收到每个第一指定群组的节点所返回的第一共识投票。其中,每个第一共识投票携带有:相应节点的节点标识和/或相应群组的群组标识。

如图2所示,第一目标节点将群组加入交易和全部第一共识投票,打包提交给交易排序节点。交易排序节点对群组加入交易和当前时间段内接收到的其他交易进行排序,以获得交易集合,该交易集合中包括:具有顺序关系的多个交易、以及每个交易各自对应的共识投票。交易排序节点将该交易集合分发给区块链网络内的每个节点(包括交易排序节点本身)。为简化附图,图2中仅示意性地示出了部分节点接收到交易集合。

如图2所示,区块链网络内的任一节点在接收到交易集合后,按照交易集合中多个交易的顺序关系,依次执行多个交易。其中,当节点执行到群组加入交易时,节点根据预设的第一共识策略和群组加入交易的第一共识投票,确定群组加入交易的第一共识结果。

为便于理解,示例地,假设第一共识策略为:(1)只要第一指定群组内有一个节点投出“同意执行”的共识投票,则该第一指定群组内所有节点的共识投票被归集为“同意执行”的共识投票,该共识投票作为该第一指定群组的共识投票;(2)只有当所有第一指定群组的共识投票均为“同意执行”时,才能得到共识通过的共识结果。如此,节点首先按照第一共识策略的第(1)点,将每个第一指定群组的节点的共识投票,归集为第一指定群组的共识投票;然后按照第一共识策略的第(2)点,根据每个第一指定群组的共识投票,确定共识结果。

如果群组加入交易的第一共识结果为共识通过,则节点执行群组加入交易,以将群组加入交易所携带的第一群组标识和节点数量上限信息对应地写入区块链。具体地,节点将群组加入交易所携带的第一群组标识和节点数量上限信息作为群组加入交易的执行结果,写入待上链区块中。

如果群组加入交易的第一共识结果为共识未通过,则节点拒绝执行群组加入交易。此外,节点可以直接为群组加入交易生成执行失败的记录,并将该记录作为群组加入交易的执行结果,写入待上链区块中。为简化附图,图2中未示出节点拒绝执行群组加入交易的情况。

当节点执行完交易集合中的全部交易,且各交易的执行结果均写入所述待上链区块后,节点与区块链网络中的其他节点对各自的待上链区块进行共识。如果一个节点确定其待上链区块通过共识,则将其待上链区块接入其保存的区块链的末尾。其中,在对待上链区块进行共识时,示例地,节点可以将其待上链区块的hash值发送给所有其他节点,相应地,节点也会陆续接收到其他节点发送的其他节点的待上链区块的hash值。然后节点将接收的每个hash值与其待上链区块的hash值进行比较,如果超过预设数量的hash值与其待上链区块的hash值相等,则节点确定其待上链区块通过共识。

为便于理解,假设区块链网络总共包括50个节点,所述预设数量等于总节点数量的80%,则预设数量等于40。又假设节点总共接收到其他49个节点各自发送的hash值后,其中有47个hash值与节点的待上链区块的hash值相等,由于47超过了预设数量40,因此节点确定其待上链区块通过共识。

总言之,本发明中,当区块链网络内的任一节点在获得群组加入交易和第一共识投票后,根据第一共识策略和第一共识投票,确定群组加入交易的第一共识结果,并在第一共识结果为共识通过的情况下,执行群组加入交易,以将新群组的群组标识写入区块链。如此,相当于在区块链网络中注册了一个新群组。如图2所示,图2中未包含节点的椭圆虚线框,表示注册完成的新群组。

参考图3,图3是本发明一实施例提出的群组加入方法的第二阶段的示意图。如图3所示,待加入的新节点向区块链网络内的某一个已有节点(以下简称为第二目标节点)发送节点加入交易。如此,第二目标节点接收到节点加入交易。其中,节点加入交易携带节点标识和第二群组标识,该节点标识是待加入的新节点的标识,第二群组标识是新节点准备加入的群组的标识。图3中,以虚线小圆圈表示待加入的新节点,新节点所在的椭圆虚线框,表示新节点准备加入的群组。

如图3所示,第二目标节点响应于节点加入交易,首先从节点加入交易中查询第二群组标识,然后从区块链中查询该第二群组标识当前对应的节点数量,从而确定新节点准备加入的群组中当前所包含的节点数量。第二目标节点根据确定出的节点数量,从区块链网络的多个群组中,为节点加入交易确定对应的第二指定群组。第二目标节点将节点加入交易发送给确定出的第二指定群组的节点,使第二指定群组的节点对节点加入交易进行共识投票。

其中,考虑到用户在区块链网络内注册群组后,为了使得用户有能力控制新节点加入其群组,可以将新节点准备加入的群组(也即节点加入交易携带的第二群组标识所对应的群组),确定为第二指定群组。如此,当新节点准备加入某一群组时,需要由该群组对相应的节点加入交易进行共识投票。然而又考虑到,如果新节点准备加入的群组暂时还不包含节点,则该群组内暂时没有节点可以对节点加入交易进行共识投票。

基于上述考虑,本发明中,在确定出新节点准备加入的群组中当前所包含的节点数量后,如果节点数量大于0,则第二目标节点将节点加入交易携带的第二群组标识所对应的群组,确定为第二指定群组。换言之,将新节点准备加入的群组确定为第二指定群组。如果节点数量等于0,则第二目标节点将上述第一指定群组直接确定为第二指定群组。为简化附图,图3中仅示出了节点数量等于0的情况,如此,第二目标节点将第一指定群组(即群组B和群组C)确定为第二指定群组。

其中,第二指定群组的节点在接收到节点加入交易后,可以将节点加入交易显示给节点的用户,并接收用户输入的第二共识投票,该第二共识投票用于表征用户是否同意执行该节点加入交易。节点将用户输入的第二共识投票返回给第二目标节点,如此,第二目标节点接收到第二指定群组的节点所返回的第二共识投票。其中,每个第二共识投票携带有:相应节点的节点标识和/或相应群组的群组标识。

如图3所示,第二目标节点将节点加入交易和全部第二共识投票,打包提交给交易排序节点。交易排序节点对节点加入交易和当前时间段内接收到的其他交易进行排序,以获得交易集合,该交易集合中包括:具有顺序关系的多个交易、以及每个交易各自对应的共识投票。交易排序节点将该交易集合分发给区块链网络内的每个节点(包括交易排序节点本身)。为简化附图,图3中仅示意性地示出了部分节点接收到交易集合。

如图3所示,区块链网络内的任一节点在接收到交易集合后,按照交易集合中多个交易的顺序关系,依次执行多个交易。其中,当节点执行到节点加入交易时,节点根据预设的第二共识策略和节点加入交易的第二共识投票,确定节点加入交易的第二共识结果。

为便于理解,示例地,假设第二共识策略为:(1)只要第二指定群组内有一个节点投出“同意执行”的共识投票,则该第二指定群组内所有节点的共识投票被归集为“同意执行”的共识投票,该共识投票作为该第二指定群组的共识投票;(2)只有当所有第二指定群组的共识投票均为“同意执行”时,才能得到共识通过的共识结果。

此外,如图3所示,当节点执行到节点加入交易时,节点还从节点加入交易中查询第二群组标识,在查询到第二群组标识后,进一步判断区块链是否记录有第二群组标识。

此外,如图3所示,当节点执行到节点加入交易时,节点还从区块链中查询第二群组标识当前对应的节点数量,从而确定新节点准备加入的群组中当前所包含的节点数量。并且,节点还从区块链中查询第二群组标识对应的节点数量上限信息,然后判断第二群组标识对应的节点数量是否达到第二群组标识对应的节点数量上限。换言之,判断新节点准备加入的群组中的节点数量,是否达到该群组的节点数量上限。

如果第二共识结果为共识通过、且区块链记录有第二群组标识、且第二群组标识对应的节点数量未达到第二群组标识对应的节点数量上限,则执行节点加入交易。否则,则拒绝执行节点加入交易。为简化附图,图3中未示出节点拒绝执行节点加入交易的情况。

其中,在执行节点加入交易时,将节点加入交易所携带的节点标识和第二群组标识对应地写入区块链,并更新第二群组标识对应的节点数量,以及将更新后的节点数量写入区块链。具体地,为节点加入交易所携带的节点标识和第二群组标识,建立对应关系,并对第二群组标识对应的节点数量加1;再将建立的对应关系和加1后的节点数量,作为节点加入交易的执行结果,写入待上链区块中。

其中,如果拒绝执行节点加入交易,则可以直接为节点加入交易生成执行失败的记录,并将该记录作为节点加入交易的执行结果,写入待上链区块中。

当节点执行完交易集合中的全部交易,且各交易的执行结果均写入所述待上链区块后,节点与区块链网络中的其他节点对各自的待上链区块进行共识。如果一个节点确定其待上链区块通过共识,则将其待上链区块接入所述其保存的区块链的末尾。其中,在对待上链区块进行共识时,示例地,节点可以将其待上链区块的hash值发送给所有其他节点,相应地,节点也会陆续接收到其他节点发送的其他节点的待上链区块的hash值。然后节点将接收的每个hash值与其待上链区块的hash值进行比较,如果超过预设数量的hash值与其待上链区块的hash值相等,则节点确定其待上链区块通过共识。

此外,区块链网络内的任一节点在其本地均存储有节点统计表,该节点统计表用于记录区块链网络包括的所有节点各自的节点标识和/或节点地址。每个节点可以通过查询其本地存储的节点统计表,确定区块链网络包括的其他节点,从而可以向区块链网络的其他节点广播信息。区块链网络的任一节点在执行完上述节点加入交易后,还会将新节点的节点标识和/或节点地址写入该任一节点本地存储的节点统计表。

总言之,本发明中,当区块链网络内的任一节点在获得节点加入交易后,判断区块链是否记录有节点加入交易携带的群组标识。若是,则执行节点加入交易,以将节点加入交易携带的节点标识和群组标识对应地写入区块链。如此,相当于在已经注册的群组中加入了一个新节点。通过图2所示的第一阶段和图3所示的第二阶段,实现了在区块链网络中动态加入新群组。

对于新节点而言,新节点可以预先从区块链网络内的某一个已有节点处获得区块链的创世块。当节点加入交易被执行、且执行结果通过共识并写入区块链后,新节点获得节点加入交易的执行结果。可选地,在一些具体实施方式中,新节点可以向周期性地向区块链网络内的某一个已有节点发送执行结果获取请求,当该节点执行完节点加入交易、且执行结果通过共识并写入区块链后,该节点将执行结果返回给新节点。或者可选地,在另一些具体实施方式中,当区块链网络内的某一个已有节点执行完节点加入交易、且执行结果通过共识并写入区块链后,该节点主动将执行结果返回给新节点。

新节点获得执行结果后,新节点根据执行结果,判断节点加入交易是否执行成功。可选地,在一些具体实施方式中,新节点判断执行结果中是否包括:节点标识和第二群组标识的对应关系,如果包括,则新节点确定节点加入交易执行成功,如果不包括,则新节点确定节点加入交易未执行成功。

如果新节点确定节点加入交易执行成功,则新节点从区块链网络内的某一个已有节点处获得区块链的历史区块。其中,历史区块包括:区块高度为2至区块高度为当前高度的全部区块。新节点按照区块高度从低到高的顺序,依次针对每个区块,执行以下步骤:(1)读取该区块记录的多个交易;(2)按照多个交易在区块中的顺序,依次执行各个交易,从而依次获得多个执行结果;(3)将多个执行结果写入待上链区块,并将该待上链区块连接至新节点的区块链的末尾,使得该区块链的区块高度加1。

当新节点依次针对每个历史区块执行完上述步骤后,则新节点同步到其他已有节点的区块链。需要说明的是,在新节点依次针对每个历史区块执行上述步骤期间,新节点可能会接受到交易排序节点陆续发送的一个或多个交易集合。新节点存储这些交易集合,当新节点依次针对每个历史区块执行完上述步骤后,新节点再依次处理这些交易集合。新节点处理交易集合的具体过程,可参照前述内容,为避免重复,此处不再赘述。

以上,本发明通过较优实施例,提出群组加入方法。以下,本发明通过另一些实施例提出另一些群组加入方法。以下实施例和以上较优实施例在某些方面可以相互参照。

参考图4,图4是本发明一实施例提出的群组加入方法的流程图,该群组加入方法应用于区块链网络内的任一节点。如图4所示,该方法包括:

步骤S41:获得群组加入交易和第一共识投票,所述群组加入交易携带第一群组标识,所述第一群组标识是待加入的新群组的标识,所述第一共识投票是所述区块链网络内的第一指定群组的节点对所述群组加入交易的共识投票。

可选地,在一些具体实施方式中,所述任一节点可以接收交易排序节点发送的第一交易集合,该第一交易集合中包括群组加入交易和群组加入交易的第一共识投票。如此,所述任一节点获得了群组加入交易和第一共识投票。

步骤S42:根据第一共识策略和所述第一共识投票,确定所述群组加入交易的第一共识结果。

步骤S43:在所述第一共识结果为共识通过的情况下,执行所述群组加入交易,以将所述第一群组标识写入区块链。

步骤S44:获得节点加入交易,所述节点加入交易携带节点标识和第二群组标识,所述节点标识是待加入的新节点的标识,所述第二群组标识是所述新节点准备加入的群组的标识。

可选地,在一些具体实施方式中,所述任一节点可以接收交易排序节点发送的第二交易集合,该第二交易集合中包括节点加入交易。如此,所述任一节点获得了节点加入交易。

步骤S45:判断所述区块链是否记录有所述第二群组标识,在所述区块链记录有所述第二群组标识的情况下,执行所述节点加入交易,以将所述节点标识和所述第二群组标识的对应关系写入所述区块链。

对于上述步骤S41至步骤S45的具体实施方式,可参照上述较优实施例,为避免重复,此处不再赘述。

本发明中,当区块链网络内的任一节点在获得群组加入交易和第一共识投票后,根据第一共识策略和第一共识投票,确定群组加入交易的第一共识结果,并在第一共识结果为共识通过的情况下,执行群组加入交易,以将新群组的群组标识写入区块链。如此,相当于在区块链网络中注册了一个新群组。当区块链网络内的任一节点在获得节点加入交易后,判断区块链是否记录有节点加入交易携带的群组标识。若是,则执行节点加入交易,以将节点加入交易携带的节点标识和群组标识对应地写入区块链。如此,相当于在已经注册的群组中加入了一个新节点。通过上述过程,实现了在区块链网络中加入新群组。

此外,由于节点在执行群组加入交易之前,需要判断第一共识结果是否为共识通过,并且在第一共识结果为共识通过的情况下,才执行群组加入交易。如此,可以实现第一指定群组对新群组加入的监管控制,有利于提高区块链网络的安全性。

此外,由于节点在执行节点加入交易之前,需要判断区块链是否记录有节点加入交易携带的群组标识。换言之,需要判断新节点准备加入的群组是否为已经在区块链网络内注册过的群组。如此,有利于防止区块链网络内混入非法节点(即不属于任何群组的节点),从而进一步提高区块链网络的安全性。

可选地,在一些具体实施方式中,所述任一节点在执行节点加入交易时,除了需要将节点标识和第二群组标识的对应关系写入区块链,还可以更新第二群组标识对应的节点数量,以及将更新后的节点数量写入区块链。具体地,所述任一节点通过查询区块链,以确定第二群组标识对应的节点数量,也即确定新节点准备加入的群组当前包含的节点的数量。所述任一节点在查询到节点数量后,对节点数量加1,然后将加1后的节点数量写入区块链。

本发明中,通过更新群组的节点数量,并将更新后的节点数量写入区块链。如此,使得区块链网络内的任一节点可以通过查询区块链,以确定每个群组的节点数量。

此外,考虑到区块链网络的整体性能(例如网络性能)会受到节点数量的影响,节点数量越多,区块链网络内的网络通信压力越大。

为了保证区块链网络的整体性能,可选地,在一些具体实施方式中,上述群组加入交易还可以携带节点数量上限信息,该节点数量上限信息用于表示新群组允许包含的最大节点数量。

上述任一节点在执行群组加入交易时,具体地,将群组加入交易携带的第一群组标识和节点数量上限信息对应地写入所述区块链。

上述任一节点在执行节点加入交易之前,除了需要判断区块链是否记录有第二群组标识,还可以查询第二群组标识对应的节点数量,以及判断该节点数量是否达到第二群组标识对应的节点数量上限。换言之,上述任一节点除了需要判断区块链是否记录有第二群组标识,还可以判断新节点准备加入的群组中的节点数量,是否达到该群组的节点数量上限。

只有当区块链记录有第二群组标识、且第二群组标识对应的节点数量未达到第二群组标识对应的节点数量上限时,才执行节点加入交易。否则,拒绝执行节点加入交易。

本发明中,通过为每个群组设置节点数量上限,并且将节点数量上限、群组已经拥有的节点的数量等信息写入区块链。如此,每个节点在执行节点加入交易之前,可以通过查询区块链,以确定新节点准备加入的群组当前包含的节点的数量是否达到其节点数量上限。在节点数量达到节点数量上限的情况下,拒绝执行节点加入交易。如此,可以有效限制每个群组内节点的数量,防止群组无节制地将大量新节点接入区块链网络,导致区块链网络性能下降,影响交易的执行效率。

可选地,在一些具体实施方式中,所述任一节点在获得节点加入交易的同时,还获得第二共识投票,所述第二共识投票是所述区块链网络内的第二指定群组的节点对所述节点加入交易的共识投票。

所述任一节点在执行节点加入交易之前,除了需要判断区块链是否记录有第二群组标识,还可以根据第二共识策略和第二共识投票,确定节点加入交易的第二共识结果。只有当第二共识结果为共识通过、且区块链记录有第二群组标识时,才执行所述节点加入交易。否则,拒绝执行节点加入交易。

本发明中,由于节点在执行节点加入交易之前,需要判断第二共识结果是否为共识通过,如果第二共识结果为共识未通过,则拒绝执行群组加入交易。如此,可以实现对新节点加入的监管控制,有利于提高区块链网络的安全性。

可选地,在一些具体实施方式中,对节点加入交易进行共识投票的过程,包括:目标节点接收所述新节点发出的所述节点加入交易,所述目标节点是所述区块链网络中的一个节点;所述目标节点查询所述区块链,以确定所述节点加入交易携带的第二群组标识对应的节点数量;所述目标节点根据确定出的节点数量,从所述区块链网络的多个群组中,为所述节点加入交易确定对应的第二指定群组;所述目标节点将所述节点加入交易发送给确定出的第二指定群组的节点,以使得节点对所述节点加入交易进行共识投票。

其中,目标节点在确定第二指定群组时,具体地:如果确定出的节点数量大于0,则将节点加入交易携带的第二群组标识所对应的群组,确定为第二指定群组。换言之,如果新节点准备加入的群组内已经包含节点,则将该群组确定为第二指定群组,以通过该群组为节点加入交易进行共识投票。

如果确定出的节点数量等于0,则将所述第一指定群组确定为第二指定群组。换言之,如果新节点准备加入的群组内还不存在节点,则将上述第一指定群组确定为第二指定群组,以通过上述第一指定群组为节点加入交易进行共识投票。

可选地,在一些具体实施方式中,所述任一节点在执行完节点加入交易后,还会将所述新节点的节点标识和/或节点地址写入本地的节点统计表,所述节点统计表用于记录所述区块链网络包括的所有节点各自的节点标识和/或节点地址。

具体地,区块链网络内的任一节点在其本地均存储有节点统计表,该节点统计表用于记录区块链网络包括的所有节点各自的节点标识和/或节点地址。每个节点可以通过查询其本地存储的节点统计表,确定区块链网络包括的其他节点,从而可以向区块链网络的其他节点广播信息。区块链网络的任一节点在执行完上述节点加入交易后,还会将新节点的节点标识和/或节点地址写入该任一节点本地存储的节点统计表。

参考图5,图5是本发明另一实施例提出的群组加入方法的流程图。如图5所示,该方法包括:

步骤S51:区块链网络内的第一目标节点接收到群组加入交易,并响应于所述群组加入交易,将所述群组加入交易发送给所述区块链网络内的指定群组的节点,其中,所述群组加入交易携带第一群组标识,所述第一群组标识是待加入的新群组的标识。

步骤S52:每个指定群组的节点响应于所述群组加入交易,对所述群组加入交易进行共识投票,以生成针对所述群组加入交易的共识投票,节点将所述共识投票返回给所述第一目标节点。

步骤S53:所述第一目标节点接收每个节点返回的共识投票,并将所述群组加入交易和所述共识投票打包提交给所述区块链网络内的交易排序节点,其中,所述交易排序节点用于接收各节点提交的交易,并对交易进行排序以获得交易集合,以及将交易集合分发给每个节点。

步骤S54:所述交易排序节点将所述群组加入交易排列至第一交易集合中,并将所述第一交易集合分发给每个节点。

步骤S55:所述区块链网络中的任一节点在接收到所述第一交易集合后,依次执行所述第一交易集合中的每个交易,当执行到所述群组加入交易时,根据预设共识策略和所述群组加入交易携带的共识投票,确定所述群组加入交易的共识结果,在所述共识结果为共识通过的情况下,执行所述群组加入交易,以将所述第一群组标识写入区块链。

步骤S56:区块链网络内的第二目标节点接收到待加入的新节点发送的节点加入交易,其中,所述节点加入交易携带节点标识和第二群组标识,所述节点标识是所述新节点的标识,所述第二群组标识是所述新节点准备加入的群组的标识。

步骤S57:所述第二目标节点将所述节点加入交易提交给所述交易排序节点。

步骤S58:所述交易排序节点将所述节点加入交易排列至第二交易集合中,并将所述第二交易集合分发给每个节点。

步骤S59:所述区块链网络中的任一节点在接收到所述第二交易集合后,依次执行所述第二交易集合中的每个交易,当执行到所述节点加入交易时,判断所述区块链是否记录有所述第二群组标识,在所述区块链记录有所述第二群组标识的情况下,执行所述节点加入交易,以将所述节点标识和所述第二群组标识的对应关系写入所述区块链。

需要说明的是,上述第一目标节点是区块链网络的多个节点中的任意一个节点,上述第二目标节点也是区块链网络的多个节点中的任意一个节点。第一目标节点和第二目标节点可能是同一节点,也可能是不同节点。

对于步骤S51至步骤S59的具体实现方式,可参考上述较优实施例,为避免重复,此处不再赘述。

基于同一发明构思,本发明实施例还提供一种群组加入装置。参考图6,图6是本发明一实施例提出的群组加入装置的示意图,该装置应用于区块链网络内的任一节点。

如图6所示,该装置包括:交易获得模块61、共识结果确定模块62、群组加入交易执行模块63以及节点加入交易执行模块64,其中:

所述交易获得模块61,用于获得群组加入交易和第一共识投票,所述群组加入交易携带第一群组标识,所述第一群组标识是待加入的新群组的标识,所述第一共识投票是所述区块链网络内的第一指定群组的节点对所述群组加入交易的共识投票;

所述共识结果确定模块62,用于根据第一共识策略和所述第一共识投票,确定所述群组加入交易的第一共识结果;

所述群组加入交易执行模块63,用于在所述第一共识结果为共识通过的情况下,执行所述群组加入交易,以将所述第一群组标识写入区块链;

所述交易获得模块61,还用于获得节点加入交易,所述节点加入交易携带节点标识和第二群组标识,所述节点标识是待加入的新节点的标识,所述第二群组标识是所述新节点准备加入的群组的标识;

所述节点加入交易执行模块64,用于判断所述区块链是否记录有所述第二群组标识,在所述区块链记录有所述第二群组标识的情况下,执行所述节点加入交易,以将所述节点标识和所述第二群组标识的对应关系写入所述区块链。

可选地,在一些具体实施方式中,所述节点加入交易执行模块,具体用于:执行所述节点加入交易,以将所述节点标识和所述第二群组标识的对应关系写入所述区块链,并更新所述第二群组标识对应的节点数量,以及将更新后的节点数量写入所述区块链。

可选地,在一些具体实施方式中,所述群组加入交易还携带节点数量上限信息;

所述群组加入交易执行模块,具体用于:在所述第一共识结果为共识通过的情况下,执行所述群组加入交易,以将所述第一群组标识和所述节点数量上限信息对应地写入所述区块链;

所述节点加入交易执行模块,具体用于:判断所述区块链是否记录有所述第二群组标识,并查询所述第二群组标识对应的节点数量,以及判断该节点数量是否达到所述第二群组标识对应的节点数量上限,在所述区块链记录有所述第二群组标识、且所述第二群组标识对应的节点数量未达到所述第二群组标识对应的节点数量上限的情况下,执行所述节点加入交易。

可选地,在一些具体实施方式中,所述交易获得模块在用于获得所述节点加入交易的同时,还用于获得第二共识投票,所述第二共识投票是所述区块链网络内的第二指定群组的节点对所述节点加入交易的共识投票;

所述节点加入交易执行模块,具体用于:根据第二共识策略和所述第二共识投票,确定所述节点加入交易的第二共识结果,并判断所述区块链是否记录有所述第二群组标识,在所述第二共识结果为共识通过、且所述区块链记录有所述第二群组标识的情况下,执行所述节点加入交易。

可选地,在一些具体实施方式中,所述装置还包括:

交易接收模块,用于接收所述新节点发出的所述节点加入交易;

指定群组确定模块,用于查询所述区块链,以确定所述节点加入交易携带的第二群组标识对应的节点数量;

指定群组确定模块,用于根据确定出的节点数量,从所述区块链网络的多个群组中,为所述节点加入交易确定对应的第二指定群组;

交易发送模块,用于将所述节点加入交易发送给确定出的第二指定群组的节点,以使得节点对所述节点加入交易进行共识投票。

可选地,在一些具体实施方式中,如果确定出的节点数量大于0,则所述指定群组确定模块将所述节点加入交易携带的第二群组标识所对应的群组,确定为所述第二指定群组;如果确定出的节点数量等于0,则所述指定群组确定模块将所述第一指定群组确定为所述第二指定群组。

可选地,在一些具体实施方式中,所述装置还包括:

节点统计表管理模块,用于将所述新节点的节点标识和/或节点地址写入本地的节点统计表,所述节点统计表用于记录所述区块链网络包括的所有节点各自的节点标识和/或节点地址。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

基于同一发明构思,本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信。

所述存储器703,用于存放计算机程序;

所述处理器701,用于在执行存储器703上所存放的程序时,实现如下步骤:

获得群组加入交易和第一共识投票,所述群组加入交易携带第一群组标识,所述第一群组标识是待加入的新群组的标识,所述第一共识投票是所述区块链网络内的第一指定群组的节点对所述群组加入交易的共识投票;

根据第一共识策略和所述第一共识投票,确定所述群组加入交易的第一共识结果;

在所述第一共识结果为共识通过的情况下,执行所述群组加入交易,以将所述第一群组标识写入区块链;

获得节点加入交易,所述节点加入交易携带节点标识和第二群组标识,所述节点标识是待加入的新节点的标识,所述第二群组标识是所述新节点准备加入的群组的标识;

判断所述区块链是否记录有所述第二群组标识,在所述区块链记录有所述第二群组标识的情况下,执行所述节点加入交易,以将所述节点标识和所述第二群组标识的对应关系写入所述区块链。

或者,处理器701用于在执行存储器703上所存放的程序时,实现本发明以上其他方法实施例所提供的群组加入方法步骤。

上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的部分实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

相关技术
  • 群组加入方法、装置和电子设备
  • 聊天群组加入方法、装置、电子设备及存储介质
技术分类

06120112186315