同步节点信息列表的方法转让专利
申请号 : CN202110611551.1
文献号 : CN113259120B
文献日 : 2021-09-24
发明人 : 陶友贤 , 王江
申请人 : 支付宝(杭州)信息技术有限公司
摘要 :
权利要求 :
1.一种同步节点信息列表的方法,用于实现多级区块链系统中第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表,节点信息至少包括节点标识;所述方法应用于第一区块链网络,所述方法包括:
主节点获取所述第二区块链网络的节点信息列表;
每个非主节点获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息;将构造的列表指定消息发送给所述主节点;
所述主节点根据获取的节点信息列表与接收到的各列表指定消息,判断是否存在N个以上的节点获取到一致的节点信息列表,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值;若是,则构造包含所述一致的节点信息列表的列表同步交易并广播;
每个节点通过执行列表同步交易的方式,同步所述一致的节点信息列表。
2.如权利要求1所述方法,所述第一区块链网络的节点与所述第二区块链网络进行交互时,执行的步骤包括:基于本地的节点信息列表,查询所述第二区块链网络的一个或多个节点的节点标识,并基于查询到的节点标识,构造发往所述第二区块链网络的一个或多个节点的消息。
3.如权利要求1所述方法,所述第一区块链网络的节点与所述第二区块链网络进行交互时,执行的步骤包括:基于本地的节点信息列表,验证与其进行交互的所述第一区块链网络外的节点是否属于所述第二区块链网络。
4.如权利要求1所述方法,所述第二区块链网络由所述系统中所述第二区块链网络的上一级区块链网络所管理;所述管理至少包括:维护所述第二区块链网络的节点信息列表;
所述第一区块链网络的每个节点获取所述第二区块链网络的节点信息列表,包括:所述第一区块链网络的每个节点分别从所述第二区块链网络的上一级区块链网络,获取所述第二区块链网络的节点信息列表。
5.如权利要求4所述方法,所述第一区块链网络的每个节点分别从所述第二区块链网络的上一级区块链网络,获取所述第二区块链网络的节点信息列表,包括:所述第一区块链网络的每个节点从对应节点设备上部署的所述第二区块链网络的上一级区块链网络,获取所述第二区块链网络的节点信息列表。
6.如权利要求4或5所述方法,周期性执行所述方法。
7.如权利要求1所述方法,还包括:若判断结果为否,则触发所述第一区块链网络中各节点重新获取所述第二区块链网络的节点信息列表。
8.如权利要求1所述方法,若所述第一区块链网络采用有主共识协议对交易进行共识,则所述主节点基于该有主共识协议确定。
9.如权利要求8所述方法,所述第一区块链网络的各非共识节点若确定所述主节点超过指定时长未响应,则基于有主共识协议,更换主节点。
10.如权利要求1所述方法,每个节点执行列表同步交易,包括:每个节点调用智能合约执行列表同步交易,并触发携带所述一致的节点信息列表的通知;
每个节点同步所述一致的节点信息列表,包括:每个节点根据监听到的通知,同步所述一致的节点信息列表。
11.如权利要求1所述方法,每个非主节点构造的列表指定消息包含获取的节点信息列表,和/或,包含获取的节点信息列表的哈希值。
12.如权利要求1所述方法,每个非主节点构造的列表指定消息包含该非主节点的节点标识;
所述主节点根据获取的节点信息列表与接收到的各列表指定消息,判断是否存在目标数量以上的节点获取到一致的节点信息列表,包括:所述主节点针对接收到的每个列表指定消息,根据该列表指定消息包含的节点标识,获取相应的节点公钥对该列表指定消息的签名进行验证;
所述主节点根据获取的节点信息列表与通过签名验证的各列表指定消息,判断是否存在目标数量以上的节点获取到一致的节点信息列表。
13.如权利要求12所述方法,所述主节点构造包含所述一致的节点信息列表的列表同步交易,包括:
所述主节点构造列表同步交易,并对构造的列表同步交易进行签名;
其中,构造的列表同步交易包含所述一致的节点信息列表与指定了所述一致的节点信息列表的至少N‑1个列表指定消息的签名。
14.如权利要求13所述方法,每个节点执行列表同步交易,包括:每个节点在确定列表同步交易的签名通过验证,且列表同步交易中包含的签名通过验证的情况下,执行列表同步交易。
15.如权利要求1所述方法,所述第一区块链网络与所述第二区块链网络是由同一上一级区块链网络所管理的区块链子网。
16.一种多级区块链系统,所述系统中第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表,节点信息至少包括节点标识;
所述第一区块链网络的主节点,获取所述第二区块链网络的节点信息列表;根据获取的节点信息列表与接收到的各列表指定消息,判断是否存在N个以上的节点获取到一致的节点信息列表,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值;若是,则构造包含所述一致的节点信息列表的列表同步交易并广播;
所述第一区块链网络的每个非主节点,获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息;将构造的列表指定消息发送给所述主节点;
所述第一区块链网络的每个节点,通过执行列表同步交易的方式,同步所述一致的节点信息列表。
说明书 :
同步节点信息列表的方法
技术领域
背景技术
块链网络中,部分节点有时存在实现小范围交易的需求,以避免其他节点获得这些交易及
其相关数据。
而可以在区块链子网上实现上述的小范围交易。
信息列表与另一个区块链网络的节点进行交互。然而,如何使得区块链网络中各节点尽可
能获取到一致的另一个区块链网络的节点信息列表,是亟待解决的技术问题。
发明内容
链网络进行交互时所采用的、所述第二区块链网络的节点信息列表;所述方法应用于第一
区块链网络,所述方法包括:
的可信节点数量最小值;若是,则构造包含所述一致的节点信息列表的列表同步交易并广
播;
的、所述第二区块链网络的节点信息列表;
致的节点信息列表,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值;
若是,则构造包含所述一致的节点信息列表的列表同步交易并广播;
述主节点;
二区块链网络的节点信息列表。为了实现第一区块链网络的各节点对于第二区块链网络的
节点信息列表的同步,在第一区块链网络中指定一个主节点,第一区块链网络中除主节点
以外的其他节点都是非主节点,每个非主节点构造用于指定自己获取的节点信息列表的列
表指定消息,将列表指定消息发送给主节点。主节点如果确定存在N(对于第一区块链网络
而言,共识协议所支持的可信节点数量最小值)个以上的节点(也可以包括主节点自己)获
取到一致的节点信息列表,那么就可以认定这个一致的节点信息列表是准确的,就可以向
第一区块链网络中广播包含这个一致的节点信息列表的列表同步交易。每个节点通过执行
列表同步交易的方式,完成节点信息列表的同步。
的,从而避免了由于各节点所采用的节点信息列表不一致所带来的安全风险。
附图说明
具体实施方式
中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相
反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相
一致的装置和方法的例子。
多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进
行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行
描述。
+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比
特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新
区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私
有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单
来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更
适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分
去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加
入网络并组成利益相关联盟,共同维护区块链运行。
拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,这意味着可以
通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实
际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”)。部署在区块链上
的智能合约可以是字节码的形式。
约的地址,交易的data字段保存的可以是字节码,交易的to字段为空。节点间通过共识机制
达成一致后,这个合约成功创建,并且可以在后续过程中被调用。合约创建后,区块链上出
现一个与该智能合约对应的合约账户,并拥有一个特定的地址,合约代码将保存在该合约
账户中。智能合约的行为由合约代码控制。换句话说,智能合约使得区块链上产生包含合约
代码和账户存储(Storage)的虚拟账户。
是交易发起方(即Bob)的账户的地址,to字段中的“0x6f8ae93…”代表了被调用的智能合约
的地址,value字段在以太坊中是以太币的值,交易的data字段保存的调用智能合约的方法
和参数。调用智能合约后,balance的值可能改变。后续,某个客户端可以通过某一区块链节
点(例如图2中的节点6)查看balance的当前值。智能合约以规定的方式在区块链网络中每
个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当交易完成后,区块链上
就保存了无法篡改、不会丢失的交易凭证。
是发起一笔指向智能合约地址的交易,智能合约代码分布式的运行在以太坊网络中每个节
点的虚拟机中。
结构、参数、属性和方法。此外,具有系统管理员权限的账户可以创建系统级的合约,或者修
改系统级的合约(简称为系统合约)。另外除了以太坊中的EVM外,不同的区块链网络还可能
采用各种的虚拟机,这里并不限定。
获得合约执行结果的相关信息。合约执行结果可以表现为收据中的事件(event)。消息机制
可以通过收据中的事件实现消息传递,以触发区块链节点或部署该区块链节点的节点设备
执行相应的处理。事件的结构譬如可以为:
事件的topic,从而在监听到预定义的topic的情况下,执行预设处理,或者从相应事件的
data字段读取相关内容,以及可以基于读取的内容执行预设处理。
点产生的事件进行监听,而区块链节点只需要正常生成收据即可。除了上述的事件机制之
外,还可以通过其他方式实现交易信息的透出。例如,可以通过在区块链节点运行的区块链
平台代码中嵌入监听代码,使得该监听代码可以监听区块链交易的交易内容、智能合约的
合约状态、合约产生的收据等其中的一种或多种数据,并将监听到的数据发送至预定义的
监听方。由于监听代码部署于区块链平台代码中,而非监听方的客户端处,因而相比于事件
机制而言,这种基于监听代码的实现方式相对更加的主动。其中,上述的监听代码可以由区
块链平台的开发人员在开发过程中加入区块链平台代码,也可以由监听方基于自身的需求
而嵌入,本说明书并不对此进行限制。
的、不可篡改数据记录的去中心化诚实可信系统,需要在尽可能短的时间内做到分布式数
据记录的安全、明确及不可逆。不同类型的区块链网络中,为了在各个记录账本的节点中保
持账本的一致,通常采用共识算法来保证,即前述提到的共识机制。例如,区块链节点之间
可以实现区块粒度的共识机制,比如在节点(例如某个独特的节点)产生一个区块后,如果
产生的这个区块得到其它节点的认可,其它节点记录相同的区块。再例如,区块链节点之间
可以实现交易粒度的共识机制,比如在节点(例如某个独特的节点)获取一笔区块链交易
后,如果这笔区块链交易得到其他节点的认可,认可该区块链交易的各个节点可以分别将
该区块链交易添加至自身维护的最新区块中,并且最终能够确保各个节点产生相同的最新
区块。共识机制是区块链节点就区块信息(或称区块数据)达成全网一致共识的机制,可以
保证最新区块被准确添加至区块链。当前主流的共识机制包括:工作量证明(Proof of
Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,
DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,
HoneyBadgerBFT算法等。
在设备集群中部署若干属于不同区块链网络的节点,通过不同节点参与不同区块链网络中
的交易。
点功能的实例。对于联盟链网络的情况,节点的控制方是联盟成员(机构),而客户端的控制
方是机构对接的用户,因此,这多个节点可以通过节点设备的不同端口(或者同一默认端
口)与客户端进行通信,接收客户端提交的交易。
(即联盟内的节点成员)的节点设备上都部署有该联盟链网络的节点,可以组成一区块链网
络,即所有联盟成员在该区块链网络中分别存在对应的区块链节点,并可以通过对应的区
块链节点获得该区块链网络上发生的所有交易和相关数据。但在一些情况下,可能存在部
分联盟成员希望小范围内完成一些具有保密需求的交易,这些联盟成员既希望这些交易能
够在区块链上存证或借助于区块链技术的其他优势,又能够避免其他联盟成员查看到这些
交易和相关数据。
设备上部署的不同节点属于不同区块链网络。同时,该系统在软件层面具有以区块链主网
为根结点、各个区块链子网分别为其他结点的树形结构。
区块链网络。
(参与初始化系统的成员)与后续成员(系统初始化之后加入的成员)之分。全部初始成员构
建区块链系统,系统中的区块链主网由全部初始成员的节点设备上部署的主网节点组成,
而后续,更多的后续成员可以加入区块链系统,后续成员的节点设备上可以部署主网节点,
从而加入主网,也可以不部署主网节点,仅仅部署一个或多个子网节点。
言,一个区块链子网的节点对应的节点设备上,同时也部署了区块链主网的主网节点。而在
系统中存在初始成员与后续成员之分的实施例中,一个区块链子网的节点对应的节点设备
可能是后续成员的节点设备,这个后续成员的节点设备有可能没有部署主网节点。
个子网)的节点,那么需要这个成员对节点设备进行三次手动部署区块链网络的流程。然
而,对于成员来说,每次需要在自己的节点设备上增加部署一个新区块链网络的节点,就需
要成员重新执行手动部署流程,这比较麻烦。况且,一些成员之间小范围的交易需求往往是
临时的或者具有一定的时效性,使得手动部署的新的区块链子网很快就会由于需求消失而
失去存在的意义,而取消该区块链子网又需要成员对节点设备进行手动操作,更增加了麻
烦。
的成员参与该子网,则根据子网创建交易携带的配置信息,创建一个实例,作为创建的子网
的节点。而每个区块链子网也可以进一步受理子网创建交易并基于部署的合约处理子网创
建交易,触发子网创建事件,该区块链子网中的每个子网节点从该子网节点监听到子网创
建事件之后,如果确定自身对应的节点设备的成员参与该下一级子网,则根据子网创建交
易携带的配置信息,创建一个实例,作为进一步创建的下一级子网的节点。
子网的父结点。在树形结构中,父结点的子结点的区块链子网不一定是父结点创建的,但是
依然可以由父结点管理(即父结点的区块链网络中记录了子结点的区块链子网的网络标识
与地址信息)。
续部分成员的节点设备上的主网节点可以创建新的实例作为下一级的子网节点。部分成员
的节点设备上的某个区块链子网的节点又可以进一步创建新的实例作为更下一级的子网
节点。通过这样的层级式地网络部署方式,可以减少成员手动部署的麻烦。
而是直接从外部加入到系统中的区块链子网,这种区块链子网依然可以加入树形结构中,
成为一个结点,只不过该结点的区块链子网是由其父结点对应的区块链网络所管理(而非
创建)。
论是哪种情况,任一区块链子网的地址信息(即包含的每个节点的地址信息,如IP地址、端
口号)可以只暴露给其父结点的区块链网络,由其父结点的区块链网络中的每个节点进行
记录。如此一来,可以最大限度保证子网隐私,降低网络攻击的风险。
节点实例(节点设备上运行的进程或线程),部署在节点设备上,是软件层面的概念。
员的身份信息。
由此导致的安全性问题。在一些情况下,也可以允许区块链主网的普通用户发起上述组建
区块链子网的交易,以满足普通用户的组网需求,使得普通用户能够在管理员不便于发起
交易的情况下依然能够快捷地组建区块链子网。
望组建一区块链子网:如果nodeA为管理员且仅允许管理员发起组建区块链子网的交易,那
么可由nodeA向subnet0发起上述组建区块链子网的交易;如果nodeE为管理员且仅允许管
理员发起组建区块链子网的交易,那么nodeA nodeD需要向nodeE进行请求,使得nodeE向
~
subnet0发起上述组建区块链子网的交易;如果nodeE为管理员但允许普通用户发起组建区
块链子网的交易,那么nodeA nodeE均可以向subnet0发起上述组建区块链子网的交易。当
~
然,不论是管理员或者普通用户,发起组建区块链子网的交易的区块链节点对应的节点成
员并不一定参与所组建的区块链子网,比如虽然最终由nodeA、nodeB、nodeC 和nodeD分别
对应的节点成员组建区块链子网,但可由nodeE向subnet0发起上述组建区块链子网的交
易,而并不一定由nodeA nodeD来发起该组建区块链子网的交易。
~
subnet1时,可以认为subnet0处于第一层、subnet1处于第二层。一种情况下,本说明书中的
区块链主网可以为底层区块链网络,即区块链主网并非在其他区块链网络的基础上组建的
区块链子网,比如图5中的subnet0可以认为属于底层区块链网络类型的区块链主网。另一
种情况下,本说明书中的区块链主网可以为其他区块链网络的子网,比如可以在图5中
subnet1的基础上进一步组建另一区块链子网,此时可以认为subnet1为该区块链子网对应
的区块链主网,而这并不影响该subnet1同时属于subnet0上创建的区块链子网。可见,区块
链主网与区块链子网实际上是相对概念,同一区块链网络在一些情况下可以为区块链主
网、另一些情况下可以为区块链子网。
二区块链节点。
过程取决于所采用的共识机制,譬如上文所述的任一共识机制,本说明书并不对此进行限
制。
包含参与组建所述区块链子网的节点成员的身份信息,可以指定组建的区块链子网对应于
哪些节点成员。
或多组公私钥对,由区块链节点持有私钥而公钥被公开且唯一对应于该私钥,因而可以通
过公钥来表征相应区块链节点的身份,也可以通过该公钥来表征该区块链节点对应的节点
成员的身份。因此,对于希望参与组建区块链子网的节点成员,可以将这些节点成员在区块
链主网上对应的区块链节点的公钥添加至上述组建区块链子网的交易中,以作为上述节点
成员的身份信息。上述的公私钥对可以用于签名验证的过程。例如,在采用有签名的共识算
法中,譬如subnet1上述的nodeA1采用自身维护的私钥对消息进行签名后,将经过签名的消
息在subnet1中广播,而nodeB1、nodeC1和nodeD1可以用nodeA1的公钥对收到的消息进行签
名验证,以确认自身收到的消息确实来自nodeA1且没有经过篡改。
要由用于部署该第一区块链节点的节点设备生成第二区块链节点,并由第二区块链节点参
与组建区块链子网。第一区块链节点和第二区块链节点对应于同一个节点成员,比如在联
盟链场景下对应于同一联盟链成员,但第一区块链节点属于区块链主网、第二区块链节点
属于区块链子网,使得该节点成员可以分别参与到区块链主网和区块链子网的交易中;并
且,由于区块链主网和区块链子网属于相互独立的两个区块链网络,使得第一区块链节点
生成的区块与第二区块链节点生成的区块分别存入所述节点设备上的不同存储(采用的存
储譬如可以为数据库),实现了第一区块链节点与第二区块链节点分别使用的存储之间的
相互隔离,因而区块链子网所产生的数据仅会在区块链子网中的各个区块链节点之间同
步,使得仅参与了区块链主网的节点成员无法获得区块链子网上产生的数据,实现了区块
链主网与区块链子网之间的数据隔离,满足了部分节点成员(即参与区块链子网的节点成
员)之间的交易需求。
与了区块链主网和区块链子网。由于区块链主网与区块链子网之间相互独立,使得这两个
区块链网络的身份体系也相互独立,因而即便第一区块链节点和第二区块链节点可以采用
完全相同的公钥,仍然应当将两者视为不同的区块链节点。譬如在图5中,subnet0中的
nodeA相当于第一区块链节点,而部署该nodeA的节点设备生成了属于subnet1的nodeA1,该
nodeA1相当于第二区块链节点。可见,由于身份体系相互独立,所以即便第二区块链节点所
采用的公钥区别于第一区块链节点,也不影响本说明书方案的实施。
全一致,此时所有的节点成员都可以获得区块链主网和区块链子网上的数据,但是区块链
主网与区块链子网所产生的数据依然可以相互隔离,比如可以通过在区块链主网上实现一
类业务、在区块链子网上实现另一类业务,从而可以使得这两类业务分别产生的业务数据
之间相互隔离。
性配置等,本说明书并不对此进行限制。网络标识用于唯一表征该区块链子网,因而该区块
链子网的网络标识应当区别于区块链主网和该区块链主网上组建的其他区块链子网。区块
链子网的管理员的身份信息,譬如可以为作为管理员的节点成员的公钥;其中,区块链主网
与区块链子网的管理员可以相同,也可以不同。
代码复用在第二区块链节点上,免去了区块链平台代码的重复部署,极大地提高了区块链
子网的组建效率。那么,如果配置信息中未包含针对区块链平台代码的属性配置,第二区块
链节点可以复用第一区块链节点上采用的属性配置;如果配置信息中包含了针对区块链平
台代码的属性配置,第二区块链节点可以采用该属性配置,使得第二区块链节点所采用的
属性配置不受限于第一区块链节点的属性配置、与第一区块链节点无关。针对区块链平台
代码的属性配置可以包括下述至少之一:代码版本号、是否需要共识、共识算法类型、区块
大小等,本说明书并不对此进行限制。
约,调用的方法可以为组建区块链子网的方法,传入的参数可以包括上述的配置信息。在一
实施例中,该交易可以包含如下信息:
体为该Subnet合约的地址;method字段为调用的方法,譬如在Subnet合约中用于组建区块
链子网的方法可以为AddSubnet(string),而string为AddSubnet()方法中的参数,上述示
例中通过genesis表征该参数的取值,该genesis具体为前述的配置信息。
为例。在交易通过共识后,nodeA nodeE分别执行AddSubnet()方法并传入配置信息,得到
~
相应的执行结果。
topic可以包含预定义的组网事件标识,以区别于其他的事件。譬如在与执行AddSubnet()
方法相关的event中,topic的内容为关键词subnet,且该关键词区别于其他方法所产生
event中的topic。那么,nodeA nodeE或者部署nodeA nodeE的节点设备1 5通过监听生成的
~ ~ ~
收据中各个event所含的topic,可以在监听到包含关键词subnet的topic的情况下,确定监
听到与执行AddSubnet()方法相关的event,即组网事件。例如,收据中的event如下:
定该event与AddSubnet()方法相关,并进而读取该event对应的data字段,该data字段包
含上述的配置信息。以配置信息包括区块链子网的节点成员的公钥为例,data字段的内容
例如可以包括:
网相关的其他信息,这些信息譬如可以维护在上述的Subnet合约中,具体可以对应于该
Subnet合约所含的一个或多个合约状态的取值。那么,可以根据记录的已创建的所有区块
链子网的网络标识,确定上述的subnet1是否已经存在;如果不存在,说明subnet1是当前需
要创建的新区块链子网,如果存在则说明subnet1已经存在。
述的subnet1替换为newsubnet,该newsubnet为预定义的新建网络标识,nodeA nodeE在识
~
别到data字段包含newsubnet时,即可确定包含该newsubnet的event为组网事件,需要创建
新的区块链子网。
监听到所述组网事件且所述组网事件的内容包含第一区块链节点对应的节点成员的身份
信息的情况下,由部署第一区块链节点的节点设备获取所述组网事件包含的配置信息或创
世块。或者,第一区块链节点可以监听生成的收据,并在监听到所述组网事件且所述组网事
件的内容表明第一区块链节点属于所述节点成员的情况下,触发部署第一区块链节点的节
点设备获取所述组网事件包含的所述配置信息或所述创世块。
5上,节点设备1 5可以监听nodeA nodeE分别生成的收据,那么在监听到subnet1是需要新
~ ~
组建的区块链子网的情况下,节点设备1 5会进一步识别data字段中包含的节点成员的身
~
份信息,以确定自身的处理方式。以nodeA和节点设备1为例:如果节点设备1发现data字段
包含nodeA的公钥、IP地址和端口号等身份信息,那么节点设备1在基于上述的消息机制从
data字段获得配置信息的情况下,生成包含该配置信息的创世块,且节点设备1会在本地部
署nodeA1,该nodeA1加载生成的创世块,从而成为subnet1的子网节点;类似地,节点设备2
可以生成nodeB1、节点设备3可以生成nodeC1、节点设备4可以生成nodeD1。以及,节点设备5
会发现data字段包含的身份信息与自身均不匹配,则该节点设备5不会根据data字段中的
配置信息生成创世块,也不会生成subnet1中的区块链节点。
~
下,会进一步识别data字段中包含的节点成员的身份信息,以确定自身的处理方式。比如,
nodeA nodeD会发现在data字段包含自身的公钥、IP地址和端口号等身份信息,假定nodeA
~ ~
nodeD分别部署在节点设备1 4上,以nodeA和节点设备1为例: nodeA会触发节点设备1,使
~
得节点设备1在基于上述的消息机制从data字段获得配置信息的情况下,生成包含该配置
信息的创世块,且节点设备1会在本地部署nodeA1,该nodeA1加载生成的创世块,从而成为
subnet1的子网节点;类似地,nodeB会触发节点设备2生成nodeB1、nodeC会触发节点设备3
生成nodeC1、nodeD会触发节点设备4生成nodeD1。以及,nodeE会发现data字段包含的身份
信息与自身均不匹配,假定nodeE部署在节点设备5上,那么该节点设备5不会根据data字段
中的配置信息生成创世块,也不会生成subnet1中的区块链节点。
~
于nodeA nodeD的身份信息。仍以nodeA和节点设备1为例:节点设备1如果在data字段中发
~
现了nodeA1的身份信息,可以生成创世块、部署nodeA1,并由nodeA1加载该创世块;或者,
nodeA如果在data字段中发现了nodeA1的身份信息,那么nodeA会触发节点设备1生成创世
块、部署nodeA1,并由nodeA1加载该创世块。其他区块链节点或节点设备的处理方式类似,
此处不再一一赘述。
而将创世块包含于data字段中,那么对于上述的nodeA nodeD而言,相应的节点设备1 4可
~ ~
以通过消息机制直接从data字段获得创世块,而无需自行生成,可以提升对nodeA1 nodeD1
~
的部署效率。
快捷地创建出区块链子网。例如,可以预先定义一组网交易类型标识,当交易包含该组网交
易类型标识时,就表明该交易用于组建新的区块链子网,即该交易为组建区块链子网的交
易。区块链平台代码可以包含相关的用于组建区块链子网的处理逻辑,使得运行该区块链
平台代码的第一区块链节点在执行交易时,如果发现该交易中包含上述的组网交易类型标
识,且第一区块链节点对应的节点成员的身份信息被包含于该交易中的配置信息中,可以
基于上述处理逻辑来触发部署第一区块链节点的节点设备生成包含该配置信息的创世块
并启动第二区块链节点,由第二区块链节点加载该创世块,以形成为区块链子网中的区块
链节点。
链平台代码的第一实例而形成。类似地,对于第二区块链节点而言,由节点设备在上述进程
中创建运行区块链平台代码的第二实例而形成。例如,节点设备可以首先在进程中创建第
一实例,以形成区块链主网中的第一区块链节点;而当该节点设备对应的节点成员希望参
与组建区块链子网时,可以在上述进程中创建第二实例,该第二实例区别于上述的第一实
例,并由该第二实例形成区块链子网中的第二区块链节点。当第一实例与第二实例位于同
一进程时,由于不涉及跨进程交互,可以降低对第二区块链节点的部署难度、提高部署效
率。当然,第二实例也可能与第一实例分别处于节点设备上的不同进程中,本说明书并不对
此进行限制;例如,节点设备可以在第一进程中创建第一实例,以形成区块链主网中的第一
区块链节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以启动区别
于第一进程的第二进程,并在该第二进程中创建第二实例,该第二实例区别于上述的第一
实例,进而由该第二实例形成区块链子网中的第二区块链节点。
~ ~
nodeD1,且nodeA与nodeA1、nodeB与nodeB1、nodeC与nodeC1、nodeD与nodeD1分别部署在同
一节点设备上。类似地,还可以在subnet0上组建出subnet2或更多的区块链子网,其中
subnet2包含nodeA2、nodeB2、nodeC2和nodeE2,且nodeA与nodeA1、nodeA2,nodeB与nodeB1、
nodeB2,nodeC与nodeC1、nodeC2,nodeD与nodeD1,nodeE与nodeE2分别部署在同一节点设备
上。以及,可以将subnet1、subnet2等作为新的区块链主网,并在此基础上进一步组建出区
块链子网,其过程与subnet1或subnet2的组建相似,此处不再赘述。
接下来将结合图6,从参与区块链子网的主网节点及其所处的节点设备的角度,对本说明书
的技术方案进行描述。容易理解的是,图6所示的实施例与图4所示的实施例并不存在本质
上的差异,前文针对图4所示实施例的描述,均适用于图6所示的实施例。
的身份信息。
的第二区块链节点。
块,包括:
获取所述组网事件包含的所述配置信息或所述创世块;或者,
含的所述配置信息或所述创世块。
于第一区块链节点的第一实例。
要进行跨网通信。第一区块链网络可以向第二区块链网络发送请求消息,接收第二区块链
网络返回的响应消息。同理,第二区块链网络也可以向第一区块链网络发送请求消息,接收
第一区块链网络返回的响应消息。
区块链网络的节点数量为Q,那么,第一区块链网络中每个节点都需要构造Q个请求消息,分
别发送给第二区块链网络中的每个节点。
网络的各节点之间可以基于共识协议,共识出一个一致的响应消息应用到业务流程合约
中。
信息列表与另一个区块链网络的节点进行交互。
第一区块链网络,系统与第一区块链网络具有交互关系的任一区块链网络都可以是第二区
块链网络。
息。
向第二区块链网络的每个节点发送消息时,在消息中指定该节点的节点标识,以便消息可
以路由到该节点;另一方面,可以基于第二区块链网络的节点信息列表,查询接收到的消息
的发送方是否为第二区块链网络的节点。
的节点标识,并基于查询到的节点标识,构造发往所述第二区块链网络的一个或多个节点
的消息。此外,执行的步骤也可以包括:基于本地的节点信息列表,验证与其进行交互的所
述第一区块链网络外的节点是否属于所述第二区块链网络。
例如,第一区块链网络的节点1采用的第二区块链网络的节点信息列表中包括节点A,第一
区块链网络的其他节点采用的节点信息列表中不包括节点A,事实上,节点A之前已经退出
第二区块链网络,只是因为节点1没有获取到最新的第二区块链网络的节点信息列表,节点
1可能会将仅能发送给第二区块链网络的数据发送给节点A,从而导致数据泄露,危及数据
安全。
网络中除主节点以外的其他节点都是非主节点,每个非主节点构造用于指定自己获取的节
点信息列表的列表指定消息,将列表指定消息发送给主节点。主节点如果确定存在N(对于
第一区块链网络而言,共识协议所支持的可信节点数量最小值)个以上的节点(也可以包括
主节点自己)获取到一致的节点信息列表,那么就可以认定这个一致的节点信息列表是准
确的,就可以向第一区块链网络中广播包含这个一致的节点信息列表的列表同步交易。每
个节点通过执行列表同步交易的方式,完成节点信息列表的同步。
的,从而避免了由于各节点所采用的节点信息列表不一致所带来的安全风险。
的其他节点都可以是非主节点。
因此,为了第一区块链网络中各节点采用的第二区块链网络的节点信息列表尽可能是最新
的,第一区块链网络的各节点可以按照一定的时间计划多次执行图7所示方法。例如,可以
周期性执行图7所示方法。
如RAFT协议)进行交易共识,这种情况下,可以在第一区块链网络进行交易共识时也一并推
进图6所示方法,将共识过程中选举出的主节点作为图7所示方法流程中的主节点。
一区块链网络的各节点各自获取的节点信息列表不一致的可能性。此外,即便第一区块链
网络的各节点各自获取节点信息列表的途径一致,依然有可能出现第一区块链网络的各节
点各自获取的节点信息列表不一致的可能性(例如有的节点获取的节点信息列表在传输过
程中丢失部分数据)。
第一区块链网络的不同节点可能从第二区块链网络的不同节点获取节点信息列表。
就是说,第二区块链网络的上一级区块链网络可以存储第二区块链网络的节点信息列表,
还会根据第二区块链网络中节点的更新情况,更新该节点信息列表。如此,第一区块链网络
的每个节点分别从所述第二区块链网络的上一级区块链网络,获取所述第二区块链网络的
节点信息列表。
获取第二区块链网络的节点信息列表。
如前所述,系统在硬件层面包括若干成员的节点设备,同一成员的节点设备上可以部署不
同区块链网络的节点,使得同一成员可以参与不同的区块链网络。在这些实施例中,第一区
块链网络的每个节点对应的节点设备上,都同时部署了第二区块链网络的上一级区块链网
络的节点。
第二区块链网络,并维护第一区块链网络的节点列表与第二区块链网络的节点信息列表。
不仅第一区块链网络可以从对应节点设备的区块链主网节点获取第二区块链网络的节点
信息列表,第二区块链网络也可以从对应节点设备的区块链主网节点获取第一区块链网络
的节点信息列表。
上一级区块链网络通常是通过执行针对第二区块链网络的节点信息变成交易来更新节点
信息列表的。而第二区块链网络的上一级区块链网络的各节点并不一定同时执行完成节点
信息变更交易,也就是说,第二区块链网络的上一级区块链网络的各节点在同一时间段内
维护的第二区块链网络的节点信息列表不一定是一致的。这意味着,第一区块链网络的各
节点各自从对应节点设备上部署的第二区块链网络的上一级区块链网络的节点获取节点
信息列表,可能会出现获取的节点信息列表不一致的情况。
总第一区块链网络的各节点获取节点信息列表的情况。
自己获取的节点信息列表和/或自己获取的节点信息列表的哈希值。
S710。
的容错节点(可以是作恶或宕机)数量的最大值。又如,倘若该共识协议是RAFT,则N可以是f
+1,第一区块链网络的节点数量为2f+1,f是PBFT协议对应的容错节点(可以是宕机)数量的
最大值。
识,获取相应的节点公钥对该列表指定消息的签名进行验证,然后主节点可以根据获取的
节点信息列表与通过签名验证的各列表指定消息,判断是否存在目标数量以上的节点获取
到一致的节点信息列表。也就是说,未通过签名验证的列表指定消息可以默认为不可信,不
纳入统计。
步。
块链网络中各节点重新获取所述第二区块链网络的节点信息列表,从而触发重新执行图7
所示方法。此外,主节点也可以不再触发重新执行图7所示方法。
一区块链网络的执行,可以存证到第一区块链网络对应的区块链中。第一区块链网络的各
节点可以基于区块链中最新存证的第二区块链网络的节点信息列表,与第二区块链网络进
行交互。
携带所述一致的节点信息列表的通知,该通知可以将链上的信息映射到链外,使得第一区
块链网络的各节点可以每个节点根据监听到的通知,同步所述一致的节点信息列表,即将
一致的节点信息列表写入到链外的本地存储中。
第一区块链网络的各节点使用链外的本地存储中的第二区块链网络的节点信息列表,效率
更高。
时发起列表同步交易;在不存在可信的节点信息列表的情况下,需要及时反馈同步失败结
果或者通知各节点重新获取一次节点信息列表),则可以基于有主共识协议,更换主节点。
也就是说,第一区块链网络的各节点除了可以在基于有主共识协议的交易共识过程中根据
交易共识的需要重新选举主节点,从而影响到图7所示方法中的主节点被更换,也可以根据
图7所示方法推进过程中的需要(比如目前的主节点长时间不响应),更换主节点,从而影响
到交易共识过程中的主节点被更换。
含所述一致的节点信息列表,还可以包含指定了所述一致的节点信息列表的至少N‑1个列
表指定消息的签名。
点可以在确认列表同步交易所要同步的列表得到至少N个节点确认的情况下,才会对列表
同步交易中携带的节点信息列表进行同步。
点信息列表;
致的节点信息列表,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值;
若是,则构造包含所述一致的节点信息列表的列表同步交易并广播;
述主节点;
以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放
器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何
设备的组合。
施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产
品的形式。
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产
生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境
中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块
可以位于包括存储设备在内的本地和远程计算机存储介质中。
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处
理器 (CPU)、输入/输出接口、网络接口和内存。
质的示例。
计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、
动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电
可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器
(CD‑ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、
基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计
算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体
(transitory media),如调制的数据信号和载波。
括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要
素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要
素的过程、方法、商品或者设备中还存在另外的相同要素。
执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺
序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可
以的或者可能是有利的。
中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表
示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出
项目的任何或所有可能组合。
分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第
二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如
果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。