区块链网络间的交易转发方法转让专利
申请号 : CN202110611564.9
文献号 : CN113067772B
文献日 : 2021-07-30
发明人 : 刘燕 , 陶友贤 , 魏长征
申请人 : 支付宝(杭州)信息技术有限公司
摘要 :
权利要求 :
1.一种区块链网络间的交易转发方法,应用于包含多个节点设备的区块链系统;每个节点设备上部署至少一个区块链网络的节点,所述系统涉及的各区块链网络构成以区块链主网为根结点、各个区块链子网分别为其他结点的树形结构,任一区块链子网的地址信息由其父结点对应的区块链网络所记录;
任一区块链子网的网络标识为,该子网的父结点对应的区块链网络的网络标识与该子网的专有标识的组合;所述方法包括:任一区块链网络中的一个节点接收交易;所述交易携带了网络标识,用于指定待处理所述交易的区块链网络;
以该节点为目标节点,循环执行以下步骤:所述目标节点若确定所述交易携带的网络标识包含且不是所述目标节点对应的网络标识,则在所属的区块链网络的各子结点对应的区块链子网中,确定网络标识包含于所述交易携带的网络标识的区块链子网,并根据记录的该区块链子网的地址信息,将所述交易转发给该区块链子网;
重新以该区块链子网的一个节点为所述目标节点。
2.如权利要求1所述方法,任一区块链子网的网络标识包括:由该区块链子网的专有标识、树形结构中该区块链子网所在路径的所有上级区块链子网的专有标识与区块链主网的网络标识组成的序列;在该序列中,区块链主网的网络标识排序最先,上一级区块链子网的专有标识排序先于下一级区块链子网的专有标识;
所述目标节点判断所述交易携带的网络标识是否包含所述目标节点所属的区块链网络的网络标识,包括:
所述目标节点由先到后读取所述交易携带的序列中的前N个标识;N为所述目标节点所属的区块链网络的序列中标识的数量;
所述目标节点若确定读取到的前N个标识与所述目标节点所属的区块链网络的网络标识一致,则确定所述交易携带的网络标识包含所述目标节点所属的区块链网络的网络标识;若确定不一致,则确定所述交易携带的网络标识不包含所述目标节点对应的网络标识。
3.如权利要求2所述方法,所述目标节点判断自身对应的网络标识是否为所述交易携带的网络标识,包括:
所述目标节点在确定读取到的前N个标识与所述目标节点对应的网络标识一致之后,判断所述交易携带的专有标识序列中是否有未读取的专用标识,若是,则确定自身对应的网络标识不是所述交易携带的网络标识,若否,则确定自身对应的网络标识是所述交易携带的网络标识。
4.如权利要求3所述方法,还包括:所述目标节点在确定自身对应的网络标识不是所述交易携带的网络标识之后,由先到后继续读取所述交易携带的序列中的下一个标识;
所述目标节点将由先到后读取到的各标识组成的子序列对应的区块链网络,作为从所属的区块链网络的各子结点对应的区块链子网中确定出的,网络标识包含于所述交易携带的网络标识的区块链子网。
5.如权利要求2‑4任一项所述方法,系统中任一区块链网络的网络标识的长度为固定长度。
6.如权利要求1所述方法,循环停止条件,包括:所述交易携带的网络标识不包含所述目标节点对应的网络标识;
或者,所述目标节点无法从所属的区块链网络的各子结点对应的区块链子网中,确定出网络标识包含于所述交易携带的网络标识的区块链子网;
或者,所述目标节点对应的网络标识是所述交易携带的网络标识。
7.如权利要求6所述方法,还包括:所述目标节点若确定所述交易携带的网络标识不包含所述目标节点所属的区块链网络的网络标识,或者无法从所属的区块链网络的各子结点对应的区块链子网中,确定出网络标识包含于所述交易携带的网络标识的区块链子网,则丢弃所述交易。
8.如权利要求1所述方法,还包括:客户端若从提交所述交易的时间点起,经过指定时长未从所述系统监听到对所述交易的处理事件,则提示用户所述交易携带的网络标识对应的区块链网络不存在,或交易处理超时。
9.如权利要求6所述方法,还包括:所述目标节点若确定对应的网络标识是所述交易携带的网络标识,则处理所述交易。
10.如权利要求9所述方法,还包括:所述目标节点若确定自身对应的网络标识是所述交易携带的网络标识,则将所述交易转发给属于同一个区块链网络的其他节点进行处理。
11.如权利要求1所述方法,所述系统中的区块链网络为联盟链网络或公有链网络。
12.一种区块链系统,包括多个节点设备;每个节点设备上部署至少一个区块链网络的节点,所述系统涉及的各区块链网络构成以区块链主网为根结点、各个区块链子网分别为其他结点的树形结构,任一区块链子网的地址信息由其父结点对应的区块链网络所记录;
任一区块链子网的网络标识为,该子网的父结点对应的区块链网络的网络标识与该子网的专有标识的组合;
任一区块链网络中的一个节点,接收交易;所述交易携带了网络标识,用于指定待处理所述交易的区块链网络;
其中,以该节点为目标节点,循环执行以下步骤:所述目标节点若确定所述交易携带的网络标识包含且不是所述目标节点对应的网络标识,则在所属的区块链网络的各子结点对应的区块链子网中,确定网络标识包含于所述交易携带的网络标识的区块链子网,并根据记录的该区块链子网的地址信息,将所述交易转发给该区块链子网;
重新以该区块链子网的一个节点为所述目标节点。
说明书 :
区块链网络间的交易转发方法
技术领域
背景技术
块链网络中,部分节点有时存在实现小范围交易的需求,以避免其他节点获得这些交易及
其相关数据。
现上述的小范围交易。然而,在至少部分成员参与多个区块链网络的情况下,如何将交易由
不负责处理该交易的区块链网络路由到负责处理该交易的区块链网络,是亟待解决的技术
问题。
发明内容
络的节点,所述系统涉及的各区块链网络构成以区块链主网为根结点、各个区块链子网分
别为其他结点的树形结构,任一区块链子网的地址信息由其父结点对应的区块链网络所记
录;
所述交易携带的网络标识的区块链子网,并根据记录的该区块链子网的地址信息,将所述
交易转发给该区块链子网;
络构成以区块链主网为根结点、各个区块链子网分别为其他结点的树形结构,任一区块链
子网的地址信息由其父结点对应的区块链网络所记录;
所述交易携带的网络标识的区块链子网,并根据记录的该区块链子网的地址信息,将所述
交易转发给该区块链子网;
网的专有标识的组合。如此,树形结构中同一路径上的区块链主网与各区块链子网的网络
标识之间可以具有包含与被包含的关系。需要说明的是,树形结构中任一区块链子网的地
址信息由其父结点对应的区块链网络所记录,即在树形结构中,子结点对应的区块链子网
的地址信息只会暴露给父结点对应的区块链网络(这样可以提升区块链子网被网络攻击的
难度)。
易的区块链网络,从而降低交易处理的失败率。
附图说明
具体实施方式
中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相
反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相
一致的装置和方法的例子。
多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进
行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行
描述。
+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比
特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新
区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私
有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单
来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更
适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分
去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加
入网络并组成利益相关联盟,共同维护区块链运行。
拟机(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所示的实施例。
的身份信息。
的第二区块链节点。
块,包括:
获取所述组网事件包含的所述配置信息或所述创世块;或者,
含的所述配置信息或所述创世块。
于第一区块链节点的第一实例。
链网络路由到负责处理该交易的区块链网络的方法。
标识的组合。如此,树形结构中同一路径上的区块链主网与各区块链子网的网络标识之间
可以具有包含与被包含的关系。需要说明的是,树形结构中任一区块链子网的地址信息由
其父结点对应的区块链网络所记录,即在树形结构中,子结点对应的区块链子网的地址信
息只会暴露给父结点对应的区块链网络(这样可以提升区块链子网被网络攻击的难度)。
理该交易的区块链网络,从而降低交易处理的失败率。
部署的不同节点属于不同区块链网络。所述系统在软件层面具有以区块链主网为根结点、
各个区块链子网分别为其他结点的树形结构(参见图5)。
录。如此,对于任一区块链子网而言,只有其父结点的区块链网络才能知晓该区块链子网的
地址信息,从而可以根据地址信息与该区块链子网中的节点进行通信。对于不知晓该区块
链子网的地址信息的其他区块链网络,由于不能与该区块链子网中的节点进行通信,因此
也就没有机会对该区块链子网中的节点发起网络攻击。
结构,ROOT表示根结点,即区块链主网,区块链主网的网络标识为mainnet,Subnet标识子
网,区块链主网的下一级子网有3个,这3个区块链子网的专有标识分别为biz1、biz2、biz3,
其中,第3个区块链子网的下一级又有两个区块链子网,专用标识依次为svcA、svcB。如此,
图5中区块链主网的网络标识为mainnet,中间一级三个区块链子网的网络标识可以依次
为:mainnet.biz1;mainnet.biz2;mainnet.biz3。最下一级两个区块链子网的网络标识可
以依次为:mainnet.biz3.svcA;mainnet.biz3.svcB。
的两个区块链子网的网络标识可以依次为:biz3‑mainnet‑ svcA;biz3‑mainnet‑ svcB。
该节点所属的区块链网络负责处理的,也可能不是该节点所述的区块链负责处理的。而该
交易除了携带交易相关信息之外,还携带了网络标识,用于指定待处理所述交易的区块链
网络。
所述交易携带的网络标识的区块链子网,并根据记录的该区块链子网的地址信息,将所述
交易转发给该区块链子网。
网络标识本身。
形结构中的路径上的下级某个区块链子网负责处理的。而又由于目标节点仅仅记录了其所
属区块链网络的子结点的区块链子网的地址信息,因此,目标节点仅仅能够将交易转发至
下一级子网。
带的网络标识中,至少是所述交易携带的网络标识的一部分。
点。
客户端接收交易的节点如果发现自身所属的区块链网络不负责处理所述交易,则并不会直
接丢弃交易,而是根据交易携带的网络标识判断是否将交易向下一级子网转发,这至少可
以提升交易被成功处理的可能性,降低交易处理失败的概率。
易的子网。因此,这种情况下可以停止循环。
对应的区块链子网不存在。因此,这种情况下可以停止循环。
链子网中,确定出网络标识包含于所述交易携带的网络标识的区块链子网,则可以丢弃所
述交易。
网络标识,则将所述交易转发给属于同一个区块链网络的其他节点进行处理。
络不存在,或交易处理超时。用户可以通过客户端重新选择系统中的一个区块链网络来提
交交易。
的网络标识组成的序列。在该序列中,区块链主网的网络标识排序最先,上一级区块链子网
的专有标识排序先于下一级区块链子网的专有标识。
主网的子结点对应的子网的专有标识,svcB是主网的孙结点对应的子网的专用标识。
“mainnet.biz3.svcB”实际上是主网的孙结点对应的子网的网络标识。
所述目标节点所属的区块链网络的网络标识一致,则确定所述交易携带的网络标识包含所
述目标节点所属的区块链网络的网络标识;若确定不一致,则确定所述交易携带的网络标
识不包含所述目标节点对应的网络标识。
到mainnet,确定读取到的前N个标识与所述目标节点所属的区块链网络的网络标识一致,
那么确定所述交易携带的网络标识包含所述目标节点所属的区块链网络的网络标识。
后,判断所述交易携带的专有标识序列中是否有未读取的专用标识,若是,则确定自身对应
的网络标识不是所述交易携带的网络标识,若否,则确定自身对应的网络标识是所述交易
携带的网络标识。
各标识组成的子序列对应的区块链网络,作为从所属的区块链网络的各子结点对应的区块
链子网中确定出的,网络标识包含于所述交易携带的网络标识的区块链子网。
署的不同节点属于不同区块链网络;所述系统在软件层面具有以区块链主网为根结点、各
个区块链子网分别为其他结点的树形结构,任一区块链子网的地址信息由其父结点对应的
区块链网络所记录;
所述交易携带的网络标识的区块链子网,并根据记录的该区块链子网的地址信息,将所述
交易转发给该区块链子网;
以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放
器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何
设备的组合。
施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机
可用存储介质(包括但不限于磁盘存储器、CD‑ROM、光学存储器等)上实施的计算机程序产
品的形式。
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序
指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产
生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实
现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境
中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块
可以位于包括存储设备在内的本地和远程计算机存储介质中。
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或
多个方框中指定的功能。
其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一
个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处
理器 (CPU)、输入/输出接口、网络接口和内存。
质的示例。
计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、
动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电
可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器
(CD‑ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、
基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计
算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体
(transitory media),如调制的数据信号和载波。
括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要
素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要
素的过程、方法、商品或者设备中还存在另外的相同要素。
执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺
序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可
以的或者可能是有利的。
中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表
示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出
项目的任何或所有可能组合。
分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第
二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如
果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。