本发明涉及通信技术领域,特别是涉及一种节点管理方法、装置、电子设备及可读存储介质。
背景技术:
区块链技术实现于区块链网络之上,区块链网络中的分布式节点设备通过运行区块链程序,从而实现区块数据的生成和共识,最终实现了数据的防篡改机制,为业务开展提供了安全可信的技术新思路。
区块链技术可应用至多种业务场景,例如金融领域、电子商务领域、商品或原材料溯源领域、电子存证领域等,由于区块链技术实现了数据防篡改机制,因此利用区块链技术开展业务,能解决业务参与各方之间的信任危机。
相关技术中,随着业务开展多样性的提高,产生了在两个联盟链之间进行跨链交易的需求,或者在两个私有链之间进行跨链交易的需求。为此,技术人员开发出支持跨链交易的区块链网络系统,该区块链网络系统中包括两个或多个联盟链网络,或者包括两个或多个私有链网络。然而由于区块链网络系统中包括多个区块链网络,区块链网络系统相比于单个区块链网络更加复杂,因此有必要提供一种对节点进行管理的技术方案。特别是当新节点准备加入时,如何确保网络系统的安全性不受影响,是需要解决的技术问题。
技术实现要素:
本发明实施例的目的在于提供一种节点管理方法、装置、电子设备及可读存储介质,具体技术方案如下:
在本发明实施例的第一方面,提供一种节点管理方法,应用于网络系统中的公共区块链网络中的任一节点,该节点维护有节点组织表,该节点组织表用于记录每个节点组织的组织信息;所述网络系统中还包括多个专属区块链网络;所述方法包括:
获得节点加入交易,所述节点加入交易中包含:准备加入目标专属区块链网络的新节点所属的节点组织的组织id,所述目标专属区块链网络是所述多个专属区块链网络中的任一个;
根据所述节点加入交易包含的组织id,从所述节点组织表中查询该组织id对应的组织信息,并根据查询到的组织信息,验证所述新节点的合法性;
在所述新节点合法的情况下,确认所述新节点可以加入所述目标专属区块链网络。
在本发明实施例的第二方面,提供一种节点管理装置,应用于网络系统中的公共区块链网络中的任一节点,该节点维护有节点组织表,该节点组织表用于记录每个节点组织的组织信息;所述网络系统中还包括多个专属区块链网络;所述装置包括:
交易获得模块,用于获得节点加入交易,所述节点加入交易中包含:准备加入目标专属区块链网络的新节点所属的节点组织的组织id,所述目标专属区块链网络是所述多个专属区块链网络中的任一个;
合法性验证模块,用于根据所述节点加入交易包含的组织id,从所述节点组织表中查询该组织id对应的组织信息,并根据查询到的组织信息,验证所述新节点的合法性;
新节点确认模块,用于在所述新节点合法的情况下,确认所述新节点可以加入所述目标专属区块链网络。
在本发明实施例的第三方面,提供一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于在执行存储器上所存放的程序时,实现本发明任一实施例所提供的节点管理方法。
在本发明实施例的第四方面,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任一实施例所提供的节点管理方法。
本发明中,公共区块链网络对各专属区块链网络的节点具有集中管控能力,当新节点准备加入任一专属区块链网络时,公共区块链网络可以对新节点加入这类事件进行管控,从而有利于防止非法新节点加入专属区块链网络,进而确保网络系统安全性不受影响。
此外,本发明引入了节点组织的概念,公共区块链网络的节点中存储有节点组织表,节点组织表中记录有每个节点组织的组织信息。当新节点准备加入某一专属区块链网络时,公共区块链网络的节点会获得节点加入交易,然后根据节点加入交易包含的组织id,从节点组织表中查询该组织id对应的组织信息,并根据查询到的组织信息,验证新节点的合法性,接着在确定新节点合法的情况下,才确认新节点可以加入专属区块链网络。可见本发明中,可以从节点组织层面,对新节点的合法性进行验证,在确定新节点合法的情况下,才允许新节点加入。如此,可以防止非法新节点加入专属区块链网络,减少非法新节点的作恶机会,从而确保网络安全性不受影响。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,以下描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他附图。
图1(a)是本发明一实施例提出的节点管理方法的第一阶段示意图;
图1(b)是本发明一实施例提出的节点管理方法的第二阶段示意图;
图1(c)是本发明一实施例提出的节点管理方法的第三阶段示意图;
图1(d)是本发明一实施例提出的节点管理方法的第四阶段示意图;
图2是本发明一实施例提出的节点管理方法中节点组织删除阶段的示意图;
图3是本发明一实施例提出的节点管理方法的流程图;
图4是本发明一实施例提出的节点管理装置的示意图;
图5是本发明一实施例提出的电子设备的示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
区块链技术实现于区块链网络之上,区块链网络中的分布式节点设备(以下简称为节点)通过运行区块链程序,从而实现区块数据的生成和共识,最终实现了数据的防篡改机制,为业务开展提供了安全可信的技术新思路。
相关技术中,随着业务开展多样性的提高,产生了在两个联盟链之间进行跨链交易的需求,或者在两个私有链之间进行跨链交易的需求。为此,技术人员开发出支持跨链交易的区块链网络系统,该区块链网络系统中包括两个或多个联盟链网络,或者包括两个或多个私有链网络。然而由于区块链网络系统中包括多个区块链网络,区块链网络系统相比于单个区块链网络更加复杂,因此有必要提供一种对节点进行管理的技术方案。特别是当新节点准备加入时,如何确保网络系统的安全性不受影响,是需要解决的技术问题。
有鉴于此,本发明通过以下实施例提出节点管理方法、装置、电子设备及可读存储介质,旨在当新节点准备加入时,确保网络系统的安全性不受影响。
参考图1(a),图1(a)是本发明一实施例提出的节点管理方法的第一阶段示意图,该节点管理方法应用于图1(a)中示出的区块链网络系统(以下简称为网络系统)。需要说明的是,为简化附图,凡是每个节点均需要参与的步骤,在图1(a)中仅示意性地示出了一个或几个节点参与该步骤,而没有完整地示出所有节点均参与该步骤。
如图1(a)所示,网络系统包括公共区块链网络和多个专属区块链网络,每个区块链网络包括多个分布式节点设备(以下简称为节点),一个区块链网络的多个节点通过运行区块链程序,从而实现区块链技术。
需要说明的是,所谓公共区块链网络,并非是指该区块链网络一定是公有链网络,实际上公共区块链网络可以是公有链网络、联盟链网络或者私有链网络,且优选为联盟链网络或私有链网络。公共区块链网络的作用之一在于:对不同专属区块链网络之间的跨链交易进行见证。所谓专属区块链网络,通常为联盟链网络或私有链网络。在专属区块链网络内执行的交易,通常具有一定的私密性。
整个网络系统的多个节点形成若干个节点组织,某些节点组织所包含的全部节点均分布在同一个专属区块链网络中,某些节点组织所包含的全部节点分布在两个或多个专属区块链网络中,某些节点组织所包含的全部节点均分布在公共区块链网络中,某些节点组织所包含的全部节点分布在专属区块链网络和公共区块链网络中。需要说明的是,所述“某些”是广义的概念,所述“某些”具体可以是零个、一个或多个。
为便于理解,示例地,银行a运维的10个节点、银行b运维的25个节点、以及银行c运维的5个节点,共同组成专属区块链网络pn_01。银行a、银行b以及银行c可以通过各自在专属区块链网络pn_01内的节点,相互之间开展链内的私密业务。此外,银行a运维的另外12个节点、银行c运维的另外8个节点、以及银行d运维的15个节点,共同组成专属区块链网络pn_02。银行a、银行c以及银行d可以通过各自在专属区块链网络pn_02内的节点,相互之间开展链内的私密业务。
其中,银行a总共运维的22个节点作为一个节点组织,该节点组织的22个节点分布在专属区块链网络pn_01和专属区块链网络pn_02中。银行b总共运维的25个节点作为一个节点组织,该节点组织的25个节点均分布在专属区块链网络pn_01中。
公共区块链网络的每个节点中维护有节点组织表,该节点组织表用于记录每个节点组织的组织信息。此外,每个专属区块链网络的每个节点中也可以维护有所述节点组织表。
示例地,节点组织表的具体形式如表1所示。需要说明的是,表1所示的节点组织表仅作为示例,本领域技术人员在该示例的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围内。
表1节点组织表
表1中,一个节点组织包含多个节点的节点信息,这些节点信息组成该节点组织的组织信息。一个节点的节点信息包括:该节点的公钥、该节点所属的专属区块链网络的网络id、以及该节点的状态。为便于理解,以节点a1的节点信息为例进行具体说明,如表1所示,节点a1的公钥为aaaab3nz…baqdsortrbb,节点a1所属的专属区块链网络的网络id为pn_01,节点a1当前的状态为已启用。
本发明中,每个节点可以通过查询其维护的节点组织表,从而读取节点组织表中记录的组织信息。
当新节点a23准备加入专属区块链网络时,公共区块链网络需要预先在节点组织表中添加预注册节点信息。具体地,如图1(a)所示,当新节点a23准备加入专属区块链网络时,公共区块链网络的任一节点(例如节点1)接收到管理员提交的节点信息添加交易tx1,该节点信息添加交易tx1中包含:新节点a23的公钥、以及新节点a23所属的节点组织的组织id。
如图1(a)所示,节点1接收到节点信息添加交易tx1后,按照预设投票规则的约定,将节点信息添加交易tx1发送给多个指定节点进行投票。
为便于理解,示例地,假设投票规则约定:针对节点信息添加交易tx1,需要由节点2和节点4投票。因此节点1将节点信息添加交易tx1发送给节点2和节点4进行投票。
可选地,在一些具体实施方式中,节点在进行投票时,可以读取节点信息添加交易tx1携带的业务参数(例如节点公钥、组织id等)。然后判断读取的业务参数是否符合预设的业务要求,若符合,则该节点投出同意添加节点信息的投票,若不符合,则该节点投出不同意添加节点信息的投票。
可选地,在另一些具体实施方式中,节点在进行投票时,可以将节点信息添加交易tx1显示给该节点的管理员,并接收管理员对节点信息添加交易tx1的投票。管理员的投票用于表征:该节点是否同意添加节点信息。
需要说明的是,上述两种投票方式仅作为示例,本发明在具体实施时,可以采用不同于上述两种投票方式的其他方式。
如图1(a)所示,节点1接收各个指定节点返回的投票数据,并将各指定节点的投票数据填充至节点信息添加交易tx1中。节点1将填充了投票数据的节点信息添加交易tx1发送给公共区块链网络的主节点。
如图1(a)所示,公共区块链网络的主节点在接收到节点信息添加交易tx1后,将节点信息添加交易tx1与同时段接收的其他交易进行排序,从而生成交易包,该交易包中包括具有顺序关系的多个交易。主节点将交易包分发给公共区块链网络的每个节点。
如图1(a)所示,公共区块链网络的每个节点接收到交易包后,从交易包中读取出交易,并按照各个交易的顺序关系依次执行各个交易。其中,当节点执行到节点信息添加交易tx1时,从节点信息添加交易tx1中读取出各个指定节点的投票数据,并根据各个指定节点的投票数据和预设的第一判断规则,确定是否需要添加节点信息。
为便于理解,示例地,例如第一判断规则为:如果所有投票中,同意添加节点信息的票数,超过指定节点总数的预设比例(例如60%),则确定需要添加节点信息。假设公共区块链网络的指定节点总数为20,而各指定节点的所有投票中,同意添加节点信息的票数为18票,由于票数18超过了20的60%,因此确定需要添加节点信息。
如图1(a)所示,如果公共区块链网络的节点通过上述判断,确定需要添加节点信息,则该节点从节点信息添加交易tx1中读取组织id和公钥,然后在节点组织表的相应节点组织条目下,添加一条预注册节点信息,该预注册节点信息中包括:未占用公钥、网络id以及节点状态。其中,未占用公钥也即是节点信息添加交易tx1中包括的公钥,网络id暂时为空,节点状态暂时为未启用。
为便于理解,示例地,假设新节点a23所属的节点组织为节点组织a,新节点a23的公钥为hgpkaujha…myhxyfaa5y3o。则节点信息添加交易tx1中包括的组织id等于节点组织a的组织id,节点信息添加交易tx1中包括的公钥等于hgpkaujha…myhxyfaa5y3o。公共区块链网络的节点在节点组织表中添加预注册节点信息后,新的节点组织表如表2所示。
表2新的节点组织表
表2中,节点组织a条目下的节点a23即是添加的预注册节点信息,该预注册节点信息中的公钥等于hgpkaujha…myhxyfaa5y3o,网络id为空,状态为未启用。
如图1(a)所示,公共区块链网络的节点将节点信息添加交易tx1和交易执行成功标识“yes”作为区块数据,从而生成新区块。为了将公共区块链网络生成的区块与专属区块链网络生成的区块相区分,以下将公共区块链网络生成的区块称为公共区块。
如图1(a)所示,每个专属区块链网络的每个节点同步公共区块链网络生成的公共区块。具体地,公共区块链网络的节点通过网络,将生成的公共区块传递给专属区块链网络的节点。
当专属区块链网络的节点从同步到的公共区块中读取到节点信息添加交易tx1,并读取到执行成功标识“yes”时,专属区块链网络的节点通过执行节点信息添加交易tx1,从而在其维护的节点组织表的相应节点组织条目下,添加一条预注册节点信息,该预注册节点信息中包括:未占用公钥、网络id以及节点状态。其中,未占用公钥也即是节点信息添加交易tx1中包括的公钥,网络id暂时为空,节点状态暂时为未启用。
参考图1(b),图1(b)是本发明一实施例提出的节点管理方法的第二阶段示意图。需要说明的是,为简化附图,凡是每个节点均需要参与的步骤,在图1(b)中仅示意性地示出了一个或几个节点参与该步骤,而没有完整地示出所有节点均参与该步骤。
如图1(b)所示,新节点a23向准备加入的专属区块链网络pn_01发送节点加入交易tx2,节点加入交易tx2中包含:新节点a23的节点id(也即是a23)、新节点a23所属的节点组织的组织id(也即节点组织a的组织id)、新节点a23准备加入的专属区块链网络的网络id(也即是pn_01)、以及新节点a23利用其私钥对交易数据进行签名后得到的签名数据。其中,交易数据包括但不限于节点加入交易tx2中的:节点id、组织id以及网络id等。
示例地,节点加入交易tx2的交易结构如表3所示。需要说明的是,表3所示的交易结构仅作为示例,本领域技术人员在该示例的精神和原则之内所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围内。
表3节点加入交易tx2的交易结构表
需要补充说明的是,表3中,交易id是节点加入交易tx2的唯一性标识。交易类型用于表征交易是跨链交易还是链内交易,本发明中,节点加入交易tx2属于跨链交易类型。投票数据和预执行结果暂时为空,在节点加入的后续流程中会被依次补充。
如图1(b)所示,专属区块链网络pn_01的节点7接收到新节点a23提交的节点加入交易tx2后,从交易结构中读取交易类型,并识别出交易类型为跨链交易类型。响应于此,节点7根据跨链交易类型对应的预设投票规则,将节点加入交易tx2发送给预设投票规则所约定的若干指定节点进行投票。
如图1(b)所示,专属区块链网络pn_01的节点7接收各指定节点返回的投票数据,并将各指定节点的投票数据填充至节点加入交易tx2,以及将填充有投票数据的节点加入交易tx2广播给专属区块链网络pn_01的每个节点。
如图1(b)所示,专属区块链网络pn_01的主节点对节点加入交易tx2进行改造,得到节点加入交易tx3,并将节点加入交易tx3提交给公共区块链网络。
具体实现时,当每个节点接收到节点7广播的节点加入交易tx2后,对节点加入交易tx2进行存储,并将节点加入交易tx2标记为待发出信息。并且,每个节点周期性地(例如每5秒)判断一下自身是否为主节点。如果自身为主节点,则将待发出的节点加入交易tx2改造为节点加入交易tx3,以及将节点加入交易tx3发向公共区块链网络。此外,主节点将节点加入交易tx3提交给公共区块链网络之后,主节点可以向各节点发送提示信息,使得各节点将节点加入交易tx2标记为已发送信息。
本发明中,由于专属区块链网络的每个节点都存储有节点加入交易tx2,任一节点被选举成主节点后,都可以从本地获取到待发送的节点加入交易tx2,并将节点加入交易tx2改造为节点加入交易tx3,再提交给公共区块链网络。因此,通过上述方式向公共区块链网络提交节点加入交易tx3,可以使得节点加入交易tx3被更可靠地提交给公共区块链网络,不易造成节点加入交易tx3的丢失。
其中,主节点在改造节点加入交易tx2时,具体地,主节点变更节点加入交易tx2的交易id,得到改造后的节点加入交易tx2,也即节点加入交易tx3。
示例地,节点加入交易tx3的交易结构如表4所示。
表4节点加入交易tx3的交易结构表
通过与表3对比可知,节点加入交易tx3中添加了投票数据,节点加入交易tx3的交易id不同于节点加入交易tx2的交易id。在一些具体实施方式中,为了得到节点加入交易tx3的交易id,主节点可以修改节点加入交易tx2的节点id的首位字符,例如将首字符“0”修改成首字符“1”。
如图1(b)所示,公共区块链网络的任一节点(例如节点1)接收到节点加入交易tx3后,可以将节点加入交易tx3提交给公共区块链网络的主节点。主节点响应于节点加入交易tx3,生成一个交易包,该交易包中包含节点加入交易tx3。主节点将该交易包分发给公共区块链网络的每个节点。
如图1(b)所示,公共区块链网络的每个节点接收到交易包后,从交易包中读取出节点加入交易tx3,并执行节点加入交易tx3。其中,每个节点在执行节点加入交易tx3时,具体地,从节点加入交易tx3中读取出投票数据,并根据预设的第二判断规则,判断专属区块链网络pn_01是否同意新节点加入,从而生成判断结果。每个节点将其生成的判断结果及节点加入交易tx3作为区块数据,从而生成新的公共区块。
为便于理解,示例地,例如第二判断规则为:如果一个专属区块链网络的所有投票中,同意新节点加入的票数,超过该专属区块链网络的全部投票节点数量的预设比例(例如60%),则确定该专属区块链网络同意新节点加入。假设专属区块链网络pn_01的全部投票节点的数量为15,而专属区块链网络a的所有投票中,同意新节点加入的票数为13票,由于票数13超过了15的60%,因此确定专属区块链网络pn_01同意新节点加入。
需要说明的是,上述第二判断规则仅作为示例,不应理解为是对本发明的限定。本发明在具体实施时,可以采用不同于上述第二判断规则的其他判断规则。
参考图1(c),图1(c)是本发明一实施例提出的节点管理方法的第三阶段示意图。需要说明的是,为简化附图,凡是每个节点均需要参与的步骤,在图1(c)中仅示意性地示出了一个或几个节点参与该步骤,而没有完整地示出所有节点均参与该步骤。
如前所述,以及如图1(c)所示,每个专属区块链网络的每个节点同步公共区块链网络生成的公共区块。例如图1(c)中,专属区块链网络pn_01的各节点持续地同步公共区块。同样地,专属区块链网络pn_02的各节点也持续地同步公共区块。
如图1(c)所示,当专属区块链网络pn_01的每个节点从同步到的公共区块中读取到判断结果和节点加入交易tx3后,节点从节点加入交易tx3中读取网络id,并判断该网络id是否等于专属区块链网络pn_01的网络id。如果等于,则说明新节点准备加入的专属区块链网络是专属区块链网络pn_01,因此节点需要继续执行后续的节点加入流程。如果不等于,则说明新节点准备加入的专属区块链网络不是专属区块链网络pn_01,因此节点不需要执行后续的节点加入流程。
由于节点加入交易tx3中的网络id等于专属区块链网络pn_01的网络id,因此专属区块链网络pn_01的每个节点需要继续执行下述流程。
而对于专属区块链网络pn_02而言,由于节点加入交易tx3中的网络id不等于专属区块链网络pn_02的网络id,因此专属区块链网络pn_02的每个节点不需要继续执行下述流程。
如图1(c)所示,专属区块链网络pn_01的每个节点在确定节点加入交易tx3的网络id等于专属区块链网络pn_01的网络id之后,专属区块链网络pn_01的每个节点识别公共区块中的判断结果,如果该判断结果表征:公共区块链网络确定专属区块链网络pn_01同意新节点加入,则专属区块链网络pn_01的节点对节点加入交易tx3实施预执行操作,得到预执行结果。
此外,如果该判断结果表征:公共区块链网络确定专属区块链网络pn_01不同意新节点加入,则专属区块链网络pn_01的节点不需要继续执行后续的节点加入流程,从而终止节点加入流程。
本发明中,对节点加入交易tx3实施预执行操作,具体是指:执行节点加入交易tx3,但是得到的执行结果不会被保存至账本数据库中。换言之,虽然执行节点加入交易tx3,但是得到的执行结果不会被上链保存。
具体实现时,专属区块链网络pn_01的每个节点从节点加入交易tx3中读取组织id,并以该组织id为索引,从节点组织表中查询该组织id对应的组织信息。然后从节点加入交易tx3中读取节点id,并以该节点id为索引,从查询到的组织信息中进一步查询该节点id对应的预注册节点信息。接着再从查询到的预注册节点信息中,获取未占用公钥。最后利用获取的未占用公钥,对节点加入交易tx3中的签名数据进行验签,得到验签结果。该验签结果可以作为预执行结果。
此外,如果以节点加入交易tx3中的组织id为索引,未能从节点组织表中查询到该组织id对应的组织信息,则确定验签失败,并将验签失败的结果作为预执行结果。
此外,如果以节点加入交易tx3中的组织id为索引,从节点组织表中查询到该组织id对应的组织信息,但是以节点加入交易tx3中的节点id为索引,未能从查询到的组织信息中进一步查询到该节点id对应的预注册节点信息,则确定验签失败,并将验签失败的结果作为预执行结果。
沿用上述示例,由于节点加入交易tx3中的组织id为a,因此从节点组织表中查询到节点组织a条目下的组织信息。又由于节点加入交易tx3中的节点id为a23,因此从查询到的组织信息中进一步查询节点a23对应的预注册节点信息。接着从查询到的预注册节点信息中获取未占用公钥。最后利用获取的未占用公钥,对节点加入交易tx3中的签名数据9ctbeldjciabxngyv…zntyqepsqvrqrkkn进行验签,得到验签结果,并将该验签结果作为预执行结果。
需要说明的是,所述未占用公钥是指:预注册节点信息中的公钥。为便于理解,如表2所示,节点a1的节点信息中包含网络id,且节点状态为已启用,因此节点a1的节点信息中的公钥,并不是未占用公钥。同样地,节点a22的节点信息中包含网络id,且节点状态为已启用,因此节点a22的节点信息中的公钥,也并不是未占用公钥。而节点a23的节点信息中网络id为空,且节点状态为未启用,因此节点a23的节点信息中的公钥,是一个未占用公钥。
如图1(c)所示,专属区块链网络pn_01的每个节点将预执行结果提交给专属区块链网络pn_01的主节点。主节点接收到各节点的预执行结果后,对节点加入交易tx3进行改造,获得改造后的节点加入交易tx3,以下将改造后的节点加入交易tx3简称为“节点加入交易tx4”。
示例地,节点加入交易tx4的交易结构如表5所示。
表5节点加入交易tx4的交易结构表
通过与表4对比可知,节点加入交易tx4中进一步添加了专属区块链网络pn_01各节点的预执行结果。节点加入交易tx4的交易id不同于节点加入交易tx3的交易id,但是等于节点加入交易tx2的交易id。
如图1(c)所示,专属区块链网络pn_01的主节点将节点加入交易tx4提交给公共区块链网络。
如图1(c)所示,公共区块链网络的任一节点(例如节点1)接收到节点加入交易tx4后,可以将节点加入交易tx4提交给公共区块链网络的主节点。主节点响应于节点加入交易tx4,生成一个交易包,该交易包中包含节点加入交易tx4。主节点将该交易包分发给公共区块链网络的每个节点。
如图1(c)所示,公共区块链网络的每个节点接收到交易包后,从交易包中读取出节点加入交易tx4,并执行节点加入交易tx4,从而生成新的公共区块。
其中,公共区块链网络的节点在执行节点加入交易tx4时,具体地:
1、从节点加入交易tx4中读取预执行结果,并根据读取的预执行结果和预设的第三判断规则,判断专属区块链网络pn_01是否成功预执行了节点加入交易tx3。示例地,例如第三判断规则具体是:如果全部预执行结果中,表征验签通过的预执行结果的数量超过预设比例,则确定专属区块链网络pn_01成功预执行了节点加入交易tx3。
2、如果确定专属区块链网络pn_01成功预执行了节点加入交易tx3,则从节点加入交易tx4中读取组织id,并以该组织id为索引,从节点组织表中查询该组织id对应的组织信息。然后从节点加入交易tx4中读取节点id,并以该节点id为索引,从查询到的组织信息中进一步查询该节点id对应的预注册节点信息。接着再从查询到的预注册节点信息中,获取未占用公钥。最后利用获取的未占用公钥,对节点加入交易tx4中的签名数据进行验签。
3、如果验签通过,则确定新节点合法,从而确认新节点可以加入专属区块链网络pn_01。如此,将节点加入交易中的网络id记录至上述组织id对应的组织信息(也即上述节点组织a的组织信息)中。具体地,将网络id记录至节点a23对应的预注册节点信息中,并将该预注册节点信息中的节点状态更改为已启用,从而更新节点本地的节点组织表。此外,还将更新标识和节点加入交易tx4作为区块数据,并记录至新生成的公共区块中。其中,更新标识用于表征公共区块链网络的节点成功更新了节点组织表,更新标识形如“yes”。
4、如果验签未通过,则确定新节点不合法,从而确认新节点不可以加入专属区块链网络pn_01。如此,将更新标识和节点加入交易tx4作为区块数据,并记录至新生成的公共区块中。其中,更新标识用于表征公共区块链网络的节点没有更新节点组织表,更新标识形如“no”。
5、如果以节点加入交易tx4中的组织id为索引,未能从节点组织表中查询到该组织id对应的组织信息,则确定验签失败,从而确定新节点不合法,进而确认新节点不可以加入专属区块链网络pn_01。如此,将更新标识和节点加入交易tx4作为区块数据,并记录至新生成的公共区块中。其中,更新标识用于表征公共区块链网络的节点没有更新节点组织表,更新标识形如“no”。
6、如果以节点加入交易tx4中的组织id为索引,从节点组织表中查询到该组织id对应的组织信息,但是以节点加入交易tx4中的节点id为索引,未能从查询到的组织信息中进一步查询到该节点id对应的预注册节点信息,则确定验签失败,从而确定新节点不合法,进而确认新节点不可以加入专属区块链网络pn_01。如此,将更新标识和节点加入交易tx4作为区块数据,并记录至新生成的公共区块中。其中,更新标识用于表征公共区块链网络的节点没有更新节点组织表,更新标识形如“no”。
参考图1(d),图1(d)是本发明一实施例提出的节点管理方法的第四阶段示意图。需要说明的是,为简化附图,凡是每个节点均需要参与的步骤,在图1(d)中仅示意性地示出了一个或几个节点参与该步骤,而没有完整地示出所有节点均参与该步骤。
如前所述,以及如图1(d)所示,每个专属区块链网络的每个节点同步公共区块链网络生成的公共区块。例如图1(d)中,专属区块链网络pn_01的各节点持续地同步公共区块。同样地,专属区块链网络pn_02的各节点也持续地同步公共区块。
如图1(d)所示,当专属区块链网络pn_01的每个节点从同步到的公共区块中读取到更新标识和节点加入交易tx4后,节点识别该更新标识。如果该更新标识表征公共区块链网络成功更新了节点组织表,则说明公共区块链网络已经承认并见证了新节点的加入,因此节点需要继续执行后续的节点加入流程。如果该更新标识表征公共区块链网络没有更新节点组织表,则说明公共区块链网络不承认也未见证新节点的加入,因此节点不需要执行后续的节点加入流程。
如图1(d)所示,当专属区块链网络pn_01的节点需要继续执行后续的节点加入流程时,从节点加入交易tx4中读取组织id,并以该组织id为索引,从节点组织表中查询该组织id对应的组织信息。然后从节点加入交易tx4中读取节点id,并以该节点id为索引,从查询到的组织信息中进一步查询该节点id对应的预注册节点信息。接着再从查询到的预注册节点信息中,获取未占用公钥。最后利用获取的未占用公钥,对节点加入交易tx4中的签名数据进行验签,得到验签结果。
在验签通过的情况下,将节点加入交易中的网络id记录至上述组织id对应的组织信息(也即上述节点组织a的组织信息)中。具体地,将网络id记录至节点a23对应的预注册节点信息中,并将该预注册节点信息中的节点状态更改为已启用,从而更新节点本地的节点组织表。
如图1(d)所示,同样地,对于专属区块链网络pn_02的节点,也会将节点加入交易中的网络id记录至上述组织id对应的组织信息(也即上述节点组织a的组织信息)中。具体地,将网络id记录至节点a23对应的预注册节点信息中,并将该预注册节点信息中的节点状态更改为已启用,从而更新节点本地的节点组织表。
可选地,在一些具体实施方式中,每个专属区块链网络的每个节点还维护有局部节点表。一个节点维护的局部节点表用于记录:该节点所属的专属区块链网络所包含的全部节点各自的节点信息。示例地,节点信息包括但不限于:节点id、节点公钥等。
每个专属区块链网络的每个节点还会从公共区块中读取网络id,并判断其自身所属的专属区块链网络的网络id是否等于该网络id。为简化附图,图1(d)中未示出该过程。
若是,则说明节点所属的专属区块链网络,正是新节点准备加入的专属区块链网络。在此情况下,节点将新节点的节点信息添加至其维护的局部节点表,从而承认新节点可加入该专属区块链网络。节点后续在执行链内任务时,可以通过查询其运维的局部节点表,从而确认新节点的身份。
若否,则说明节点所属的专属区块链网络,不是新节点准备加入的专属区块链网络。在此情况下,节点不会将新节点的节点信息添加至其维护的局部节点表。
参考图2,图2是本发明一实施例提出的节点管理方法中节点组织删除阶段的示意图。需要说明的是,为简化附图,凡是每个节点均需要参与的步骤,在图2中仅示意性地示出了一个或几个节点参与该步骤,而没有完整地示出所有节点均参与该步骤。
如图2所示,当需要删除某一节点组织时(例如确定某一节点组织存在违法操作而需要删除时),公共区块链网络的任一节点(例如节点1)会接收到管理员发送的组织删除交易tx5,组织删除交易tx5中包含:待删除的目标节点组织的组织id。
如图2所示,节点1响应于组织删除交易tx5,根据组织删除交易对应的预设投票规则,将组织删除交易tx5发送给该预设投票规则所约定的若干节点组织内的节点进行投票。其中,参与投票的节点仅限于公共区块链网络内的节点。
为便于理解,示例地,假设公共区块链网络内的多个节点分别属于:节点组织a、节点组织e、节点组织f、节点组织g以及节点组织h。其中,节点组织a包括的多个节点中,除了一部分分布在公共区块链网络内,还有一部分分布在专属区块链网络pn_01和专属区块链网络pn_02。
又假设预设投票规则所约定的参与投票的节点组织包括:节点组织a、节点组织f以及节点组织g。则节点1仅将组织删除交易tx5发送给以下节点进行投票:属于节点组织a且位于公共区块链网络内的节点、属于节点组织f且位于公共区块链网络内的节点、以及属于节点组织g且位于公共区块链网络内的节点。
如图2所示,节点1接收各节点返回的投票数据,每个节点的投票数据用于表征:该指定节点是否同意删除目标节点组织。节点1将各节点的投票数据填充至组织删除交易tx5中,并将填充了投票数据的织删除交易tx5提交给公共区块链网络的主节点。
如图2所示,公共区块链网络的主节点在接收到组织删除交易tx5后,将组织删除交易tx5与同时段接收的其他交易进行排序,从而生成交易包,该交易包中包括多个具有顺序关系的交易。主节点将交易包分发给公共区块链网络的每个节点。
如图2所示,公共区块链网络的每个节点接收到交易包后,从交易包中读取出交易,并按照各个交易的顺序关系依次执行各个交易。其中,当节点执行到组织删除交易tx5时,从组织删除交易tx5中读取出各个节点的投票数据,并根据各个节点的投票数据和预设的第四判断规则,判断各个节点组织是否同意删除目标节点组织,进而确定是否删除目标节点组织。
为便于理解,示例地,例如第四判断规则为:如果一个节点组织的全部投票数据中,表征同意删除目标节点组织的票数达到第一预设比例(例如60%),则确定该节点组织同意删除目标节点组织。如果参与投票的全部节点组织中,同意删除目标节点组织的节点组织数量达到第二预设比例(例如50%),则确定删除该目标节点组织。
本发明中,通过以节点组织为单位进行投票,相当于将一个节点组织内各节点的全部投票汇集为代表该节点组织的一票,因此可以消除因各节点组织的节点数量不同而导致的投票影响力不同,防止少数节点组织因节点数量过多而任意控制目标节点组织的删除与否,从而有利于提高整个网络系统的公平性和安全性。
如图2所示,如果公共区块链网络的节点通过上述判断,确定需要删除目标节点组织,则节点从组织删除交易tx5中读取组织id,并将节点组织表中相应组织id条目下的组织信息删除。
为便于理解,示例地,假设组织删除交易tx5中的组织id为a。换言之,节点组织a是需要被删除的目标节点组织。节点在删除节点组织a的组织信息后,更新后的节点组织表如表6所示。
表6节点组织表
与上述表1和表2对比可知,更新后的节点组织表中删除了节点组织a的组织信息。
如图2所示,公共区块链网络的节点将组织删除交易tx5和交易执行成功标识“yes”作为区块数据,从而生成新的公共区块。
如图2所示,每个专属区块链网络的每个节点同步公共区块链网络生成的公共区块。当专属区块链网络的节点从同步到的公共区块中读取到组织删除交易tx5,并读取到执行成功标识“yes”时,专属区块链网络的节点响应于组织删除交易tx5,从组织删除交易tx5中读取组织id,并从节点本地维护的节点组织表中,删除该组织id对应的组织信息。
通过实施本发明,可以达到以下有益效果:
本发明中,公共区块链网络对各专属区块链网络的节点具有集中管控能力,当新节点准备加入任一专属区块链网络时,公共区块链网络可以对新节点加入这类事件进行管控,从而有利于防止非法新节点加入专属区块链网络,进而确保网络系统安全性不受影响。
此外,本发明引入了节点组织的概念,公共区块链网络的节点中存储有节点组织表,节点组织表中记录有每个节点组织的组织信息。当新节点准备加入某一专属区块链网络时,公共区块链网络的节点会获得节点加入交易,然后根据节点加入交易包含的组织id,从节点组织表中查询该组织id对应的组织信息,并根据查询到的组织信息,验证新节点的合法性,接着在确定新节点合法的情况下,才确认新节点可以加入专属区块链网络。可见本发明中,可以从节点组织层面,对新节点的合法性进行验证,在确定新节点合法的情况下,才允许新节点加入。如此,可以防止非法新节点加入专属区块链网络,减少非法新节点的作恶机会,从而确保网络安全性不受影响。
此外本发明中,公共区块链网络会获得专属区块链网络的投票数据,并根据投票数据,判断专属区块链网络是否同意新节点加入,以及将判断结果作为区块数据记录至区块链。如此,公共区块链网络对新节点能否加入这一事件进行了见证。此外,专属区块链网络的节点从同步到的公共区块中读取到判断结果后,仅在判断结果表征“公共区块链网络确定专属区块链网络同意新节点加入”的情况下,才继续执行后续的节点加入流程。如此,可以防止以下情况发生:在整个专属区块链网络不同意新节点加入时,专属区块链网络内的少数节点继续执行节点加入流程。
此外本发明中,在专属区块链网络成功预执行节点加入交易的情况下,公共区块链网络才执行节点加入交易。专属区块链网络在获得公共区块链网络对节点加入交易的执行结果后,才继续执行后续的节点加入流程。如此,可以有效避免以下情况的发生:专属区块链网络成功执行节点加入交易(也即承认新节点的加入),而公共区块链网络未成功执行节点加入交易(也即不承认新节点的加入),其他专属区块链网络获得公共区块链网络的执行失败的执行结果后,不对节点组织表进行更新(也即不承认新节点的加入),导致各区块链网络在新节点加入这一事件上未达成共识。
以上,本发明通过较佳实施例,提出了节点管理方法。以下,本发明通过另一些实施例,提出另一些节点管理方法。需要说明的是,以下实施例可与以上实施例相互参照。还需要说明的是,以下实施例提出的节点管理方法在实施期间,并不一定依赖于上述附图所示的网络系统。
参考图3,图3是本发明一实施例提出的节点管理方法的流程图,该节点管理方法应用于网络系统中的公共区块链网络中的任一节点,该节点维护有节点组织表,该节点组织表用于记录每个节点组织的组织信息。此外,所述网络系统中还包括多个专属区块链网络。
如图3所示,该节点管理方法包括以下步骤:
步骤s31:获得节点加入交易,所述节点加入交易中包含:准备加入目标专属区块链网络的新节点所属的节点组织的组织id,所述目标专属区块链网络是所述多个专属区块链网络中的任一个。
为便于理解,假设新节点a23属于节点组织a,则节点加入交易中包含节点组织a的组织id。
可选地,在一些具体实施方式中,参见前述较佳实施例,节点加入交易是目标专属区块链网络的主节点提交给公共区块链网络的,公共区块链网络的主节点为节点加入交易生成交易包,并将该交易包分发给公共区块链网络的每个节点。如此,公共区块链网络的每个节点获得节点加入交易。为了与前述较佳实施例对应,需要说明的是,此处所述的节点加入交易,相当于前述较佳实施例中的节点加入交易tx4。
可选地,在另一些具体实施方式中,新节点可以将节点加入交易直接发送给公共区块链网络的节点,该节点再将节点加入交易广播给公共区块链网络中的其他节点。如此,公共区块链网络的每个节点获得了节点加入交易。
需要说明的是,除了可以通过上述具体实施方式获得节点加入交易以外,本领域技术人员也可以采用其他方式,使得公共区块链网络的节点获得节点加入交易,所述其他方式也应包含在本发明的保护范围内。
步骤s32:根据所述节点加入交易包含的组织id,从所述节点组织表中查询该组织id对应的组织信息,并根据查询到的组织信息,验证所述新节点的合法性。
可选地,在一些具体实施方式中,节点加入交易中还包含签名数据和新节点的节点id,该签名数据是利用新节点的私钥对交易数据进行签名后得到的数据。为了验证新节点的合法性,参考前述较佳实施例,可以执行以下子步骤:
子步骤s32-1:从查询到的组织信息中读取预先注册的未占用公钥;
子步骤s32-2:利用读取到的未占用公钥,对所述节点加入交易中的签名数据进行验签;
子步骤s32-3:在验签通过的情况下,确定所述新节点合法;
子步骤s32-4:在验签未通过的情况下,确定所述新节点不合法。
其中,对于未占用公钥的解释说明,可参见前述较佳实施例。
其中,为了从查询到的组织信息中读取预先注册的未占用公钥,可以以节点加入交易中包含的节点id为索引,从查询到的组织信息中查询该节点id对应的预注册节点信息,并从查询到的预注册节点信息中读取未占用公钥。
此外,在以节点加入交易中包含的节点id为索引,未能从查询到的组织信息中查询到该节点id对应的预注册节点信息的情况下,确定新节点不合法。
此外,在以节点加入交易中包含的组织id为索引,未能从节点组织表中查询到该组织id对应的组织信息的情况下,也确定新节点不合法。
可见上述具体实施方式中,为了能加入新节点,节点组织表中需要具有预注册节点信息,并且该预注册节点信息中需要包含新节点的公钥,否则新节点将被确认为非法。如此,能够防止作恶节点随意加入任意的节点组织和专属区块链网络,从而进一步提高网络系统的安全性。
需要说明的是,为了预先在节点组织表中添加预注册节点信息,除了可以通过执行上述图1(a)中所示的步骤以外,还可以通过实施其他技术方案。例如,在构建节点组织表时,就为每个节点组织预留了多个预注册节点信息。
可选地,在一些具体实施方式中,为了验证新节点的合法性,也可以执行以下子步骤:
子步骤s32-a:在查询到上述组织id对应的组织信息后,统计该组织信息中包含的节点数量;
子步骤s32-b:如果统计到的节点数量未达到预设阈值(例如50个),则确定新节点合法;
子步骤s32-c:如果统计到的节点数量已经达到预设阈值,则确定新节点不合法。
步骤s33:在所述新节点合法的情况下,确认所述新节点可以加入所述目标专属区块链网络。
通过执行上述步骤s31至步骤s33,公共区块链网络对各专属区块链网络的节点具有集中管控能力,当新节点准备加入任一专属区块链网络时,公共区块链网络可以对新节点加入这类事件进行管控,从而有利于防止非法新节点加入专属区块链网络,进而确保网络系统安全性不受影响。
此外,本发明引入了节点组织的概念,公共区块链网络的节点中存储有节点组织表,节点组织表中记录有每个节点组织的组织信息。当新节点准备加入某一专属区块链网络时,公共区块链网络的节点会获得节点加入交易,然后根据节点加入交易包含的组织id,从节点组织表中查询该组织id对应的组织信息,并根据查询到的组织信息,验证新节点的合法性,接着在确定新节点合法的情况下,才确认新节点可以加入专属区块链网络。可见本发明中,可以从节点组织层面,对新节点的合法性进行验证,在确定新节点合法的情况下,才允许新节点加入。如此,可以防止非法新节点加入专属区块链网络,减少非法新节点的作恶机会,从而确保网络安全性不受影响。
可选地,在一些具体实施方式中,参考前述较佳实施例,一个节点组织中包括一个或多个节点;一个节点组织包括的多个节点分布在同一个专属区块链网络中,或者分布在多个专属区块链网络中,或者分布在专属区块链网络和公共区块链网络中。
可选地,在一些具体实施方式中,参考前述较佳实施例,所述节点加入交易中还包含所述目标专属区块链网络的网络id。在确认新节点可以加入目标专属区块链网络之后,还可以执行以下步骤:
将所述节点加入交易中的网络id记录至所述组织id对应的组织信息中,以更新所述节点组织表;并将更新标识和所述节点加入交易作为区块数据,记录至新生成的公共区块中,其中,所述更新标识用于表征所述公共区块链网络成功更新了所述节点组织表;再将所述公共区块发送给各个专属区块链网络,使得各专属区块链网络的各节点在获得该公共区块后,识别该公共区块中包含的更新标识,在确定所述更新标识表征公共区块链网络成功更新了所述节点组织表的情况下,响应于所述节点加入交易,从而将所述节点加入交易中的网络id记录至所述组织id对应的组织信息中,以更新所述节点组织表。
本发明中,由于公共区块中记录的数据是经过公共区块链网络共识后的数据,具有统一性和很高的可信程度。当各个专属区块链网络的各节点同步到公共区块,各节点可以从公共区块中获取到统一的数据。如此,当各节点处理完公共区块中的节点加入交易,各节点对各自维护的节点组织表进行了相同的更新,因此每个节点各自维护的节点组织表具有统一性。
可选地,在一些具体实施方式中,参考前述较佳实施例,所述方法还可以包括以下步骤:获得组织删除交易,所述组织删除交易中包含:待删除的目标节点组织的组织id、以及多个节点组织对所述组织删除交易的投票;根据多个节点组织对所述组织删除交易的投票,确定是否删除所述目标节点组织;若是,则从所述节点组织表中,删除所述目标节点组织的组织id所对应的组织信息。
该具体实施方式中,通过对节点组织实施删除管理,可以进一步提高公共区块链网络对节点组织的管控能力,使得整个网络系统中不符合业务要求或监管要求的节点组织,可以被及时清退。
基于同一发明构思,本发明实施例还提供一种节点管理装置。参考图4,图4是本发明一实施例提出的节点管理装置的示意图,该节点管理装置应用于网络系统中的公共区块链网络中的任一节点,该节点维护有节点组织表,该节点组织表用于记录每个节点组织的组织信息;所述网络系统中还包括多个专属区块链网络。如图4所示,该节点管理装置包括:
交易获得模块41,用于获得节点加入交易,所述节点加入交易中包含:准备加入目标专属区块链网络的新节点所属的节点组织的组织id,所述目标专属区块链网络是所述多个专属区块链网络中的任一个;
合法性验证模块42,用于根据所述节点加入交易包含的组织id,从所述节点组织表中查询该组织id对应的组织信息,并根据查询到的组织信息,验证所述新节点的合法性;
新节点确认模块43,用于在所述新节点合法的情况下,确认所述新节点可以加入所述目标专属区块链网络。
可选地,在一些具体实施方式中,一个节点组织中包括一个或多个节点;一个节点组织包括的多个节点分布在同一个专属区块链网络中,或者分布在多个专属区块链网络中,或者分布在专属区块链网络和公共区块链网络中。
可选地,在一些具体实施方式中,所述节点加入交易中还包含签名数据,所述签名数据是利用所述新节点的私钥对交易数据进行签名后得到的数据;所述合法性验证模块包括:
公钥查询单元,用于从查询到的组织信息中读取预先注册的未占用公钥;
验签单元,用于利用读取到的未占用公钥,对所述节点加入交易中的签名数据进行验签;
合法性确认单元,用于在验签通过的情况下,确定所述新节点合法;在验签未通过的情况下,确定所述新节点不合法。
可选地,在一些具体实施方式中,所述节点加入交易中还包含所述新节点的节点id;所述公钥查询单元具体用于:以所述节点加入交易中包含的节点id为索引,从查询到的组织信息中查询该节点id对应的预注册节点信息,并从查询到的预注册节点信息中读取未占用公钥。
可选地,在一些具体实施方式中,所述合法性确认单元还用于:在以所述节点加入交易中包含的节点id为索引,未能从查询到的组织信息中查询到该节点id对应的预注册节点信息的情况下,确定所述新节点不合法。
可选地,在一些具体实施方式中,所述节点加入交易中还包含所述目标专属区块链网络的网络id;所述装置还包括:
节点组织表更新模块,用于在所述新节点确认模块确认所述新节点可以加入所述目标专属区块链网络之后,将所述节点加入交易中的网络id记录至所述组织id对应的组织信息中,以更新所述节点组织表;
区块生成模块,将更新标识和所述节点加入交易作为区块数据,并记录至新生成的公共区块中,其中,所述更新标识用于表征所述公共区块链网络是否成功更新了所述节点组织表;
区块发送模块,用于将所述公共区块发送给各个专属区块链网络,使得各专属区块链网络的各节点在获得该公共区块后,识别该公共区块中包含的更新标识,在确定所述更新标识表征公共区块链网络成功更新了所述节点组织表的情况下,响应于所述节点加入交易,从而将所述节点加入交易中的网络id记录至所述组织id对应的组织信息中,以更新所述节点组织表。
可选地,在一些具体实施方式中,所述交易获得模块还用于:获得组织删除交易,所述组织删除交易中包含:待删除的目标节点组织的组织id、以及多个节点组织对所述组织删除交易的投票;
所述装置还包括:
投票处理模块,用于根据多个节点组织对所述组织删除交易的投票,确定是否删除所述目标节点组织;
组织信息删除模块,用于在所述投票处理模块确定删除所述目标节点组织的情况下,从所述节点组织表中,删除所述目标节点组织的组织id所对应的组织信息。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
基于同一发明构思,本发明实施例还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信。
所述存储器503,用于存放计算机程序;
所述处理器501,用于在执行存储器503上所存放的程序时,实现如下步骤:
获得节点加入交易,所述节点加入交易中包含:准备加入目标专属区块链网络的新节点所属的节点组织的组织id,所述目标专属区块链网络是所述多个专属区块链网络中的任一个;
根据所述节点加入交易包含的组织id,从所述节点组织表中查询该组织id对应的组织信息,并根据查询到的组织信息,验证所述新节点的合法性;
在所述新节点合法的情况下,确认所述新节点可以加入所述目标专属区块链网络。
或者,处理器501用于在执行存储器503上所存放的程序时,实现本发明以上其他方法实施例所提供的节点管理方法步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的节点管理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
1.一种节点管理方法,其特征在于,应用于网络系统中的公共区块链网络中的任一节点,该节点维护有节点组织表,该节点组织表用于记录每个节点组织的组织信息;所述网络系统中还包括多个专属区块链网络;所述方法包括:
获得节点加入交易,所述节点加入交易中包含:准备加入目标专属区块链网络的新节点所属的节点组织的组织id,所述目标专属区块链网络是所述多个专属区块链网络中的任一个;
根据所述节点加入交易包含的组织id,从所述节点组织表中查询该组织id对应的组织信息,并根据查询到的组织信息,验证所述新节点的合法性;
在所述新节点合法的情况下,确认所述新节点可以加入所述目标专属区块链网络。
2.根据权利要求1所述的方法,其特征在于,一个节点组织中包括一个或多个节点;一个节点组织包括的多个节点分布在同一个专属区块链网络中,或者分布在多个专属区块链网络中,或者分布在专属区块链网络和公共区块链网络中。
3.根据权利要求1所述的方法,其特征在于,所述节点加入交易中还包含签名数据,所述签名数据是利用所述新节点的私钥对交易数据进行签名后得到的数据;所述根据查询到的组织信息,验证所述新节点的合法性,包括:
从查询到的组织信息中读取预先注册的未占用公钥;
利用读取到的未占用公钥,对所述节点加入交易中的签名数据进行验签;
在验签通过的情况下,确定所述新节点合法;
在验签未通过的情况下,确定所述新节点不合法。
4.根据权利要求3所述的方法,其特征在于,所述节点加入交易中还包含所述新节点的节点id;所述从查询到的组织信息中读取预先注册的未占用公钥,包括:
以所述节点加入交易中包含的节点id为索引,从查询到的组织信息中查询该节点id对应的预注册节点信息,并从查询到的预注册节点信息中读取未占用公钥。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在以所述节点加入交易中包含的节点id为索引,未能从查询到的组织信息中查询到该节点id对应的预注册节点信息的情况下,确定所述新节点不合法。
6.根据权利要求1所述的方法,其特征在于,所述节点加入交易中还包含所述目标专属区块链网络的网络id;在确认所述新节点可以加入所述目标专属区块链网络之后,所述方法还包括:
将所述节点加入交易中的网络id记录至所述组织id对应的组织信息中,以更新所述节点组织表;
将更新标识和所述节点加入交易作为区块数据,并记录至新生成的公共区块中,其中,所述更新标识用于表征所述公共区块链网络成功更新了所述节点组织表;
将所述公共区块发送给各个专属区块链网络,使得各专属区块链网络的各节点在获得该公共区块后,识别该公共区块中包含的更新标识,在确定所述更新标识表征公共区块链网络成功更新了所述节点组织表的情况下,响应于所述节点加入交易,从而将所述节点加入交易中的网络id记录至所述组织id对应的组织信息中,以更新所述节点组织表。
7.根据权利要求1至6任一所述的方法,其特征在于,所述方法还包括:
获得组织删除交易,所述组织删除交易中包含:待删除的目标节点组织的组织id、以及多个节点组织对所述组织删除交易的投票;
根据多个节点组织对所述组织删除交易的投票,确定是否删除所述目标节点组织;
若是,则从所述节点组织表中,删除所述目标节点组织的组织id所对应的组织信息。
8.一种节点管理装置,其特征在于,应用于网络系统中的公共区块链网络中的任一节点,该节点维护有节点组织表,该节点组织表用于记录每个节点组织的组织信息;所述网络系统中还包括多个专属区块链网络;所述装置包括:
交易获得模块,用于获得节点加入交易,所述节点加入交易中包含:准备加入目标专属区块链网络的新节点所属的节点组织的组织id,所述目标专属区块链网络是所述多个专属区块链网络中的任一个;
合法性验证模块,用于根据所述节点加入交易包含的组织id,从所述节点组织表中查询该组织id对应的组织信息,并根据查询到的组织信息,验证所述新节点的合法性;
新节点确认模块,用于在所述新节点合法的情况下,确认所述新节点可以加入所述目标专属区块链网络。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于在执行存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时,实现权利要求1-7任一所述的方法步骤。
技术总结