CN113259462B - 区块链消息的分发方法及装置 - Google Patents
区块链消息的分发方法及装置 Download PDFInfo
- Publication number
- CN113259462B CN113259462B CN202110611550.7A CN202110611550A CN113259462B CN 113259462 B CN113259462 B CN 113259462B CN 202110611550 A CN202110611550 A CN 202110611550A CN 113259462 B CN113259462 B CN 113259462B
- Authority
- CN
- China
- Prior art keywords
- network
- blockchain
- node
- block chain
- access layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1059—Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1074—Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
- H04L67/1078—Resource delivery mechanisms
Abstract
本说明书一个或多个实施例提供一种区块链消息的分发方法及装置。该方法应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层和分别归属于各个区块链网络的节点实例,且所述节点设备中的各个节点实例共用所述网络接入层对应的网络资源,所述方法包括:所述网络接入层获取网络标识集合,所述网络标识集合用于记录所述节点设备中已部署的节点实例分别归属的区块链网络的网络标识;所述网络接入层在接收到区块链消息的情况下,根据所述网络标识集合确定所述区块链消息对应的目标区块链网络,并将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链网络的目标节点实例。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种区块链消息的分发方法及装置。
背景技术
区块链技术构建在传输网络(例如点对点网络)之上。传输网络中的区块链节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。在一些区块链网络中,部分节点有时存在实现小范围交易的需求,以避免其他节点获得这些交易及其相关数据,此时,同一节点设备可以参与组建多个区块链网络,即在同一节点设备中部署归属于不同区块链网络的多个节点。
在相关技术中,通常需要对同一节点设备参与组建的多个区块链网络分别配置不同的IP地址、端口号等网络资源,相应的,发送方可以按照上述配置向节点设备上部署的归属于某一区块链网络的节点发送区块链消息。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种区块链消息的分发方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种区块链消息的分发方法,应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层和分别归属于各个区块链网络的节点实例,且所述节点设备中的各个节点实例共用所述网络接入层对应的网络资源,所述方法包括:
所述网络接入层获取网络标识集合,所述网络标识集合用于记录所述节点设备中已部署的节点实例分别归属的区块链网络的网络标识;
所述网络接入层在接收到区块链消息的情况下,根据所述网络标识集合确定所述区块链消息对应的目标区块链网络,并将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链网络的目标节点实例。
根据本说明书一个或多个实施例的第二方面,提出了一种区块链消息的分发装置,应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层和分别归属于各个区块链网络的节点实例,且所述节点设备中的各个节点实例共用所述网络接入层对应的网络资源,所述装置包括:
集合获取单元,使所述网络接入层获取网络标识集合,所述网络标识集合用于记录所述节点设备中已部署的节点实例分别归属的区块链网络的网络标识;
消息分发单元,使所述网络接入层在接收到区块链消息的情况下,根据所述网络标识集合确定所述区块链消息对应的目标区块链网络,并将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链网络的目标节点实例。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种创建智能合约的示意图。
图2是一示例性实施例提供的一种调用智能合约的示意图。
图3是一示例性实施例提供的一种创建和调用智能合约的示意图。
图4是一示例性实施例提供的一种区块链消息的分发方法的流程图。
图5是一示例性实施例提供的一种基于区块链网络的示意图。
图6是一示例性实施例提供的一种节点设备内部结构示意图。
图7是一示例性实施例提供的一种设备的结构示意图。
图8是一示例性实施例提供的一种区块链消息的分发装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。公有链以比特币、以太坊为代表,加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
不论是公有链、私有链还是联盟链,都可能提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以以太坊为例,支持用户在以太坊网络中创建并调用一些复杂的逻辑,这是以太坊区别于比特币区块链技术的最大挑战。以太坊作为一个可编程区块链的核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,以下简称“字节码”)。部署在区块链上的智能合约可以是字节码的形式。
例如图1所示,Bob将一个包含创建智能合约信息的交易发送到以太坊网络后,节点1的EVM可以执行这个交易并生成对应的合约实例。图1中的“0x6f8ae93…”代表了这个合约的地址,交易的data字段保存的可以是字节码,交易的to字段为空。节点间通过共识机制达成一致后,这个合约成功创建,并且可以在后续过程中被调用。合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址,合约代码将保存在该合约账户中。智能合约的行为由合约代码控制。换句话说,智能合约使得区块链上产生包含合约代码和账户存储(Storage)的虚拟账户。
如图2所示,仍以以太坊为例,Bob将一个用于调用智能合约的交易发送到以太坊网络后,某一节点的EVM可以执行这个交易并生成对应的合约实例。图2中交易的from字段是交易发起方(即Bob)的账户的地址,to字段中的“0x6f8ae93…”代表了被调用的智能合约的地址,value字段在以太坊中是以太币的值,交易的data字段保存的调用智能合约的方法和参数。调用智能合约后,balance的值可能改变。后续,某个客户端可以通过某一区块链节点(例如图2中的节点6)查看balance的当前值。智能合约以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当交易完成后,区块链上就保存了无法篡改、不会丢失的交易凭证。
创建智能合约和调用智能合约的示意图如图3所示。以太坊中要创建一个智能合约,需要经过编写智能合约、编译成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,智能合约代码分布式的运行在以太坊网络中每个节点的虚拟机中。
需要说明的是,除了可以由用户创建智能合约,也可以在创世块中由系统设置智能合约。这类合约一般称为创世合约。一般的,创世合约中可以设置一些区块链网络的数据结构、参数、属性和方法。此外,具有系统管理员权限的账户可以创建系统级的合约,或者修改系统级的合约(简称为系统合约)。另外除了以太坊中的EVM外,不同的区块链网络还可能采用各种的虚拟机,这里并不限定。
区块链网络中的节点在执行调用智能合约的交易后,会生成相应的收据(receipt),以用于记录与执行该智能合约相关的信息。这样,可以通过查询交易的收据来获得合约执行结果的相关信息。合约执行结果可以表现为收据中的事件(event)。消息机制可以通过收据中的事件实现消息传递,以触发区块链节点执行相应的处理。事件的结构譬如可以为:
Event:
[topic][data]
[topic][data]
......
在上述示例中,事件的数量可以为一个或多个;其中,每个事件分别包括主题(topic)和数据(data)等字段。区块链节点可以通过监听事件的topic,从而在监听到预定义的topic的情况下,执行预设处理,或者从相应事件的data字段读取相关内容,以及可以基于读取的内容执行预设处理。
上述的事件机制中,相当于在监听方(比如存在监听需求的用户)处存在具有监听功能的客户端,譬如该客户端上运行了用于实现监听功能的SDK等,由该客户端对区块链节点产生的事件进行监听,而区块链节点只需要正常生成收据即可。除了上述的事件机制之外,还可以通过其他方式实现交易信息的透出。例如,可以通过在区块链节点运行的区块链平台代码中嵌入监听代码,使得该监听代码可以监听区块链交易的交易内容、智能合约的合约状态、合约产生的收据等其中的一种或多种数据,并将监听到的数据发送至预定义的监听方。由于监听代码部署于区块链平台代码中,而非监听方的客户端处,因而相比于事件机制而言,这种基于监听代码的实现方式相对更加的主动。其中,上述的监听代码可以由区块链平台的开发人员在开发过程中加入区块链平台代码,也可以由监听方基于自身的需求而嵌入,本说明书并不对此进行限制。
区块链技术区别于传统技术的去中心化特点之一,就是在各个节点上进行记账,或者称为分布式记账,而不是传统的集中式记账。区块链系统要成为一个难以攻破的、公开的、不可篡改数据记录的去中心化诚实可信系统,需要在尽可能短的时间内做到分布式数据记录的安全、明确及不可逆。不同类型的区块链网络中,为了在各个记录账本的节点中保持账本的一致,通常采用共识算法来保证,即前述提到的共识机制。例如,区块链节点之间可以实现区块粒度的共识机制,比如在节点(例如某个独特的节点)产生一个区块后,如果产生的这个区块得到其它节点的认可,其它节点记录相同的区块。再例如,区块链节点之间可以实现交易粒度的共识机制,比如在节点(例如某个独特的节点)获取一笔区块链交易后,如果这笔区块链交易得到其他节点的认可,认可该区块链交易的各个节点可以分别将该区块链交易添加至自身维护的最新区块中,并且最终能够确保各个节点产生相同的最新区块。共识机制是区块链节点就区块信息(或称区块数据)达成全网一致共识的机制,可以保证最新区块被准确添加至区块链。当前主流的共识机制包括:工作量证明(Proof ofWork,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,HoneyBadgerBFT算法等。
由于区块链网络的去中心化特性,使得区块链网络中的所有区块链节点均会维护相同的区块数据,无法满足部分节点的特殊需求。以联盟链为例,所有联盟成员可以组成一区块链网络,所有联盟成员在该区块链网络中分别存在对应的区块链节点,并可以通过对应的区块链节点获得该区块链网络上发生的所有交易和相关数据。
但在一些情况下,可能存在部分联盟成员希望完成一些具有保密需求的交易,这些联盟成员既希望这些交易能够在区块链上存证或借助于区块链技术的其他优势,又能够避免其他联盟成员查看到这些交易和相关数据。因此,这些联盟成员可以额外组建一新的区块链网络,从而,这些联盟成员中的任一联盟成员对应的节点设备可以参与组建多个区块链网络,即在同一节点设备中部署归属于不同区块链网络的多个节点。
在上述场景下,为实现各个区块链网络的正常运行,需要对同一节点设备参与组建的多个区块链网络分别配置不同的IP地址、端口号等网络资源。例如在相关技术中,通常会为某一节点设备配置一个IP地址,并为该节点设备所参与组建的各个区块链网络分别配置不同的端口号,从而将IP地址与端口的组合作为节点设备中所参与组建的某一区块链网络(以及归属于该区块链网络的区块链节点)的网络地址。相应的,发送方可以根据上述配置确定某一区块链网络的网络地址,并向节点设备发送区块链消息,已由区块链设备按照区块链消息携带的该网络地址将区块链消息分发至相应的区块链节点,以便实现对区块链消息的后续处理。
可见,上述方式实际上是为节点设备参与组建的每一区块链网络均分配独立的网络资源。然而使用该配置方式,一方面,节点设备所参与组建的每一条区块链网络都需要配置不同的网络资源,因此区块链网络需要占用较多的网络资源,特别是在节点数目较多的场景下,甚至可能出现网络资源耗尽的计算情况发生,一定程度上限制了网络规模。而另一方面,上述资源配置过程通常由管理人员手动完成,因此一旦发生配置错误通常很难调整,导致网络稳定性较差;而且在新增或删除网络的过程中需要管理人员手动完成较多的处理步骤及操作流程,因此网络管理效率较低且扩展性差。
为解决上述问题,本说明书提出一种网络资源的共用方案,即允许节点设备所参与组建的多个区块链网络共用节点设备的网络资源,如为全部区块链网络同一配置相同的IP地址和端口号。当然,因为不同的区块链网络之间仍然是相互独立的,如分别使用各自的共识、计算、存储等网络资源,所以需要节点设备对接收到的区块链消息进行分发。因此本说明书提出一种区块链消息的分发方法,通过该方法,节点设备中的网络接入层可以获取用于记录该节点设备中已部署的节点实例分别归属的区块链网络的网络标识的网络标识集合,进而在接收到区块链消息的情况下,根据该集合实现对区块链消息的高效分发。正因为通过上述方式组建的多个区块链网络可以共用节点设备的网络资源,所以无需分别对各个区块链网络分别配置不同的网络资源,所以相对于为各个区块链网络分别分工配置不同网络资源的相关技术,本方案能够大大简化区块链网络的网络资源配置过程并降低配置难度,并能够实现对区块链消息的高效分发。下面结合图4对本说明书的区块链子网的组建方案进行说明。
请参见图4,图4是一示例性实施例提供的一种区块链消息的分发方法的流程图。如图4所示,该方法应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层和分别归属于各个区块链网络的节点实例,且所述节点设备中的各个节点实例共用所述网络接入层对应的网络资源,该方法可以包括以下步骤:
步骤402,所述网络接入层获取网络标识集合,所述网络标识集合用于记录所述节点设备中已部署的节点实例分别归属的区块链网络的网络标识。
首先需要说明的是,本说明书所述的节点设备中运行有区块链平台代码,节点设备运行该代码的过程中即在本地形成网络接入层和分别归属于各个区块链网络的节点实例。其中,网络接入层用于统一管理节点设备中的IP地址和/或端口号等网络资源,以及对节点设备所接收的区块链消息进行统一分发,而上述各个节点实例共用网络接入层所管理的上述网络资源,从而有助于提升在多区块链网络场景下针对区块链消息的分发及处理效率。
在一实施例中,节点设备中形成的上述多个节点实例分别归属的区块链网络,可以包括区块链主网和由区块链主网管理的区块链子网。相应的,可以将归属于区块链主网的节点实例称为主网节点实例、归属于区块链子网的节点实例称为子网节点实例。
进一步的,主网节点实例可以通过执行交易的方式,调用区块链主网上部署的子网管理合约管理区块链子网。例如,与执行上述组网交易类似的,主网节点实例在执行管理区块链子网的交易(下称管理交易)时,可以调用上述子网管理合约以触发节点设备参与管理相应的区块链子网。其中,上述管理交易可以指明被调用的智能合约的地址、调用的方法和传入的参数等。进一步的,被调用的合约可以为上述子网管理合约,调用的方法可以为管理区块链子网的方法,传入的参数可以包括针对区块链平台代码的属性配置信息,如代码版本号、是否需要共识、共识算法类型和/或区块大小等,本说明书并不对此进行限制。可以理解的是,通过调用管理交易时传入的上述参数,可以同时对节点设备中组建的多个区块链子网进行集中管理,从而有助于提升区块链子网的管理效率。
上述主网节点实例可以对任一区块链子网进行多种形式的管理。例如,可以组建任一区块链子网更改任一区块链子网的网络配置信息、切换任一区块链子网的工作状态、切换任一区块链子网中的至少一个区块链节点实例的工作状态和/或销毁任一区块链子网等,下面结合实施例分别进行说明。
在一实施例中,主网节点实例可以通过执行交易的方式组建上述区块链子网,即上述管理交易可以为组建区块链子网的交易(下称组网交易)。此时,该交易可以包括调用合约的交易,该交易中可以指明被调用的智能合约的地址、调用的方法和传入的参数等。进一步的,调用的上述合约可以为区块链子网的创世合约或部署在区块链主网中的系统合约,调用的方法可以为组建区块链子网的方法,传入的参数可以包括针对区块链平台代码的属性配置信息,如代码版本号、是否需要共识、共识算法类型和/或区块大小等,本说明书并不对此进行限制。
另外,上述组网交易所调用的合约可以为主网节点实例中部署的子网管理合约,该合约可以为系统合约或创世合约。从而主网节点实例在执行组网交易时,可以调用该子网管理合约以触发节点设备参与组建相应的区块链子网(即创建归属于区块链子网的子网节点实例)。相应的,响应于对子网管理合约的执行,节点设备可以拉起一进程并在该进程中执行区块链平台代码,或者也可以在已拉起的进程(如上述主网节点实例所在的进程)中运行该代码,从而在相应进程中创建子网节点实例,以完成区块链子网的组建。通过调用上述子网管理合约时传入的属性配置信息,可以保证该区块链子网是基于上述区块链主网所组建的。
当然,组建区块链子网的交易也可以并非是调用智能合约的交易,使得不支持智能合约的区块链网络也可以实现本说明书的技术方案,从而在区块链主网的基础上快捷地组建出区块链子网。例如,可以预先定义一组网交易类型标识,当交易包含该组网交易类型标识时,就表明该交易用于组建新的区块链子网,即该交易为组网交易。区块链平台代码可以包含相关的用于组建区块链子网的处理逻辑,使得运行该区块链平台代码的主网节点实例在执行交易时,如果发现该交易中包含上述的组网交易类型标识,且参与组建所述区块链子网的节点成员的身份信息被包含于该交易中的配置信息中,可以基于上述处理逻辑来触发节点设备生成包含该配置信息的创世块并启动区块链节点,由该区块链节点加载该创世块,以形成为区块链子网中的子网节点。
基于区块链主网来组建区块链子网的优势之一,就是由于创建子网节点实例的节点设备上已经部署了主网节点实例,因而可以将主网节点实例所使用的区块链平台代码复用在子网节点实例上,免去了区块链平台代码的重复部署,极大地提高了区块链子网的组建效率。而且由于区块链子网是在区块链主网的基础上所建立,使得区块链子网的组建过程相比于完全独立地组建一条区块链网络,所消耗的资源和所需的耗时等都极大地降低,灵活性极高。
在上述执行交易以组建区块链子网的实施例中,组网交易可由区块链主网的管理员发起,即仅允许管理员在区块链主网的基础上组建区块链子网,而避免将区块链消息的分发权限开放给普通用户,以防止由此导致的安全性问题。在一些情况下,也可以允许区块链主网的普通用户发起上述组网交易,以满足普通用户的组网需求,使得普通用户在管理员不便于发起交易的情况下依然能够快捷地组建区块链子网。
以图5所示为例,区块链网络包括subnet0、subnet1和subnet2,其中,区块链主网为subnet0,该subnet0包含的区块链节点为nodeA、nodeB、nodeC、nodeD和nodeE等;在subnet0的基础上组建的区块链子网为subnet1;而subnet2与subnet0和subnet1相对独立。因此,处于同一节点设备中的区块链节点nodeA、nodeA1和nodeA2分别归属于不同的区块链网络,即该节点设备同时参与上述三个区块链网络。
上述区块链主网subnet0包含的区块链节点为nodeA、nodeB、nodeC、nodeD和nodeE等。假定nodeA、nodeB、nodeC和nodeD分别对应的节点成员希望组建一区块链子网:如果nodeA为管理员且仅允许管理员发起组网交易,那么可由nodeA向subnet0发起上述组网交易;如果nodeE为管理员且仅允许管理员发起组网交易,那么nodeA~nodeD需要向nodeE进行请求,使得nodeE向subnet0发起上述组网交易;如果nodeE为管理员但允许普通用户发起组网交易,那么nodeA~nodeD均可以向subnet0发起上述组网交易。当然,不论是管理员或者普通用户,发起组网交易的区块链节点对应的节点成员并不一定参与所组建的区块链子网,比如nodeA为管理员但允许普通用户发起组网交易,那么虽然最终由nodeA、nodeB、nodeC和nodeD分别对应的节点成员组建区块链子网,但可由nodeE向subnet0发起上述组网交易。
在区块链主网的基础上组建区块链子网时,容易理解的是,会使得该区块链子网与区块链主网之间存在逻辑上的层次关系。比如在图5所示的subnet0上组建区块链子网subnet1时,可以认为subnet0处于第一层、subnet1处于第二层。那么,本说明书中的区块链主网可以为底层区块链网络,底层区块链网络并非在其他区块链网络的基础上组建的区块链子网,比如图5中的subnet0可以认为是属于底层区块链网络类型的区块链主网。当然,区块链主网也可以为其他区块链网络的子网,比如可以在图5中subnet1的基础上进一步组建另一区块链子网,此时可以认为subnet1为该区块链子网对应的区块链主网,而这并不影响该subnet1同时属于subnet0上创建的区块链子网。例如,还可以基于子网节点nodeA1生成子网节点nodeA11,该节点所归属的区块链子网subnet11即相当于在区块链子网subnet1的基础上组建的区块链子网。此时,区块链主网subnet0位于第一层、区块链子网subnet1位于第二层、区块链子网subnet11位于第三层,即在节点设备中组建了三层区块链网络。当然,还可以通过类似过程在节点设备中组建四层甚至更多层区块链网络,不再赘述。可见,区块链主网与区块链子网实际上是相对概念,同一区块链网络在一些情况下可以为区块链主网、另一些情况下可以为区块链子网。
上述主网节点和子网节点可以对应于同一个节点成员,比如在联盟链场景下对应于同一联盟链成员。因为主网节点属于区块链主网、子网节点属于区块链子网,使得该区块链成员可以分别参与到区块链主网和区块链子网的交易中。例如,区块链主网nodeA和区块链子网nodeA1共同对应的节点成员可以分别参与到subnet0和subnet1交易中。并且,由于区块链主网和区块链子网属于相互独立的两个区块链网络,使得主网节点生成的区块与子网节点生成的区块分别存入所述节点设备上的不同存储,比如该存储可以为数据库,从而实现了主网节点与子网节点分别使用的存储之间的相互隔离,因而区块链子网所产生的数据仅会在区块链子网的节点成员之间同步,而仅参与了区块链主网的区块链成员无法获得区块链子网上产生的数据,实现了区块链主网与区块链子网之间的数据隔离,满足了部分节点成员(即参与区块链子网的节点成员)的交易需求。
可见,主网节点和子网节点是在逻辑上划分出来的区块链节点,而从物理设备的角度来说,相当于上述部署了主网节点和子网节点的节点设备同时参与了区块链主网和区块链子网。由于区块链主网与区块链子网之间相互独立,使得这两个区块链网络的身份体系也相互独立,因而即便主网节点和子网节点可以采用完全相同的公钥,仍然应当将两者视为不同的区块链节点。譬如在图5中,subnet0中的nodeA相当于主网节点,而部署该nodeA的节点设备生成了属于subnet1的nodeA1,该nodeA1相当于子网节点。可见,由于身份体系相互独立,所以即便子网节点所采用的公钥区别于主网节点,也不影响本说明书方案的实施。
当然,区块链子网的节点成员并不一定只是区块链主网的部分节点成员。在一些情况下,区块链子网的节点成员可以与区块链主网的节点成员完全一致,此时所有的区块链成员都可以获得区块链主网和区块链子网上的数据,但是区块链主网与区块链子网所产生的数据依然可以相互隔离,比如可以通过在区块链主网上实现一类业务、在区块链子网上实现另一类业务,从而可以使得这两类业务分别产生的业务数据之间相互隔离。
如图6所示,节点设备中通过运行区块链平台代码形成网络接入层,以及包括网络节点nodeA(主网节点)、网络节点nodeA1(子网节点)和网络节点nodeA2在内的区块链节点。图中主网节点nodeA应当视为前述的主网节点实例,子网节点nodeA1应当视为前述的子网节点实例,特此说明。
上述各个区块链节点中可以包含共识模块、计算模块和存储模块,以供区块链节点实现交易共识、数据计算、数据存储等基本功能。当然,任一区块链节点内还可以包含其他功能模块,以便该节点对应的节点成员能够通过节点中的功能模块实现相应的功能,本说明书实施例对于任一区块链节点中所包含具体功能模块并不进行限制。以共识模块为例,任一区块链网络中的某些区块链节点可能不参与交易共识,因此这部分区块链节点中可以不包含共识模块,而区块链网络中参与交易共识的部分区块链节点则包含该模块。
如前所述,创建不同区块链节点的区块链平台代码可以复用,所以上述不同区块链节点所包含的相同模块可以对应于同一段区块链平台代码。以计算模块为例,假设nodeA和nodeA1均需要实现相同的计算功能,则二者可以复用同一段用以实现该计算功能的区块链平台代码(下称计算代码)。其中,nodeA和nodeA1可以分别使用该计算代码形成供自身计算过程使用的计算模块,即nodeA和nodeA1分别包含自己的计算模块,且二者的计算模块均通过上述计算代码生成。或者,也可以根据上述计算代码生成一个计算模块,供nodeA和nodeA1共同使用,如二者可以分时独立调用该模块进行计算,从而由各个节点共享该计算模块,避免了计算模块的重复生成,进一步提升了节点部署及代码执行效率。
上述网络接入层包括接入模块和网络管理模块,其中,接入模块用于配置节点设备的IP地址和端口号等网络参数,并集中接收其他节点发送至该节点设备的区块链消息;网络管理模块用于对节点设备中的区块链网络进行管理,并根据获取到的网络标识集合,确定所接收到的区块链消息对应的目标区块链网络,以便实现对区块链消息的分发。
对于组建完成的任一区块链网络,主网节点实例可以对其进行进一步的管理。在一实施例中,主网节点实例可以对任一区块链子网的网络配置信息进行更改。例如区块链主网的管理员或对区块链子网具有管理权限的子网成员,可以对该区块链子网所执行交易的数据格式、所采用的交易验证算法、是否对交易进行共识、共识过程中采用的共识算法、智能合约的部署权限、智能合约调用权限、智能合约升级权限等至少一个子网配置信息进行更改,从而实现对区块链子网的配置信息的管理。
当然,主网节点实例也可以对任一区块链子网的工作状态进行切换。例如,在联盟链场景下,部分(或全部)联盟链成员可以在区块链主网subnet0的基础上组建区块链子网subnet1,新组建的subnet1的工作状态可以默认为开启状态,以便subnet1对应的联盟链成员尽快参与相关事务。当然,为保证对子网使用权限的管理,也可以由subnet1的部分成员(如管理员等)将该子网的工作状态设置为开启状态,不再赘述。进一步的,在相关成员参与上述事务的过程中,假如出现处理故障等突发状况,subnet1可以暂停当前事务,从而其工作状态被更新为暂停状态。而且,因为联盟链成员需要处理的事务往往具有一定的时限要求,如需要在预先指定的时间段内执行等,所以在预设时间段内完成上述事务的执行后,可以将subnet1的工作状态设置为终止状态,以便后续直接使用该subnet1执行其他事务,从而在后续执行其他事务时无需重新组建新的区块链子网,提升事务的执行效率。进一步的,主网节点实例还可以对任一区块链子网中的至少一个区块链节点实例的工作状态进行切换,如subnet0中nodeA将上述subnet1中nodeA1的工作状态在上述开启状态、暂停状态和终止状态之间进行切换等。另外,在上述事务为一次性事务或者subnet1的各个参与方不再需要共同执行事务的情况下,nodeA还可以销毁subnet1,以便减少区块链主网需要管理的子网个数,提升子网管理效率。
可见,主网节点实例可以通过区块链主网中部署的上述子网管理合约管理任一区块链子网或者任一区块链主网中的至少一个区块链节点实例,从而通过调用智能合约的方式实现对区块链子网或区块链节点的高效管理。
由上述实施例可见,节点设备在执行管理交易时,均可能导致节点设备中区块链子网的工作状态发生变化。当然,节点设备中的主网节点实例在执行其他交易时或者其他因素也可能导致区块链子网的工作状态发生变化,即区块链子网的工作状态的变化可能存在多种可能,本说明书对此并不进行限制。
本说明书实施例所述的网络标识为区块链网络的全局唯一标识,用于特定的表示各个区块链网络,以便于实现区块链网络的区分。其中,上述网络标识集合可以由区块链网络维护,也可以由主网节点实例、节点设备管理组建或者其他与区块链网络相关的第三方进行维护,本说明书实施例并不对此进行限制。
在一实施例中,上述网络标识集合可以用于记录处于可用状态的区块链网络的网络标识。因为新组建的区块链网络通常会被设置为开启状态,所以在区块链网络维护的情况下,网络接入层可以在参与并成功组建任一区块链网络后,将该网络的网络标识添加至自身维护的网络标识集合中;或者,也可以在(通过前述的事件订阅等机制)检测到区块链网络的网络状态发生变化后,根据检测到的状态变化相应的更新所维护的网络状态集合中的网络标识;又或者在任一区块链网络被销毁的情况下,可以相应的将该区块链网络的网络标识从该网络标识集合中移除。以图5为例,网络接入层可以在组建区块链子网subnet0后将其网络标识添加至网络标识集合中,也可以在subnet1的工作状态被从启动状态切换为暂停状态的情况下,将其网络标识从网络标识集合中移除,或者在subnet2被销毁的情况下,将其网络标识从网络标识集合中移除。
在另一实施例中,上述网络标识集合中也可以记录有各个区块链网络的运行状态,从而,上述区块链消息可以在目标区块链网络处于可用状态的情况下被分发至相应的目标节点实例。其中,上述状态信息可以与区块链标识相应记录,例如在以列表形式记录的情况下,任一表项中可以记录一个区块链网络的网络标识和该区块链网络的当前工作状态。可以理解的是,网络接入层可以根据各个区块链网的状态变化情况(反映了区块链网络的真实运行状态)对上述网络标识集合中记录的各个区块链网络的运行状态进行更新。所以在通过接入模块接收到区块链消息后,网络接入层可以从该消息中提取其携带的目标区块链网络的网络标识,进可以根据该标识根据网络标识集合中记录的目标区块链网络对应的工作状态确定该网络当前是否处于可用状态(如处于开启状态),并在确定目标区块链网络处于可用状态的情况下,将该区块链消息分发至该节点设备上部署的归属于目标区块链网络的区块链节点(及下述的目标区块链节点)。
其中,网络接入层可以主动监听节点设备中各个区块链网络的工作状态变化,并在监测到至少一个区块链网络的工作状态发生变化的情况下,在上述网络标识集合中更新该区块链网络的工作状态。以区块链子网为例,主网节点实例在执行管理交易时,可以调用上述子网管理合约管理区块链子网,并在交易执行后生成相应的收据,以用于记录与执行该智能合约相关的信息。这样,可以通过查询交易的收据来获得合约执行结果的相关信息。其中,上述合约执行结果可以表现为收据中的事件,因此网络接入层可以通过事件机制监测区块链子网的状态变化。
例如,网络接入层可以监听调用子网管理合约的交易执行后所产生事件的事件内容,以获知区块链子网的状态变化。以Subnet0上的节点nodeA~nodeE执行调用Subnet合约中addsubnet()方法的交易为例。在交易通过共识后,nodeA~nodeE分别执行addsubnet()方法并传入配置信息,得到相应的执行结果。
合约的执行结果可以包括所述配置信息,该执行结果可以处于前文所述的收据中,该收据中可以包含与执行addsubnet()方法相关的event,即组网事件。组网事件的topic可以包含预定义的组网事件标识,以区别于其他的事件。譬如在与执行addsubnet()方法相关的event中,topic的内容为关键词subnet,且该关键词区别于其他方法所产生event中的topic。那么,nodeA~nodeE通过监听生成的收据中各个event所含的topic,可以在监听到包含关键词subnet的topic的情况下,确定监听到与执行addsubnet()方法相关的event,即组网事件。
或者,网络接入层也可以基于日志预先订阅事件,从而在执行上述子网管理合约产生的事件被写入日志后,由节点设备中运行的事件通知中心及时通知网络接入层,从而网络接入层可以监测到区块链子网的状态变化,并根据该状态变化在上述网络标识集合中更新该区块链子网的工作状态。通过上述事件监听或事件订阅的方式,网络接入层能够及时、准确的监测到区块链子网的状态变化,从而实现对区块链子网的工作状态的及时更新。当然,主网节点实例还可以通过事件机制之外的其他方式告知网络接入层,如在主网节点实例本地部署有状态检测模块的情况下,其可以通过该模块周期性检测子网状态,并在检测到状态发生变化时向网络接入层发送提醒消息等,不再赘述。
在一实施例中,上述节点设备中的各个节点实例所对应区块链网络的网络标识可以由网络接入层分配。可以理解的是,上述分配可以由参与组建区块链网络的各个节点设备中的预设节点设备(如管理员对应的节点设备)或首个执行合约的节点设备(如合约执行最快的节点设备)中的网络接入层进行分配,并在分配完成后由该节点设备中的相应节点向其他节点同步(必要时也可以进行共识)。
以子网节点实例的组建过程为例,主网节点实例在执行上述组网交易以组建区块链子网时,可以先向网络管理模块发送通知消息,以由网络管理模块为待组建的区块链子网分配网络标识(即子网标识)。进而,网络管理模块一方面可以将该子网标识记录在上述网络标识集合中,另一方面可以将该子网标识发送至主网节点实例和交易发起方:主网节点实例将该子网标识写入到新组建的该区块链子网的创世块中,以生成该子网节点实例对应的区块链子网;交易发起方将该子网标识记录在其生成的需要该区块链子网处理的区块链消息中,以便网络接入层根据本地维护的上述子网标识将该区块链消息准确分发至新组建的上述区块链子网的子网节点实例。
当然,网络接入层也可以在确定其接收到的任一区块链交易为组网交易时,预分配一个子网标识,并将该子网标识与该组网交易关联发送至区块链主网的主网节点实例。从而主网节点实例可以在执行该组网交易时,使用接收到的上述子网标识组建区块链子网(即组建对应于该子网标识的区块链子网),而网络接入层在确定区块链子网被成功组建的情况下,一方面可以将预分配的上述子网标识记录在上述网络标识集合中,另一方面可以将该子网标识发送至交易发起方:该交易发起方可以将该子网标识记录在其生成的需要该区块链子网处理的区块链消息中,而网络接入层可以根据本地维护的上述子网标识将接收到的该区块链消息准确分发至新组建的上述区块链子网的子网节点实例。
上述实施例中,子网标识也可以由组建区块链子网的各个主网节点进行共识,并在共识通过后创建相应的区块链子网。而且,各个主网节点所在节点设备中的网络接入层均可以将该子网标识发送至相应的节点成员,以便参与组建该区块链子网的各个子网节点所对应的节点成员,均能够获知该区块链子网的子网标识,以便后续分发需要该区块链子网进行处理的区块链消息。
在一实施例中,在从其他设备处获取上述网络标识集合的情况下,为减少获取网络标识集合的频次,网络接入层还可以在接收到区块链消息的情况下,临时获取上述网络标识集合。当然,在方案应用中,可以根据实际情况采用前述的检测子网状态以提前获取的方式,也可以采用在接收到区块链消息后临时获取的方式,以平衡子网状态信息的时效性和区块链消息的处理效率,本说明书对此并不进行限制。
步骤404,所述网络接入层在接收到区块链消息的情况下,根据所述网络标识集合确定所述区块链消息对应的目标区块链网络,并将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链网络的目标节点实例。
需要说明的是,本说明书实施例中待分发的区块链消息,可以有多种可能,例如可以为用户设备或其他节点设备发送至上述节点设备的区块链消息,也可以为区块链节点之间在共识过程中产生的共识消息,还可以为区块链网络中的节点设备之间发送的用于保活的心跳消息等,还可以为区块链网络中的节点设备之间同步区块时的区块数据,本说明书实施例对此并不继进行限制。
如前所述,节点设备接收到的区块链消息,均由节点设备中的网络接入层统一分发。网络接入层接收到其他节点或设备发送的针对某一区块链网络的区块链消息的情况下,可以根据预先(在接收区块链消息前)或临时(在接收区块链消息后)获取的网络标识集合确定该区块链网络(即区块链消息对应的目标区块链网络)是否处于可用状态,并在目标区块链网络处于可用状态的情况下将该区块链消息分发至该网络,以便目标区块链网络对该消息进行处理。
其中,区块链消息中可以携带某一区块链网络的网络标识。以区块链交易为例,在联盟链场景下,对于共同处理某项事务的多个联盟链成员(相当于多个节点成员)中的任一联盟链成员,其可以根据上述各个联盟链成员的实际身份确定各个联盟链成员共同参与的区块链网络(即目标区块链网络),以用于处理该项事务对应的区块链交易。进而,上述任一联盟链成员可以确定目标区块链网络的网络标识(下称目标网络标识),并将该目标网络标识包含在自身所对应设备生成的与上述事务相关的区块链交易中,从而节点设备中的网络接入层在接收到该区块链交易后,可以按照其中包含的目标网络标识将该目标区块链交易分发至节点设备中归属于目标区块链网络的目标节点实例。其中,上述任一联盟链成员对应的设备处可以维护有该成员所参与的各个区块链网络的网络标识,以便据此确定上述目标网络标识,进而准确生成区块链交易。
其中,上述任一联盟链成员可以通过DApp(Decentralized Application,去中心化应用)的客户端生成上述目标区块链交易,此时,该客户端本地可以维护有该联盟链成员所对应节点设备参与的全部区块链网络的网络标识。或者,该联盟链成员也可以通过应用程序的客户端将业务相关信息发送至BaaS(Blockchain as a Service,区块链即服务)平台,以由该平台根据业务相关信息生成目标区块链交易,当然,BaaS平台可以维护有该联盟链成员所对应节点设备参与的全部区块链网络的网络标识。
进一步的,目标节点实例在接收到目标区块链交易后,可以将该交易同步至归属于目标区块链网络的其他节点实例,以便上述各个联盟链成员分别对应的节点设备在对该交易进行共识后,各自执行该交易,从而完成上述事务。
在一实施例中,网络接入层可以在网络标识集合中存在区块链消息携带的目标网络标识的情况下,将该目标网络标识所指示的区块链网络确定为上述目标区块链网络。当然,在确定目标区块链网络之前,网络接入层并不知晓网络标识集合中的哪个网络标识为目标网络标识(即尚不知晓哪个区块链网络为目标区块链网络),而是在查询到网络标识集合中的某一网络标识恰好为区块链消息中携带的目标网络标识(即该往标识即为目标网络标识)的情况下,才确定该网络标识指示的区块链网络为目标区块链网络。另外,网络接入层在获取到上述网络标识集合后,可以将该集合保存在自身对应的数据库或内存等存储空间内,进而在从区块链消息中提取出目标区块链标识后,可以从上述存储空间中读取网络标识集合并进行上述查询。
如图6所示,在确定区块链消息中包含区块链网络subnet1的网络标识的情况下,若上述区块链标识集合仅用于记录处于可用状态的区块链网络的网络标识,且该网络标识集合中记录有区块链网络subnet1的网络标识,则网络接入层可以确定区块链网络subnet1为目标区块链网络且处于可用状态。或者,若上述区块链标识集合用于记录各个区块链网络的网络标识和工作状态,则网络接入层可以通过区块链网络subnet1的网络标识在网络标识集合中查询subnet1的工作状态,并在查询结果表明subnet1处于可用状态的情况下,确定subnet1为目标区块链网络且处于可用状态。进而,网络接入层可以将上述区块链消息分发至节点设备上部署的归属于subnet1的目标节点实例(即节点实例nodeA1)。
另外,如图6所示,上述网络接入层除包含接入模块之外,还可以包含分别对应于各个区块链网络的分发模块,如对应于区块链网络subnet0的分发模块0、对应于区块链网络subnet1的分发模块1和对应于区块链网络subnet2的分发模块2。其中,对应于任一区块链网络的分发模块可以理解为归属于该区块链网络的节点实例在网络接入层中的节点接口(如分发模块0可以认为是节点实例nodeA在网络接入层中的节点接口等),网络接入层可以通过各个接口模块相应的实现对各个区块链网络的管理、数据传输等。因此,在分发区块链消息时,网络接入层可以通过对应于目标区块链网络的目标分发模块将区块链消息分发至目标节点实例。
如前所述,上述网络接入层和节点实例可以运行在相同或不同的进程中。在一实施例中,可以在网络接入层所处的进程中运行区块链平台代码,从而在该进程中部署归属于区块链网络的节点实例。由于不涉及跨进程交互,所以该方式可以降低区块链网络的部署难度,从而提高部署效率。
在另一实施例中,网络接入层所在进程可以区别于节点实例所在的进程。例如,网络接入层处于第一进程,而各个区块链网络的节点实例均处于第二进程;再例如,网络接入层处于第一进程,而每个区块链网络的节点实例分别处于一个进程,比如区块链网络(主网)subnet0对应的主网节点实例处于第二进程、区块链网络(子网)subnet1对应的子网节点实例处于第三进程、区块链网络subnet2对应的子网节点实例处于第四进程等。此时,可以将网络接入层所处的进程设置为针对节点设备接收到的区块链消息的默认处理进程,以保证节点设备接收到的区块链消息能够被网络接入层统一分发。
进一步的,在上述网络接入层与目标区块链网络处于不同进程的情况下,网络接入层可以通过跨进程交互实现区块链消息的分发:网络接入层可以先确定目标节点实例所在的目标节点进程,并确定调用该目标节点进程的通信接口,然后通过该接口将区块链消息分发至所述目标节点实例,从而实现跨进程交互。
例如,在上述区块链消息为区块链交易的情况下,网络接入层将区块链交易分发至归属于目标区块链网络的目标节点实例后,该目标节点实例可以将接收到的区块链交易同步至归属于目标区块链网络的其他子网节点实例。进而,目标区块链网络中的各个子网节点实例可以采用前述的共识机制对该区块链交易进行共识,并在共识通过的情况下,由各个子网节点执行该区块链交易,并将相应的执行结果保存在相应的数据库中。其中,上述共识、执行及存储的具体过程可以参见前述实施例及相关技术中的记载,此处不再赘述。
实际上,因为各个区块链网络的当前工作状态并非固定(工作状态可能切换),所以通过在上述网络状态集合中查询目标网络标识时,可能存在网络标识集合表明目标区块链网络不可用的情况下。例如,可能查询不到目标网络标识,此时,实际上无法完成对区块链消息的分发;或者也可能网络标识集合中记录的目标区块链网络的工作状态为不可用状态,如目标区块链网络处于暂停状态或者终止状态,甚至已经被销毁等,此时即便分发区块链消息,目标区块链网络也无法实现对消息的有效处理。所以,此时网络接入层可以终止分发上述区块链消息,以避免对于区块链消息无效分发。当然,也可以预先设置重试机制,即在上述子网状态信息可能表明目标区块链网络处于不可用状态的情况下,可以等待一定时长后重新确定目标区块链网络,以保证子网状态信息在上述时长内发生更新的情况下,能够实现对区块链消息的有效分发及后续处理。
另外,节点设备中的网络接入层接收到的区块链消息,可能并非全部由消息发起方指定处理消息的目标区块链网络,因此区块链消息也可以不携带任何区块链网络的网络标识。因此,在接收到未携带任何区块链网络的网络标识的情况下,网络接入层可以将区块链消息分发至节点设备上部署的归属于默认区块链网络的节点实例,其中,该默认区块链网络可以包括前述的任一个过多个区块链网络,如可以为前述的区块链主网或任一区块链子网等。从而通过预设的默认区块链网络对未接待任何网络标识的区块链消息进行有效处理,一定程度上保证了该方案与相关技术中方案之间的兼容性。
如图6所示,网络接入层中的接入模块在接收到区块链消息后,可以通过网络管理模块确定该区块链消息对应的目标区块链网络。例如,网络管理模块可以先确定该消息中是否携带区块链网络的网络标识:若不存在任何区块链标识,网络管理模块可以确定当前的默认区块链网络,比如当默认区块链网络为区块链主网subnet0时,可以通过对应于subnet0的分发模块0将该消息发送至subnet0对应的主网节点实例nodeA。反之,若该区块链消息中携带区块链网络的网络标识,则网络接入层可以根据该网络标识对区块链消息进行分发。譬如当上述网络标识为区块链子网subnet1的网络标识时,可以通过对应于subnet1的分发模块1将该消息发送至subnet1对应的子网节点实例nodeA1;或者当上述网络标识为区块链网络subnet2的网络标识时,可以通过对应于subnet2的分发模块2将该消息发送至subnet2对应的节点实例nodeA2,不再赘述。
通过上述方式,接收到区块链消息的区块链节点可以对区块链消息进行相应的处理。例如,在区块链消息为区块链交易的情况下,可以对该区块链交易进行共识和/或执行该区块链交易;在区块链消息为共识消息的情况下,可以根据该共识消息完成针对某一交易的共识过程;在区块链消息为心跳消息的情况下,可以根据该心跳消息实现网络节点的保活处理;在区块链消息为区块数据的情况下,可以对该区块数据进行验证和/或存储等,不再赘述。从而通过上述过程,完成针对区块链交易的处理过程。
图7是一示例性实施例提供的一种设备的结构示意图。请参考图7,在硬件层面,该设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
图8是一示例性实施例提供的一种区块链消息的分发装置的框图。请参考图8,该装置可以应用于如图7所示的设备中,以实现本说明书的技术方案。其中,该区块链消息的分发装置应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层和分别归属于各个区块链网络的节点实例,且所述节点设备中的各个节点实例共用所述网络接入层对应的网络资源,所述装置可以包括:
集合获取单元801,使所述网络接入层获取网络标识集合,所述网络标识集合用于记录所述节点设备中已部署的节点实例分别归属的区块链网络的网络标识;
消息分发单元802,使所述网络接入层在接收到区块链消息的情况下,根据所述网络标识集合确定所述区块链消息对应的目标区块链网络,并将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链网络的目标节点实例。
可选的,所述网络标识集合用于记录处于可用状态的区块链网络的网络标识;或者,
所述网络标识集合中记录有各个区块链网络的运行状态,且所述区块链消息在所述目标区块链网络处于可用状态的情况下被分发至所述目标节点实例。
可选的,各区块链网络的网络标识由所述网络接入层分配。
可选的,所述网络接入层包含对应于各区块链网络的分发模块;所述网络接入层将所述区块链消息分发至目标节点实例,包括:
所述网络接入层通过对应于所述目标区块链网络的目标分发模块将所述区块链消息分发至目标节点实例。
可选的,所述消息分发单元802还用于:
在所述网络标识集合中存在所述区块链消息携带的目标网络标识的情况下,使所述网络接入层将所述目标网络标识所指示的区块链网络确定为所述目标区块链网络。
可选的,还包括:
终止分发单元803,在所述网络标识集合表明目标区块链网络不可用的情况下,使所述网络接入层终止分发所述区块链消息。
可选的,还包括:
默认分发单元804,在所述区块链消息未携带任何区块链网络的网络标识的情况下,使所述网络接入层将所述区块链消息分发至所述节点设备上部署的归属于默认区块链网络的区块链节点实例,所述默认区块链网络包括至少一个所述区块链网络。
可选的,所述区块链网络包括区块链主网和由所述区块链主网管理的区块链子网。
可选的,还包括:
子网管理单元805,使归属于所述区块链主网的主网节点实例在执行管理区块链子网的交易时,调用所述区块链主网上部署的子网管理合约以触发所述节点设备参与管理相应的区块链子网。
可选的,所述主网节点实例管理任一区块链子网,包括下述至少之一:
组建所述任一区块链子网;
销毁所述任一区块链子网;
更改所述任一区块链子网的网络配置信息;
切换所述任一区块链子网的工作状态;
切换所述任一区块链子网中的至少一个区块链节点实例的工作状态。
可选的,所述区块链主网为底层区块链网络;或者,所述区块链主网为其他区块链网络的子网。
可选的,所述网络接入层和节点实例处于同一进程。
可选的,所述网络接入层和节点实例处于不同进程,且所述网络接入层所处的进程被设置为针对所述节点设备接收到的区块链消息的默认处理进程。
可选的,所述消息分发单元802,还用于:
使所述网络接入层确定目标节点实例所在的目标节点进程,并通过调用所述目标节点进程的通信接口,将所述区块链消息分发至所述目标节点实例。
可选的,所述网络接入层对应的网络资源,包括:
IP地址和/或端口号。
可选的,所述区块链消息包括下述之一:
区块链交易、共识消息、心跳消息、区块数据。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组建、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器(RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (16)
1.一种区块链消息的分发方法,应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层和分别归属于各个区块链网络的节点实例,且所述节点设备中的各个节点实例共用所述网络接入层对应的网络资源,所述网络接入层对应的网络资源包括IP地址和/或端口号,所述区块链网络包括区块链主网和由所述区块链主网管理的区块链子网,所述方法包括:
所述网络接入层获取网络标识集合,所述网络标识集合用于记录所述节点设备中已部署的节点实例分别归属的区块链网络的网络标识;
所述网络接入层在接收到携带有目标网络标识的区块链消息的情况下,根据所述网络标识集合确定所述区块链消息对应的目标区块链网络,并将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链网络的目标节点实例;
归属于所述区块链主网的主网节点实例在执行管理区块链子网的交易时,调用所述区块链主网上部署的子网管理合约以触发所述节点设备参与管理相应的区块链子网。
2.根据权利要求1所述的方法,
所述网络标识集合用于记录处于可用状态的区块链网络的网络标识;或者,
所述网络标识集合中记录有各个区块链网络的运行状态,且所述区块链消息在所述目标区块链网络处于可用状态的情况下被分发至所述目标节点实例。
3.根据权利要求1所述的方法,各区块链网络的网络标识由所述网络接入层分配。
4.根据权利要求1所述的方法,所述网络接入层包含对应于各区块链网络的分发模块;所述网络接入层将所述区块链消息分发至目标节点实例,包括:
所述网络接入层通过对应于所述目标区块链网络的目标分发模块将所述区块链消息分发至目标节点实例。
5.根据权利要求1所述的方法,所述根据所述网络标识集合确定所述区块链消息对应的目标区块链网络,包括:
在所述网络标识集合中存在所述目标网络标识的情况下,所述网络接入层将所述目标网络标识所指示的区块链网络确定为所述目标区块链网络。
6.根据权利要求5所述的方法,还包括:
在所述网络标识集合表明目标区块链网络不可用的情况下,所述网络接入层终止分发所述区块链消息。
7.根据权利要求1所述的方法,还包括:
在所述区块链消息未携带任何区块链网络的网络标识的情况下,所述网络接入层将所述区块链消息分发至所述节点设备上部署的归属于默认区块链网络的区块链节点实例,所述默认区块链网络包括至少一个所述区块链网络。
8.根据权利要求1所述的方法,所述主网节点实例管理任一区块链子网,包括下述至少之一:
组建所述任一区块链子网;
销毁所述任一区块链子网;
更改所述任一区块链子网的网络配置信息;
切换所述任一区块链子网的工作状态;
切换所述任一区块链子网中的至少一个区块链节点实例的工作状态。
9.根据权利要求1所述的方法,所述区块链主网为底层区块链网络;或者,所述区块链主网为其他区块链网络的子网。
10.根据权利要求1所述的方法,所述网络接入层和节点实例处于同一进程。
11.根据权利要求1所述的方法,所述网络接入层和节点实例处于不同进程,且所述网络接入层所处的进程被设置为针对所述节点设备接收到的区块链消息的默认处理进程。
12.根据权利要求11所述的方法,所述网络接入层将所述区块链消息分发至目标节点实例,包括:
所述网络接入层确定目标节点实例所在的目标节点进程,并通过调用所述目标节点进程的通信接口,将所述区块链消息分发至所述目标节点实例。
13.根据权利要求1所述的方法,所述区块链消息包括下述之一:
区块链交易、共识消息、心跳消息、区块数据。
14.一种区块链消息的分发装置,应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层和分别归属于各个区块链网络的节点实例,且所述节点设备中的各个节点实例共用所述网络接入层对应的网络资源,所述网络接入层对应的网络资源包括IP地址和/或端口号,所述区块链网络包括区块链主网和由所述区块链主网管理的区块链子网,所述装置包括:
集合获取单元,使所述网络接入层获取网络标识集合,所述网络标识集合用于记录所述节点设备中已部署的节点实例分别归属的区块链网络的网络标识;
消息分发单元,使所述网络接入层在接收到携带有目标网络标识的区块链消息的情况下,根据所述网络标识集合确定所述区块链消息对应的目标区块链网络,并将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链网络的目标节点实例;
子网管理单元,使归属于所述区块链主网的主网节点实例在执行管理区块链子网的交易时,调用所述区块链主网上部署的子网管理合约以触发所述节点设备参与管理相应的区块链子网。
15.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-13中任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-13中任一项所述方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110611550.7A CN113259462B (zh) | 2021-06-02 | 2021-06-02 | 区块链消息的分发方法及装置 |
CN202111406519.6A CN113923227A (zh) | 2021-06-02 | 2021-06-02 | 区块链消息的分发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110611550.7A CN113259462B (zh) | 2021-06-02 | 2021-06-02 | 区块链消息的分发方法及装置 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111406519.6A Division CN113923227A (zh) | 2021-06-02 | 2021-06-02 | 区块链消息的分发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113259462A CN113259462A (zh) | 2021-08-13 |
CN113259462B true CN113259462B (zh) | 2021-10-15 |
Family
ID=77185886
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110611550.7A Active CN113259462B (zh) | 2021-06-02 | 2021-06-02 | 区块链消息的分发方法及装置 |
CN202111406519.6A Pending CN113923227A (zh) | 2021-06-02 | 2021-06-02 | 区块链消息的分发方法及装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111406519.6A Pending CN113923227A (zh) | 2021-06-02 | 2021-06-02 | 区块链消息的分发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN113259462B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115567541B (zh) * | 2022-12-01 | 2023-03-10 | 杭州蚂蚁酷爱科技有限公司 | 区块链网络、节点集合的维护方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107453896A (zh) * | 2017-06-27 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 多重区块链网络数据处理方法、装置及服务器 |
CN110677462A (zh) * | 2019-09-09 | 2020-01-10 | 上海共链信息科技有限公司 | 多区块链网络的访问处理方法、系统、装置及存储介质 |
CN111125187A (zh) * | 2019-11-29 | 2020-05-08 | 立旃(上海)科技有限公司 | 基于区块链的数据管理方法及装置 |
CN112887160A (zh) * | 2021-04-29 | 2021-06-01 | 杭州链城数字科技有限公司 | 区块链一体机及其多节点部署方法、装置、存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107911421B (zh) * | 2017-10-30 | 2020-05-15 | 上海点融信息科技有限责任公司 | 用于配置区块链中跨网络通信的方法、设备和计算机存储介质 |
WO2019072271A2 (en) * | 2018-11-16 | 2019-04-18 | Alibaba Group Holding Limited | DOMAIN NAME DIAGRAM FOR CROSS CHAIN INTERACTIONS IN BLOCK CHAIN SYSTEMS |
CN110020945B (zh) * | 2018-11-27 | 2020-10-30 | 创新先进技术有限公司 | 一种基于多个区块链网络的数据读取方法及系统 |
CN109951537B (zh) * | 2019-03-06 | 2021-09-10 | 上海共链信息科技有限公司 | 一种面向区块链的负载均衡分发方法 |
CN110266644B (zh) * | 2019-05-20 | 2021-04-06 | 创新先进技术有限公司 | 结合代码标注与交易类型的收据存储方法和节点 |
CN112560078A (zh) * | 2020-08-05 | 2021-03-26 | 北京京东振世信息技术有限公司 | 区块链数据处理方法、装置、设备及介质 |
CN111934996B (zh) * | 2020-09-25 | 2021-01-12 | 支付宝(杭州)信息技术有限公司 | 消息传输方法及装置 |
CN111934999B (zh) * | 2020-09-25 | 2021-01-22 | 支付宝(杭州)信息技术有限公司 | 消息传输方法及装置 |
-
2021
- 2021-06-02 CN CN202110611550.7A patent/CN113259462B/zh active Active
- 2021-06-02 CN CN202111406519.6A patent/CN113923227A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107453896A (zh) * | 2017-06-27 | 2017-12-08 | 阿里巴巴集团控股有限公司 | 多重区块链网络数据处理方法、装置及服务器 |
CN110677462A (zh) * | 2019-09-09 | 2020-01-10 | 上海共链信息科技有限公司 | 多区块链网络的访问处理方法、系统、装置及存储介质 |
CN111125187A (zh) * | 2019-11-29 | 2020-05-08 | 立旃(上海)科技有限公司 | 基于区块链的数据管理方法及装置 |
CN112887160A (zh) * | 2021-04-29 | 2021-06-01 | 杭州链城数字科技有限公司 | 区块链一体机及其多节点部署方法、装置、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113259462A (zh) | 2021-08-13 |
CN113923227A (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113067904B (zh) | 组建区块链子网的方法和区块链系统 | |
CN113067900B (zh) | 智能合约的部署方法及装置 | |
CN113067897B (zh) | 跨链交互方法及装置 | |
CN113067894B (zh) | 节点退出区块链子网的方法 | |
CN113067895B (zh) | 组建区块链子网的方法和区块链系统 | |
CN113098983B (zh) | 基于智能合约的任务执行方法及装置 | |
CN113067914B (zh) | 一种分配子网标识的方法、装置、电子设备和存储介质 | |
CN113259457B (zh) | 区块链子网的信息同步方法及装置 | |
CN113259120B (zh) | 同步节点信息列表的方法 | |
CN113098982B (zh) | 区块链消息的传输方法及装置 | |
CN113259117B (zh) | 同步节点信息列表的方法 | |
CN113067896B (zh) | 区块链子网中加入节点的方法和区块链系统 | |
CN113259464B (zh) | 组建区块链子网的方法和区块链系统 | |
CN113055190B (zh) | 针对客户端的访问控制方法 | |
CN113259118B (zh) | 同步节点信息列表的方法 | |
CN113259462B (zh) | 区块链消息的分发方法及装置 | |
CN113259119B (zh) | 区块链消息的分发方法及装置 | |
CN113259236B (zh) | 区块链网络间的交易转发方法 | |
CN113259237B (zh) | 区块链网络间的交易转发方法 | |
CN113259466B (zh) | 区块链子网运行状态的控制方法和区块链系统 | |
CN115086338A (zh) | 区块链子网的组建方法及装置 | |
CN113326290B (zh) | 跨网查询控制方法 | |
CN113098984B (zh) | 基于注册机制形成多层区块链系统的方法和区块链系统 | |
CN114363349B (zh) | 区块链子网的启动方法及装置 | |
CN114363162A (zh) | 区块链日志的生成方法及装置、电子设备、存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |