CN113259119B - 区块链消息的分发方法及装置 - Google Patents

区块链消息的分发方法及装置 Download PDF

Info

Publication number
CN113259119B
CN113259119B CN202110611544.1A CN202110611544A CN113259119B CN 113259119 B CN113259119 B CN 113259119B CN 202110611544 A CN202110611544 A CN 202110611544A CN 113259119 B CN113259119 B CN 113259119B
Authority
CN
China
Prior art keywords
subnet
blockchain
network
block chain
node
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
Application number
CN202110611544.1A
Other languages
English (en)
Other versions
CN113259119A (zh
Inventor
夏凝
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alipay Hangzhou Information Technology Co Ltd
Original Assignee
Alipay Hangzhou Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Alipay Hangzhou Information Technology Co Ltd filed Critical Alipay Hangzhou Information Technology Co Ltd
Priority to CN202110611544.1A priority Critical patent/CN113259119B/zh
Publication of CN113259119A publication Critical patent/CN113259119A/zh
Application granted granted Critical
Publication of CN113259119B publication Critical patent/CN113259119B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书一个或多个实施例提供一种区块链消息的分发方法及装置。该方法应用于运行有区块链平台代码的节点设备,该区块链平台代码在节点设备中形成网络接入层、区块链主网中的主网节点实例和区块链子网中的子网节点实例,该方法包括:网络接入层获取主网节点实例处部署的子网管理合约所维护的子网状态信息,该子网状态信息用于记录基于所述区块链主网组建的各个区块链子网的状态;网络接入层在接收到针对目标区块链子网的区块链消息的情况下,若子网状态信息表明目标区块链子网处于可用状态,则将区块链消息分发至节点设备上部署的归属于所述目标区块链子网的目标子网节点实例。

Description

区块链消息的分发方法及装置
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种区块链消息的分发方法及装置。
背景技术
区块链技术构建在传输网络(例如点对点网络)之上。区块链网络中的节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。在一些区块链网络中,部分节点有时存在实现小范围交易的需求,以避免其他节点获得这些交易及其相关数据,为此,可以在已有区块链网络(即区块链主网)的基础上组建新的区块链网络(即区块链子网)。
因此,归属于区块链主网的主网节点实例所在的节点设备中,还可以部署有归属于区块链子网的子网节点实例,即同一节点设备同时参与区块链主网和区块链子网。此时,如何将节点设备接收到的区块链消息准确分发至相应的区块链网络,是实现节点设备正常工作亟待解决的问题。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种区块链消息的分发方法及装置。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种区块链消息的分发方法,应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层、区块链主网中的主网节点实例和区块链子网中的子网节点实例,所述方法包括:
所述网络接入层获取所述主网节点实例处部署的子网管理合约所维护的子网状态信息,所述子网状态信息用于记录基于所述区块链主网组建的各个区块链子网的状态;
所述网络接入层在接收到针对目标区块链子网的区块链消息的情况下,若所述子网状态信息表明所述目标区块链子网处于可用状态,则将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链子网的目标子网节点实例。
根据本说明书一个或多个实施例的第二方面,提出了一种区块链消息的分发装置,应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层、区块链主网中的主网节点实例和区块链子网中的子网节点实例,所述装置包括:
信息获取单元,使所述网络接入层获取所述主网节点实例处部署的子网管理合约所维护的子网状态信息,所述子网状态信息用于记录基于所述区块链主网组建的各个区块链子网的状态;
消息分发单元,使所述网络接入层在接收到针对目标区块链子网的区块链消息的情况下,若所述子网状态信息表明所述目标区块链子网处于可用状态,则将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链子网的目标子网节点实例。
根据本说明书一个或多个实施例的第三方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面所述的方法。
根据本说明书一个或多个实施例的第四方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面所述方法的步骤。
附图说明
图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算法等。
由于区块链网络的去中心化特性,使得区块链网络中的所有区块链节点均会维护相同的区块数据,无法满足部分节点的特殊需求。以联盟链为例,所有联盟成员可以组成一区块链网络,所有联盟成员在该区块链网络中分别存在对应的区块链节点,并可以通过对应的区块链节点获得该区块链网络上发生的所有交易和相关数据。但在一些情况下,可能存在部分联盟成员希望完成一些具有保密需求的交易,这些联盟成员既希望这些交易能够在区块链上存证或借助于区块链技术的其他优势,又能够避免其他联盟成员查看到这些交易和相关数据。虽然这些联盟成员可以额外组建一新的区块链网络,其建立方式与上述包含所有联盟成员的区块链网络类似,但是从头开始建立一条新的区块链网络需要消耗大量的资源,且无论是该区块链网络的建立过程或是建成后的配置过程都非常耗时。联盟成员之间的需求往往是临时的或者具有一定的时效性,使得新建的区块链网络很快就会由于需求消失而失去存在的意义,从而进一步增加了上述区块链网络的建链成本。而联盟成员之间的需求经常会变化,而每一需求所对应的联盟成员也往往不同,因而每当联盟成员发生变化时就可能需要组建一新的区块链网络,从而造成资源和时间的大量浪费。
为解决上述技术问题,节点设备可以将已组建的区块链网络作为区块链主网,并通过区块链主网中部署的智能合约(即下述的子网管理合约)在该区块链主网的基础上组建区块链子网。由于区块链子网是在区块链主网的基础上所建立,使得区块链子网的组建过程相比于完全独立地组建一条区块链网络,所消耗的资源和所需的耗时等都极大地降低,灵活性极高。
在此基础上,节点设备中的区块链主网和区块链子网可以共用节点设备中的存储、计算、网络等设备资源,所以节点设备需要对接收到的区块链消息进行合理的分发。本说明书可以通过部署于区块链主网(实际为主网节点实例)中的子网管理合约所维护的各个区块链子网的子网状态信息,实现对区块链消息的分发。正因为通过上述方式组建的区块链子网可以与区块链主网共用设备资源,并且节点设备可以通过子网管理合约所维护的子网状态信息对区块链消息进行分发,所以相对于各个子网单独获取自身所需处理的区块链消息的相关技术,本方案能够实现对区块链消息的高效分发,且便于实现对区块链子网的高效管理。以下结合图4对本说明书的区块链子网的组建方案进行说明。
请参见图4,图4是一示例性实施例提供的一种区块链消息的分发方法的流程图。如图4所示,该方法应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层、区块链主网中的主网节点实例和区块链子网中的子网节点实例,该方法可以包括以下步骤:
步骤402,所述网络接入层获取所述主网节点实例处部署的子网管理合约所维护的子网状态信息,所述子网状态信息用于记录基于所述区块链主网组建的各个区块链子网的状态。
首先需要说明的是,本说明书所述的节点设备中运行有区块链平台代码,节点设备运行该代码的过程中即在本地形成网络接入层、区块链主网中的主网节点实例和区块链子网中的子网节点实例。其中,网络接入层用于统一管理节点设备中的IP(InternetProtocol Address,互联网协议地址)、接口(Port)等网络资源,以及对节点设备所接收的区块链消息进行统一分发,从而有助于提升区块链消息的分发及处理效率。
进一步的,上述主网节点实例中预先部署有子网管理合约,该合约可以为创世合约或***合约,可以用于组建区块链子网(即创建归属于区块链子网的子网节点实例)。而且,该合约还用于维护基于上述区块链主网创建的区块链子网的子网状态信息,从而便于节点设备通过子网状态信息及时获知各个区块链子网的当前状态。
在一实施例中,主网节点实例可以通过执行交易的方式组建上述区块链子网。其中,组建区块链子网的交易(下称组网交易)可以包括调用合约的交易,该交易中可以指明被调用的智能合约的地址、调用的方法和传入的参数等。进一步的,调用的上述合约可以为区块链子网的创世合约或部署在区块链主网中的***合约,调用的方法可以为组建区块链子网的方法,传入的参数可以包括针对区块链平台代码的属性配置信息,如代码版本号、是否需要共识、共识算法类型和/或区块大小等,本说明书并不对此进行限制。
其中,组网交易所调用的合约可以为主网节点实例中部署的上述子网管理合约。从而主网节点实例在执行组网交易时,可以调用该子网管理合约以触发节点设备参与组建相应的区块链子网。另外,在组建上述区块链子网的过程中,被组建的区块链子网的状态可以被添加至上述子网状态信息中,从而在该子网状态信息中记录新组建的区块链子网的子网状态。相应的,响应于对上述合约的执行,节点设备可以拉起一进程并在该进程中执行区块链平台代码,或者也可以在已拉起的进程(如上述主网节点实例所在的进程)中运行该代码,从而在相应进程中创建子网节点实例,以完成区块链子网的组建。通过调用上述子网管理合约时传入的属性配置信息,可以保证该区块链子网是基于上述区块链主网所组建的。
当然,组建区块链子网的交易也可以并非是调用智能合约的交易,使得不支持智能合约的区块链网络也可以实现本说明书的技术方案,从而在区块链主网的基础上快捷地组建出区块链子网。例如,可以预先定义一组网交易类型标识,当交易包含该组网交易类型标识时,就表明该交易用于组建新的区块链子网,即该交易为组网交易。区块链平台代码可以包含相关的用于组建区块链子网的处理逻辑,使得运行该区块链平台代码的主网节点实例在执行交易时,如果发现该交易中包含上述的组网交易类型标识,且参与组建所述区块链子网的节点成员的身份信息被包含于该交易中的配置信息中,可以基于上述处理逻辑来触发节点设备生成包含该配置信息的创世块并启动区块链节点,由该区块链节点加载该创世块,以形成为区块链子网中的子网节点。
基于区块链主网来组建区块链子网的优势之一,就是由于创建子网节点实例的节点设备上已经部署了主网节点实例,因而可以将主网节点实例所使用的区块链平台代码复用在子网节点实例上,免去了区块链平台代码的重复部署,极大地提高了区块链子网的组建效率。
在上述执行交易以组建区块链子网的实施例中,组网交易可由区块链主网的管理员发起,即仅允许管理员在区块链主网的基础上组建区块链子网,而避免将区块链消息的分发权限开放给普通用户,以防止由此导致的安全性问题。在一些情况下,也可以允许区块链主网的普通用户发起上述组网交易,以满足普通用户的组网需求,使得普通用户在管理员不便于发起交易的情况下依然能够快捷地组建区块链子网。
以图5所示为例,区块链主网为subnet0,该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上创建的区块链子网。可见,区块链主网与区块链子网实际上是相对概念,同一区块链网络在一些情况下可以为区块链主网、另一些情况下可以为区块链子网。
上述主网节点和子网节点可以对应于同一个节点成员,比如在联盟链场景下对应于同一联盟链成员。因为主网节点属于区块链主网、子网节点属于区块链子网,使得该区块链成员可以分别参与到区块链主网和区块链子网的交易中。例如,区块链主网nodeA、区块链子网nodeA1和区块链子网nodeA2共同对应的节点成员可以分别参与到subnet0、subnet1和subnet2的交易中。并且,由于区块链主网和区块链子网属于相互独立的两个区块链网络,使得主网节点生成的区块与子网节点生成的区块分别存入所述节点设备上的不同存储,比如该存储可以为数据库,从而实现了主网节点与子网节点分别使用的存储之间的相互隔离,因而区块链子网所产生的数据仅会在区块链子网的节点成员之间同步,而仅参与了区块链主网的区块链成员无法获得区块链子网上产生的数据,实现了区块链主网与区块链子网之间的数据隔离,满足了部分节点成员(即参与区块链子网的节点成员)的交易需求。
可见,主网节点和子网节点是在逻辑上划分出来的区块链节点,而从物理设备的角度来说,相当于上述部署了主网节点和子网节点的节点设备同时参与了区块链主网和区块链子网。由于区块链主网与区块链子网之间相互独立,使得这两个区块链网络的身份体系也相互独立,因而即便主网节点和子网节点可以采用完全相同的公钥,仍然应当将两者视为不同的区块链节点。譬如在图5中,subnet0中的nodeA相当于主网节点,而部署该nodeA的节点设备生成了属于subnet1的nodeA1,该nodeA1相当于子网节点。可见,由于身份体系相互独立,所以即便子网节点所采用的公钥区别于主网节点,也不影响本说明书方案的实施。
当然,区块链子网的节点成员并不一定只是区块链主网的部分节点成员。在一些情况下,区块链子网的节点成员可以与区块链主网的节点成员完全一致,此时所有的区块链成员都可以获得区块链主网和区块链子网上的数据,但是区块链主网与区块链子网所产生的数据依然可以相互隔离,比如可以通过在区块链主网上实现一类业务、在区块链子网上实现另一类业务,从而可以使得这两类业务分别产生的业务数据之间相互隔离。
如图6所示,节点设备中通过运行区块链平台代码形成网络接入层,以及包括主网节点nodeA、子网节点nodeA1和子网节点nodeA2在内的区块链节点。图中主网节点nodeA应当视为前述的主网节点实例,子网节点nodeA1和子网节点nodeA2应当视为前述的子网节点实例,特此说明。其中,实线为区块链消息的分发路径,而虚线为网络接入层通过子网管理合约对区块链子网进行管理的相关信息传输路径。
由图6可见,此时节点设备中组建了两层区块链网络(一层区块链主网和一层区块链子网)。进一步的,还可以基于子网节点nodeA1进一步生成子网节点nodeA11,该节点所归属的区块链子网subnet11即相当于在区块链子网subnet1的基础上组建的区块链子网。此时,区块链主网subnet0位于第一层、区块链子网subnet1位于第二层、区块链子网subnet11位于第三层,即在节点设备中组建了三层区块链网络。当然,还可以通过类似过程在节点设备中组建四层甚至更多层区块链网络,不再赘述。
上述各个区块链节点中可以包含共识模块、计算模块和存储模块,以供区块链节点实现交易共识、数据计算、数据存储等基本功能。当然,任一区块链节点内还可以包含其他功能模块,以便该节点对应的节点成员能够通过节点中的功能模块实现相应的功能,本说明书实施例对于任一区块链节点中所包含具体功能模块并不进行限制。以共识模块为例,任一区块链网络中的某些区块链节点可能不参与交易共识,因此,这部分区块链节点中可以不包含共识模块,而区块链网络中参与交易共识的部分区块链节点则包含该模块。
如前所述,创建不同区块链节点的区块链平台代码可以复用,所以上述不同区块链节点所包含的相同模块可以对应于同一段区块链平台代码。以计算模块为例,假设nodeA、nodeA1和nodeA2均需要实现相同的计算功能,则三者可以复用同一段用以实现该计算功能的区块链平台代码(下称计算代码)。其中,上述各个节点可以分别使用该计算代码形成供自身计算过程使用的计算模块,即nodeA、nodeA1和nodeA2分别包含自己的计算模块,且三者的计算模块均通过上述计算代码生成。或者,也可以根据上述计算代码生成一个计算模块,供nodeA、nodeA1和nodeA2共同使用,如三者可以分时独立调用该模块进行计算,从而由各个节点共享该计算模块,避免了计算模块的重复生成,进一步提升了节点部署及代码执行效率。
另外,主网节点nodeA中预先部署有前述的子网管理合约,该合约除了具有组建区块链子网、管理区块链子网等功能外,还用于维护针对区块链子网的子网状态信息,以便于网络接入层获取该信息用于分发区块链消息。其中,该子网状态信息可以用于反映节点设备中各个区块链子网(如nodeA1所在的subnet1和nodeA2所在的subnet2)的当前工作状态。
上述网络接入层包括接入模块和网络管理模块,其中,接入模块用于配置节点设备的IP地址和端口等网络参数,并集中接收其他节点发送至该节点设备的区块链消息;网络管理模块用于对节点设备中的区块链网络进行管理,并根据获取到的主网节点nodeA维护的子网状态信息,确定相应区块链子网当前是否处于可用状态,以便实现对区块链消息的分发。
另外,主网节点实例在执行上述组网交易以组建区块链子网时,可以先向上述网络管理模块发送通知消息,以由网络管理模块为待组建的区块链子网分配子网标识。进而,网络管理模块一方面可以将该子网标识维护在本地,另一方面可以将该子网标识发送至主网节点实例和交易发起方:主网节点实例将该子网标识写入到新组建的该区块链子网的创世块中,从而生成该子网节点实例对应的区块链子网;交易发起方将该子网标识记录在其生成的需要该区块链子网处理的区块链消息中,以便网络接入层根据本地维护的上述子网标识将该区块链消息准确分发至新组建的上述区块链子网的子网节点实例。
当然,网络接入层也可以在确定其接收到的任一区块链交易为组网交易时,预分配一个子网标识,并将该子网标识与该组网交易关联发送至区块链主网的主网节点实例。从而主网节点实例可以在执行该组网交易时,使用接收到的上述子网标识组建区块链子网(即组建对应于该子网标识的区块链子网),而网络接入层在确定区块链子网被成功组建的情况下,一方面可以将预分配的上述子网标识记录在本地,另一方面可以将该子网标识发送至交易发起方:该交易发起方可以将该子网标识记录在其生成的需要该区块链子网处理的区块链消息中,而网络接入层可以根据本地维护的上述子网标识将接收到的该区块链消息准确分发至新组建的上述区块链子网的子网节点实例。
当然,上述实施例中,上述子网标识也可以由组建区块链子网的各个主网节点进行共识,并在共识通过后创建相应的区块链子网。而且,各个主网节点所在节点设备中的网络接入层均可以将该子网标识发送至相应的节点成员,以便参与组建该区块链子网的各个子网节点所对应的节点成员,均能够获知该区块链子网的子网标识,以便后续分发需要该区块链子网进行处理的区块链消息。
在一实施例中,主网节点实例可以通过执行交易的方式,调用上述子网管理合约管理区块链子网。例如,与执行上述组网交易类似的,主网节点实例在执行管理区块链子网的交易(下称管理交易)时,可以调用上述子网管理合约以触发节点设备参与管理相应的区块链子网,并使该子网管理合约更新所维护的上述子网状态信息。其中,上述管理交易可以指明被调用的智能合约的地址、调用的方法和传入的参数等。进一步的,被调用的合约可以为上述子网管理合约,调用的方法可以为管理区块链子网的方法,传入的参数可以包括针对区块链平台代码的属性配置信息,如代码版本号、是否需要共识、共识算法类型和/或区块大小等,本说明书并不对此进行限制。可以理解的是,通过调用管理交易时传入的上述参数,可以同时对节点设备中组建的多个区块链子网进行集中管理,从而有助于提升区块链子网的管理效率。
在一实施例中,主网节点实例可以对区块链子网实施多种形式的管理。例如,在联盟链场景下,部分(或全部)联盟链成员在需要共同参与某项事务时,可以在区块链主网subnet0的基础上组建区块链子网subnet1,新组建的subnet1的工作状态可以默认为开启状态,以便subnet1对应的联盟链成员尽快参与相关事务。当然,为保证对子网使用权限的管理,也可以由subnet1的部分(如管理员等)或全部成员将该子网的工作状态设置为开启状态,不再赘述。进一步的,在相关成员参与上述事务的过程中,假如出现处理故障等突发状况,subnet1可以暂停当前事务,从而其工作状态更换为暂停状态。而且,因为联盟链成员需要处理的事务往往具有一定的时限要求,如需要在预先指定时间段内执行事务等,所以在预设时间段内完成上述事务后,可以将subnet1的工作状态设置为终止状态,以便后续直接使用该subnet1执行其他事务,从而在后续执行其他事务时无需重新组建新的区块链子网,提升事务的执行效率。当然,在上述事务为一次性事务或者subnet1的各个参与方不再需要共同执行事务的情况下,也可以直接销毁上述subnet1,以便减少区块链主网需要维护的子网个数,提升子网管理效率。可见,主网节点实例可以通过上述子网管理合约实现将任一区块链子网的工作状态切换至开启状态、暂停状态或终止状态,或者也可以直接销毁某一区块链子网,从而实现对区块链子网的管理。
可见,节点设备在执行组网交易或者管理交易时,均可能导致节点设备中区块链子网的工作状态发生变化。另外,也不排除节点设备在执行其他交易时或者其他因素导致区块链子网的工作状态发生变化的可能,即区块链子网的工作状态的变化可能存在多种可能,本说明书对此并不进行限制。
在一实施例中,网络接入层可以主动监听节点设备中各个区块链子网的工作状态变化,并在监测到至少一个区块链子网的状态发生变化的情况下,获取相应的子网状态信息。如前所述,主网节点实例在执行组网交易或者管理交易时,可以调用上述子网管理合约组建或管理区块链子网,并在交易执行后生成相应的收据,以用于记录与执行该智能合约相关的信息。这样,可以通过查询交易的收据来获得合约执行结果的相关信息。其中,上述合约执行结果可以表现为收据中的事件,因此网络接入层可以通过事件机制监测区块链子网的状态变化。
例如,网络接入层可以监听调用子网管理合约的交易执行后所产生事件的事件内容,以获知区块链子网的状态变化。以Subnet0上的节点nodeA~nodeE执行调用Subnet合约中quitsubnet()方法的交易为例。在交易通过共识后,nodeA~nodeE分别执行quitsubnet()方法并传入配置信息,得到相应的执行结果。
合约的执行结果可以包括所述配置信息,该执行结果可以处于前文所述的收据中,该收据中可以包含与执行quitsubnet()方法相关的event,即退网事件。退网事件的topic可以包含预定义的退网事件标识,以区别于其他的事件。譬如在与执行quitsubnet()方法相关的event中,topic的内容为关键词subnet,且该关键词区别于其他方法所产生event中的topic。那么,nodeA~nodeE通过监听生成的收据中各个event所含的topic,可以在监听到包含关键词subnet的topic的情况下,确定监听到与执行quitsubnet()方法相关的event,即退网事件。例如,收据中的event如下:
Event:
[topic:other][data]
[topic:quitsubnet][data]
......
那么,nodeA~nodeE在监听到第1条event时,由于所含topic的内容为other,确定该event与quitsubnet()方法无关;以及,nodeA~nodeE在监听到第2条event时,由于所含topic的内容为quitsubnet,确定该event与quitsubnet()方法相关,并进而读取该event对应的data字段,该data字段包含响应子网的退网信息。
或者,网络接入层也可以基于日志预先订阅事件,从而在执行上述子网管理合约产生的事件被写入日志后,由节点设备中运行的事件通知中心及时通知网络接入层,从而网络接入层可以监测到区块链子网的状态变化。进而,网络接入层可以获取上述状态变化发生后的区块链子网的子网状态信息。通过上述事件监听或事件订阅的方式,网络接入层能够及时、准确的监测到区块链子网的状态变化,从而实现对子网状态信息的及时获取。当然,主网节点实例还可以通过事件机制之外的其他方式告知网络接入层,如在主网节点实例本地部署有状态检测模块的情况下,其可以通过该模块周期性检测子网状态,并在检测到状态发生变化时向网络接入层发送提醒消息,不再赘述。
在一实施例中,网络接入层可以从子网管理合约对应的存储中读取子网状态信息。其中,上述存储可以为内存或者数据库,相应的,网络接入层获取读取上述子网状态信息的方式也有所不同。在上述存储为前述子网管理合约对应的数据库的情况下,主网节点可以在每次确定子网状态发生变化的情况下,即将更新后的子网状态信息保存在该数据库中。从而,网络接入层可以直接从该数据库中获取子网状态信息,并将获取到的信息保存在节点设备的内存中,以便后续分发节点区块链消息时使用。
或者,在上述存储为内存的情况下,子网状态信息可以在主网节点实例每生成一个区块后被存入内存中,以供网络接入层读取。如图6所示,主网节点nodeA每生成一个区块,即确定节点设备中各个子网节点(nodeA1和nodeA2)所属的区块链子网的状态是否发生变化,并在确定变化的情况下,根据该状态变化更新当前的子网状态信息,将更新后的子网状态信息保存在节点设备的内存中。可见,上述子网状态信息直接保存在节点设备的内存中,省去了网络接入层从数据库读取信息的过程,因此网络接入层可以在分发区块链消息时直接从内存中读取上述信息,有助于进一步加快区块链消息的分发速度。
需要说明的是,在网络接入层获取子网状态信息的上述过程中,网络接入层可以获取全部区块链子网的子网状态信息,也可以仅获取发生变化的部分区块链子网的子网状态信息。例如,在子网管理合约对应的子网状态信息被保存在上述数据库中的情况下,若在子网节点nodeA1的状态变化后,则该数据库中所保存的子网状态信息会被根据上述变化而更新,因此相对于当前时刻节点设备的内存中保存(当前时刻之前已经被网络接入层获取)的子网状态信息,数据库中保存的子网状态信息中关于nodeA1的部分有所不同。所以此时网络接入层可以仅从数据库中读取关于nodeA1的部分用于更新内存中已保存的相应部分,以减少不必要数据的读取,提升子网状态信息的获取效率。当前,网络接入层也可以从数据库中读取全部的子网状态信息,并使用读取到的信息整体替换内存中保存的子网状态此信息,以实现子网状态信息的全面更新,避免更新遗漏。
另外,为进一步减少获取子网状态信息的频次,网络接入层还可以在接收到区块链消息的情况下,临时获取上述子网状态信息。当然,在方案应用中,可以根据实际情况采用前述的检测子网状态以提前获取或者在接收到区块链消息后获取的方式,以平衡子网状态信息的时效性和区块链消息的处理效率,本说明书对此并不进行限制。
步骤404,所述网络接入层在接收到针对目标区块链子网的区块链消息的情况下,若所述子网状态信息表明所述目标区块链子网处于可用状态,则将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链子网的目标子网节点实例。
首先需要说明的是,本说明书实施例中待分发的区块链消息,可以有多种可能,例如可以为用户设备或其他节点设备发送至上述节点设备的区块链消息,也可以为区块链节点之间在共识过程中产生的共识消息,还可以为区块链网络中的节点设备之间发送的用于保活的心跳消息等,本说明书实施例对此并不继进行限制。
如前所述,节点设备接收到的区块链消息,均由节点设备中的网络接入层统一分发。网络接入层接收到其他节点或设备发送的针对某一区块链子网的区块链消息的情况下,可以根据预先(在接收区块链消息前)或临时(在接收区块链消息后)获取的子网状态信息确定该区块链子网(即区块链消息对应的目标区块链子网)是否处于可用状态,并在处于可用状态的情况下将该区块链消息分发至目标区块链子网,以便目标区块链子网对该消息进行处理。
其中,区块链消息中可以携带某一区块链子网的子网标识。以区块链交易为例,在联盟链场景下,对于共同处理某项事务的多个联盟链成员(相当于多个节点成员)中的任一联盟链成员,其可以根据上述各个联盟链成员的实际身份确定各个联盟链成员共同参与的区块链子网(即目标区块链子网),以用于处理该项事务对应的区块链交易。进而,上述任一联盟链成员可以确定目标区块链子网的目标子网标识,并将该目标子网标识包含在自身所对应设备生成的与上述事务相关的区块链交易中,以便节点设备中的网络接入层在接收到该区块链交易后,按照其中包含的目标子网标识将该目标区块链交易分发至节点设备中归属于上述目标区块链子网的目标子网节点实例。其中,上述任一联盟链成员对应的设备处可以维护有该成员所参与的各个区块链子网的子网标识,以便据此确定上述目标子网标识,进而准确生成区块链交易。
其中,上述任一联盟链成员可以通过DApp(Decentralized Application,去中心化应用)的客户端生成上述目标区块链交易,此时,该客户端本地可以维护有该联盟链成员所对应节点设备参与的全部区块链子网的子网标识。或者,该联盟链成员也可以通过应用程序的客户端将业务相关信息发送至BaaS(Blockchain as a Service,区块链即服务)平台,以由该平台根据业务相关信息生成上述目标区块链交易,此时,BaaS平台可以维护有该联盟链成员所对应节点设备参与的全部区块链子网的子网标识。
进一步的,目标节点实例在接收到目标区块链交易后,可以将该交易同步至归属于目标区块链子网的其他子网节点实例,以便上述各个联盟链成员各自对应的节点设备在对该交易进行共识后,各自执行该交易,从而完成上述事务。
在一实施例中,前述的子网状态信息可以包括记录有子网标识的可用子网列表,该列表中记录有当前处于可用状态的区块链子网的子网标识,因此,网络接入层可以在区块链消息中携带的目标区块链子网的子网标识被记录于该列表中的情况下,确定目标区块链子网处于可用状态。如图6所示,网络接入层在从子网管理合约对应的数据库中获取到可用子网列表并将其保存在内存中,因此对于待分发的区块链消息,网络接入层可以从该消息中获取目标区块链子网的子网标识,并查询可用子网列表中是否存在该子网标识,并在存在的情况下确定相应的在区块链子网处于可用状态。例如,在确定区块链子网中包含区块链子网subnet1的子网标识的情况下,若该可用子网列表中记录有该子网标识,则确定subnet1处于可用状态,因此网络接入层可以将上述区块链消息分发至节点设备中归属于subnet1的子网节点实例。
如前所述,上述网络接入层、主网节点实例和子网节点实例可以运行在相同或不同的进程中。在一实施例中,可以在网络接入层所处的进程中运行区块链平台代码,从而在该进程中部署归属于区块链主网的主网节点实例和归属于区块链子网的子网节点实例。由于不涉及跨进程交互,所以该方式可以降低区块链网络的部署难度,从而提高部署效率。
在另一实施例中,网络接入层所在进程可以区别于区块链节点实例所在的进程。例如,网络接入层处于第一进程,而各个区块链网络的节点实例均处于第二进程;再例如,网络接入层处于第一进程,而每个区块链网络的节点实例分别处于一个进程,比如主网subnet0对应的主网节点实例处于第二进程、子网subnet1对应的子网节点实例处于第三进程、子网subnet2对应的子网节点实例处于第四进程等。此时,可以将网络接入层所处的进程设置为针对节点设备接收到的区块链消息的默认处理进程,以保证节点设备接收到的区块链消息能够被网络接入层统一分发。在上述网络接入层与目标区块链子网处于不同进程的情况下,网络接入层可以通过跨进程交互实现区块链消息的分发:网络接入层可以先确定目标子网节点实例所在的目标节点进程,并确定调用该目标节点进程的通信接口,然后通过该接口将区块链消息分发至所述目标子网节点实例,从而实现跨进程交互。
在一实施例中,前述子网状态信息也可能表明目标区块链子网处于不可用状态,如该区块链子网处于暂停状态或者终止状态,甚至已经被销毁等,所以,此时网络接入层可以终止分发上述区块链消息,以避免针对区块链消息的后续无效处理。当然,也可以预先设置重试机制,即在上述子网状态信息可能表明目标区块链子网处于不可用状态的情况下,可以等待一定时长后重新确定目标区块链子网,以保证子网状态信息在上述时长内发生更新的情况下,能够实现对区块链消息的有效分发及后续处理。
进一步的,在上述区块链消息为区块链交易的情况下,网络接入层将区块链交易分发至归属于目标区块链子网的目标子网节点实例后,该目标子网节点实例可以将接收到的区块链交易同步至归属于目标区块链子网的其他子网节点实例。进而,目标区块链子网中的各个子网节点实例可以采用前述的共识机制对该区块链交易进行共识,并在共识通过的情况下,由各个子网节点执行该区块链交易,并将相应的执行结果保存在相应的数据库中。其中,上述共识、执行及存储的具体过程可以参见前述实施例及相关技术中的记载,此处不再赘述。
实际上,节点设备中的网络接入层接收到的区块链消息,可能并非全部需要由区块链子网进行处理。例如,区块链消息可以携带目标区块链主网的主网标识,此时,网络接入层可以将区块链消息分发至节点设备上部署的归属于目标区块链主网的目标主网节点实例,以便目标区块链主网对该区块链消息进行处理。或者,区块链消息也可以不携带任何区块链网络的网络标识,此时,网络接入层可以将区块链消息分发至节点设备上部署的归属于默认区块链网络的节点实例,其中,该默认区块链网络可以包括前述的区块链主网或任一区块链子网。从而通过预设的默认区块链网络对未接待任何网络标识的区块链消息进行有效处理,以提升该方案与相关技术中方案之间的兼容性。
如图6所示,网络接入层中的接入模块在接收到区块链消息后,可以通过网络管理模块确定该区块链消息对应的目标区块链网络。例如,网络管理模块可以先确定该消息中是否携带区块链网络的网络标识:若不存在任何区块链标识,网络管理模块可以确定当前的默认区块链网络,比如当默认区块链网络为区块链主网subnet0时,可以通过对应于subnet0的分发模块0将该消息发送至subnet0对应的主网节点实例nodeA。反之,若该区块链消息中携带区块链网络的网络标识,则网络接入层可以根据该网络标识对区块链消息进行分发,比如当上述网络标识为区块链主网subnet0的网络标识时,可以通过对应于subnet0的分发模块0将该消息发送至subnet0对应的主网节点实例nodeA;或者当上述网络标识为区块链主网subnet1的网络标识时,可以通过对应于subnet1的分发模块1将该消息发送至subnet1对应的主网节点实例nodeA1,不再赘述。
通过上述方式,接收到区块链消息的区块链节点可以对区块链消息进行相应的处理。例如,在区块链消息为区块链交易的情况下,可以对该区块链交易进行共识和/或执行该区块链交易,从而完成对该区块链交易的处理过程。
图7是一示例性实施例提供的一种设备的结构示意图。请参考图7,在硬件层面,该设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
图8是一示例性实施例提供的一种区块链消息的分发装置的框图。请参考图8,该装置可以应用于如图7所示的设备中,以实现本说明书的技术方案。其中,该区块链消息的分发装置应用于运行有区块链平台代码的节点设备,所述区块链平台代码在所述节点设备中形成网络接入层、区块链主网中的主网节点实例和区块链子网中的子网节点实例,所述装置包括:
信息获取单元801,使所述网络接入层获取所述主网节点实例处部署的子网管理合约所维护的子网状态信息,所述子网状态信息用于记录基于所述区块链主网组建的各个区块链子网的状态;
消息分发单元802,使所述网络接入层在接收到针对目标区块链子网的区块链消息的情况下,若所述子网状态信息表明所述目标区块链子网处于可用状态,则将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链子网的目标子网节点实例。
可选的,所述子网管理合约包括创世合约或***合约。
可选的,还包括:
子网组建单元803,使所述主网节点实例在执行组建区块链子网的消息时,调用所述子网管理合约以触发所述节点设备参与组建相应的区块链子网,并使所组建的区块链子网的状态被添加至所述子网状态信息中。
可选的,
所述组建区块链子网的消息由所述区块链主网的管理员发起;或者,
所述组建区块链子网的消息由所述区块链主网的普通用户发起。
可选的,还包括:
子网管理单元804,使所述主网节点实例在执行管理区块链子网的消息时,调用所述子网管理合约以触发所述节点设备参与管理相应的区块链子网,并使所述子网管理合约更新所维护的所述子网状态信息。
可选的,所述主网节点实例管理任一区块链子网,包括:
销毁所述任一区块链子网;或者,
将所述任一区块链子网的工作状态切换至开启状态、暂停状态或终止状态。
可选的,所述信息获取单元801,还用于使所述网络接入层在监测到至少一个区块链子网的状态发生变化的情况下,获取所述子网状态信息。
可选的,所述信息获取单元801,还用于使所述网络接入层从所述子网管理合约对应的存储中读取所述子网状态信息。
可选的,所述存储为内存,所述子网状态信息在主网节点实例每生成一个区块后被存入所述内存中,以供所述网络接入层读取。
可选的,所述存储为数据库。
可选的,所述子网状态信息包括记录有子网标识的可用子网列表,所述子网状态信息表明所述目标区块链子网处于可用状态,包括:
所述区块链消息中携带的所述目标区块链子网的子网标识被记录于所述可用子网列表中。
可选的,所述网络接入层、主网节点实例和子网节点实例处于同一进程。
可选的,所述网络接入层所处的进程区别于主网节点实例和子网节点实例所处的进程,且所述网络接入层所处的进程被设置为针对所述节点设备接收到的区块链消息的默认处理进程。
可选的,所述消息分发单元802,还用于使所述网络接入层确定目标子网节点实例所在的目标节点进程,并通过调用所述目标节点进程的通信接口,将所述区块链消息分发至所述目标子网节点实例。
可选的,还包括:
终止分发单元805,若所述子网状态信息表明所述目标区块链子网处于不可用状态,则使所述网络接入层终止分发所述区块链消息。
可选的,还包括:
主网分发单元806,使所述网络接入层在所述区块链消息携带目标区块链主网的主网标识的情况下,将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链主网的目标主网节点实例;
默认分发单元807,使所述网络接入层在所述区块链消息未携带任何区块链网络的网络标识的情况下,将所述区块链消息分发至所述节点设备上部署的归属于默认区块链网络的节点实例,所述默认区块链网络包括所述区块链主网或所述区块链子网。
可选的,所述区块链主网为底层区块链网络;或者,所述区块链主网为其他区块链网络的子网。
可选的,所述区块链消息包括下述之一:
区块链交易、共识消息、心跳消息。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组建、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (21)

1.一种区块链消息的分发方法,应用于节点设备,所述节点设备通过运行区块链平台代码形成区块链主网中的任一主网节点实例,所述区块链平台代码还在所述节点设备中形成网络接入层和至少一个子网节点实例,不同的子网节点实例分别属于不同的区块链子网,任一区块链子网中的各个子网节点实例被分别部署在不同的节点设备中,所述方法包括:
所述网络接入层获取所述主网节点实例处部署的子网管理合约所维护的子网状态信息,所述子网状态信息用于记录基于所述区块链主网组建的各个区块链子网的状态;
所述网络接入层在接收到其他节点设备针对目标区块链子网的区块链消息的情况下,若所述子网状态信息表明所述目标区块链子网处于可用状态,则将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链子网的目标子网节点实例。
2.根据权利要求1所述的方法,所述子网管理合约包括创世合约或***合约。
3.根据权利要求1所述的方法,还包括:
所述主网节点实例在执行组网交易时,调用所述子网管理合约以触发所述节点设备参与组建相应的区块链子网,并使所组建的区块链子网的状态被添加至所述子网状态信息中。
4.根据权利要求3所述的方法,
所述组网交易由所述区块链主网的管理员发起;或者,
所述组网交易由所述区块链主网的普通用户发起。
5.根据权利要求1所述的方法,还包括:
所述主网节点实例在执行管理区块链子网的交易时,调用所述子网管理合约以触发所述节点设备参与管理相应的区块链子网,并使所述子网管理合约更新所维护的所述子网状态信息。
6.根据权利要求5所述的方法,所述主网节点实例管理任一区块链子网,包括:
销毁所述任一区块链子网;或者,
将所述任一区块链子网的工作状态切换至开启状态、暂停状态或终止状态。
7.根据权利要求1所述的方法,所述网络接入层获取所述子网状态信息,包括:
所述网络接入层在监测到至少一个区块链子网的状态发生变化的情况下,获取所述子网状态信息。
8.根据权利要求1所述的方法,所述网络接入层获取所述子网状态信息,包括:
所述网络接入层从所述子网管理合约对应的存储中读取所述子网状态信息。
9.根据权利要求8所述的方法,所述存储为内存,所述子网状态信息在主网节点实例每生成一个区块后被存入所述内存中,以供所述网络接入层读取。
10.根据权利要求8所述的方法,所述存储为数据库。
11.根据权利要求1所述的方法,所述子网状态信息包括记录有子网标识的可用子网列表,所述子网状态信息表明所述目标区块链子网处于可用状态,包括:
所述区块链消息中携带的所述目标区块链子网的子网标识被记录于所述可用子网列表中。
12.根据权利要求1所述的方法,所述网络接入层、主网节点实例和子网节点实例处于同一进程。
13.根据权利要求1所述的方法,所述网络接入层所处的进程区别于主网节点实例和子网节点实例所处的进程,且所述网络接入层所处的进程被设置为针对所述节点设备接收到的区块链消息的默认处理进程。
14.根据权利要求13所述的方法,所述网络接入层将所述区块链消息分发至目标子网节点实例,包括:
所述网络接入层确定目标子网节点实例所在的目标节点进程,并通过调用所述目标节点进程的通信接口,将所述区块链消息分发至所述目标子网节点实例。
15.根据权利要求1所述的方法,还包括:
若所述子网状态信息表明所述目标区块链子网处于不可用状态,则所述网络接入层终止分发所述区块链消息。
16.根据权利要求1所述的方法,还包括:
在所述区块链消息携带目标区块链主网的主网标识的情况下,所述网络接入层将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链主网的目标主网节点实例;
在所述区块链消息未携带任何区块链网络的网络标识的情况下,所述网络接入层将所述区块链消息分发至所述节点设备上部署的归属于默认区块链网络的节点实例,所述默认区块链网络包括所述区块链主网或所述区块链子网。
17.根据权利要求1所述的方法,所述区块链主网为底层区块链网络;或者,所述区块链主网为其他区块链网络的子网。
18.根据权利要求1所述的方法,所述区块链消息包括下述之一:
区块链交易、共识消息、心跳消息。
19.一种区块链消息的分发装置,应用于节点设备,所述节点设备通过运行区块链平台代码形成区块链主网中的任一主网节点实例,所述区块链平台代码还在所述节点设备中形成网络接入层和至少一个子网节点实例,不同的子网节点实例分别属于不同的区块链子网,任一区块链子网中的各个子网节点实例被分别部署在不同的节点设备中,所述装置包括:
信息获取单元,使所述网络接入层获取所述主网节点实例处部署的子网管理合约所维护的子网状态信息,所述子网状态信息用于记录基于所述区块链主网组建的各个区块链子网的状态;
消息分发单元,使所述网络接入层在接收到其他节点设备针对目标区块链子网的区块链消息的情况下,若所述子网状态信息表明所述目标区块链子网处于可用状态,则将所述区块链消息分发至所述节点设备上部署的归属于所述目标区块链子网的目标子网节点实例。
20.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-18中任一项所述的方法。
21.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-18中任一项所述方法的步骤。
CN202110611544.1A 2021-06-02 2021-06-02 区块链消息的分发方法及装置 Active CN113259119B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110611544.1A CN113259119B (zh) 2021-06-02 2021-06-02 区块链消息的分发方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110611544.1A CN113259119B (zh) 2021-06-02 2021-06-02 区块链消息的分发方法及装置

Publications (2)

Publication Number Publication Date
CN113259119A CN113259119A (zh) 2021-08-13
CN113259119B true CN113259119B (zh) 2021-10-29

Family

ID=77185879

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110611544.1A Active CN113259119B (zh) 2021-06-02 2021-06-02 区块链消息的分发方法及装置

Country Status (1)

Country Link
CN (1) CN113259119B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114493602B (zh) * 2022-04-08 2022-07-22 恒生电子股份有限公司 区块链交易的执行方法、装置、电子设备和存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108200210A (zh) * 2018-02-12 2018-06-22 众安信息技术服务有限公司 基于区块链的链管理的方法、装置及计算机可读介质
CN109471744A (zh) * 2018-11-21 2019-03-15 北京蓝石环球区块链科技有限公司 基于区块链的主链加并行多子链***架构
CN111327648A (zh) * 2018-12-13 2020-06-23 北京果仁宝软件技术有限责任公司 基于区块链智能合约的处理方法和***
CN111414210A (zh) * 2020-03-25 2020-07-14 北京创世智链信息技术研究院 基于主链生成侧链的方法、装置及计算机可读存储介质
CN111612615A (zh) * 2019-02-26 2020-09-01 傲为信息技术(江苏)有限公司 基于公链的区块链子链创建方法及***
CN112235114A (zh) * 2020-09-25 2021-01-15 西安纸贵互联网科技有限公司 基于区块链的业务处理***
CN112311779A (zh) * 2020-10-22 2021-02-02 腾讯科技(深圳)有限公司 应用于区块链***的数据访问控制方法及装置
CN112671908A (zh) * 2020-12-25 2021-04-16 成都质数斯达克科技有限公司 网络管理方法、装置、电子设备及可读存储介质
CN112801795A (zh) * 2021-03-08 2021-05-14 中国工商银行股份有限公司 区块链多链管理方法、装置、电子设备及可读存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107844976B (zh) * 2017-10-25 2020-11-13 武汉天喻信息产业股份有限公司 一种基于区块链的存证应用交易***及方法
US11341451B2 (en) * 2018-10-10 2022-05-24 Questaweb Holdings Inc. Hierarchical blockchain architecture for global trade management
CN110650189B (zh) * 2019-09-20 2022-01-18 深圳供电局有限公司 一种基于中继的区块链的交互***及方法
CN111355780B (zh) * 2020-02-18 2022-09-13 杭州云象网络技术有限公司 一种基于区块链的物联网监控管理方法及***
CN111683059B (zh) * 2020-05-18 2022-08-23 国网浙江省电力有限公司 一种主链-侧链的监管方法及***、设备和存储介质
CN111988402B (zh) * 2020-08-20 2022-06-24 支付宝(杭州)信息技术有限公司 一种数据核验方法、装置及电子设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108200210A (zh) * 2018-02-12 2018-06-22 众安信息技术服务有限公司 基于区块链的链管理的方法、装置及计算机可读介质
CN109471744A (zh) * 2018-11-21 2019-03-15 北京蓝石环球区块链科技有限公司 基于区块链的主链加并行多子链***架构
CN111327648A (zh) * 2018-12-13 2020-06-23 北京果仁宝软件技术有限责任公司 基于区块链智能合约的处理方法和***
CN111612615A (zh) * 2019-02-26 2020-09-01 傲为信息技术(江苏)有限公司 基于公链的区块链子链创建方法及***
CN111414210A (zh) * 2020-03-25 2020-07-14 北京创世智链信息技术研究院 基于主链生成侧链的方法、装置及计算机可读存储介质
CN112235114A (zh) * 2020-09-25 2021-01-15 西安纸贵互联网科技有限公司 基于区块链的业务处理***
CN112311779A (zh) * 2020-10-22 2021-02-02 腾讯科技(深圳)有限公司 应用于区块链***的数据访问控制方法及装置
CN112671908A (zh) * 2020-12-25 2021-04-16 成都质数斯达克科技有限公司 网络管理方法、装置、电子设备及可读存储介质
CN112801795A (zh) * 2021-03-08 2021-05-14 中国工商银行股份有限公司 区块链多链管理方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN113259119A (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
CN113067904B (zh) 组建区块链子网的方法和区块链***
CN113259457B (zh) 区块链子网的信息同步方法及装置
CN113067894B (zh) 节点退出区块链子网的方法
CN113067897B (zh) 跨链交互方法及装置
CN113067902B (zh) 区块链消息的传输方法及装置
CN113067895B (zh) 组建区块链子网的方法和区块链***
CN113098982B (zh) 区块链消息的传输方法及装置
CN113098983B (zh) 基于智能合约的任务执行方法及装置
CN113055190B (zh) 针对客户端的访问控制方法
CN113067914B (zh) 一种分配子网标识的方法、装置、电子设备和存储介质
CN113326290B (zh) 跨网查询控制方法
CN113259120B (zh) 同步节点信息列表的方法
CN113067896B (zh) 区块链子网中加入节点的方法和区块链***
CN113259117B (zh) 同步节点信息列表的方法
CN113259118B (zh) 同步节点信息列表的方法
CN113259458B (zh) 一种启动/关闭区块链节点服务的方法和装置
CN114363162A (zh) 区块链日志的生成方法及装置、电子设备、存储介质
CN113259119B (zh) 区块链消息的分发方法及装置
CN113259462B (zh) 区块链消息的分发方法及装置
CN113259236B (zh) 区块链网络间的交易转发方法
CN113259237B (zh) 区块链网络间的交易转发方法
CN115086338A (zh) 区块链子网的组建方法及装置
CN113098984B (zh) 基于注册机制形成多层区块链***的方法和区块链***
CN114363349A (zh) 区块链子网的启动方法及装置
CN114297171A (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