CN113259118A - 同步节点信息列表的方法 - Google Patents

同步节点信息列表的方法 Download PDF

Info

Publication number
CN113259118A
CN113259118A CN202110611532.9A CN202110611532A CN113259118A CN 113259118 A CN113259118 A CN 113259118A CN 202110611532 A CN202110611532 A CN 202110611532A CN 113259118 A CN113259118 A CN 113259118A
Authority
CN
China
Prior art keywords
list
node
blockchain
node information
message
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.)
Granted
Application number
CN202110611532.9A
Other languages
English (en)
Other versions
CN113259118B (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 CN202110611532.9A priority Critical patent/CN113259118B/zh
Publication of CN113259118A publication Critical patent/CN113259118A/zh
Application granted granted Critical
Publication of CN113259118B publication Critical patent/CN113259118B/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/56Financial cryptography, e.g. electronic payment or e-cash
    • 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)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Finance (AREA)
  • Data Mining & Analysis (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Accounting & Taxation (AREA)
  • Computing Systems (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本说明书一个或多个实施例提供一种同步节点信息列表的方法。第一区块链网络的每个节点将附加签名后的列表指定消息广播到第一区块链网络。第一区块链网络的每个节点获取到每个其他节点广播的列表指定消息,每个节点都对第一区块链网络的各节点各自获取节点信息列表进行汇总,如果确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N‑1,那么就认定一致的节点信息列表是准确的,就向第一区块链网络中广播包含一致的节点信息列表的列表同步交易。

Description

同步节点信息列表的方法
技术领域
本说明书一个或多个实施例涉及终端技术领域,尤其涉及一种同步节点信息列表的方法。
背景技术
区块链技术构建在传输网络(例如点对点网络)之上。区块链网络中的节点利用链式数据结构来验证与存储数据,并采用分布式节点共识算法来生成和更新数据。在一些区块链网络中,部分节点有时存在实现小范围交易的需求,以避免其他节点获得这些交易及其相关数据。
在相关技术中,假定已有的区块链网络为区块链主网,那么可以在参与该区块链主网的部分成员的节点设备上部署除主网节点以外的子网节点,形成多级区块链系统,从而可以在区块链子网上实现上述的小范围交易。
在多级区块链系统中,有时两个区块链网络之间需要进行交互,这意味着其中一个区块链网络的各节点需要获取另一个区块链网络的节点信息列表,以便基于获取的节点信息列表与另一个区块链网络的节点进行交互。然而,如何使得区块链网络中各节点尽可能获取到一致的另一个区块链网络的节点信息列表,是亟待解决的技术问题。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种同步节点信息列表的方法。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种同步节点信息列表的方法,用于实现多级区块链系统中第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表;所述方法应用于所述第一区块链网络的每个节点,所述方法包括:
获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息,对构造的列表指定消息附加签名并广播;
针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则构造包含所述一致的节点信息列表的列表同步交易并广播;若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播;
通过执行列表同步交易的方式,同步所述一致的节点信息列表。
根据本说明书一个或多个实施例的第一方面,提出了
一种多级区块链系统,所述系统中
第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表;
所述第一区块链网络的每个节点,获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息,对构造的列表指定消息附加签名并广播;针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则构造包含所述一致的节点信息列表的列表同步交易并广播;若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播;通过执行列表同步交易的方式,同步所述一致的节点信息列表。
在上述技术方案中,多级区块链系统中的第一区块链网络与第二区块链网络之间具有数据交互关系,第一区块链网络的节点在与第二区块链网络进行交互时,需要采用第二区块链网络的节点信息列表。为了实现第一区块链网络的各节点对于第二区块链网络的节点信息列表的同步,第一区块链网络的每个节点构造用于指定自己获取的节点信息列表的列表指定消息并附加签名,将附加签名后的列表指定消息广播到第一区块链网络。第一区块链网络的每个节点可以获取到每个其他节点广播的列表指定消息,每个节点都可以对第一区块链网络的各节点各自获取节点信息列表的情况进行汇总,如果确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1(对于第一区块链网络而言,N是共识协议所支持的可信节点数量最小值,节点自己获取的节点信息列表与N-1个节点获取的节点信息列表一致,则意味着N个节点获取到一致的节点信息列表),那么就可以认定这个一致的节点信息列表是准确的,就可以向第一区块链网络中广播包含这个一致的节点信息列表的列表同步交易。每个节点通过执行列表同步交易的方式,完成节点信息列表的同步。此外,如果确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1(意味着该节点统计的获取到一致的节点信息列表的节点数量还未达到N),则对该列表指定消息附加签名并广播。
通过上述技术方案,系统中的任一区块链网络的各节点可以实现对系统中其他区块网络的节点信息列表的同步,该任一区块链网络的各节点所采用的节点信息列表是一致的,从而避免了由于各节点所采用的节点信息列表不一致所带来的安全风险。
附图说明
图1是一示例性实施例提供的一种创建智能合约的示意图。
图2是一示例性实施例提供的一种调用智能合约的示意图。
图3是一示例性实施例提供的一种创建和调用智能合约的示意图。
图4是一示例性实施例提供的一种区块链子网的组建方法的流程图。
图5是一示例性实施例提供的一种基于区块链主网组建区块链子网的示意图。
图6是一示例性实施例提供的另一种组建区块链子网的方法的流程图。
图7是本说明书提供的一种同步节点信息列表的方法。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(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算法等。
硬件层面的区块链网络通常是由多个成员的节点设备组成。每个成员的节点设备上部署了节点,各成员的节点设备上部署的节点又组成了软件层面的区块链网络。
此处需要说明,不同的成员是不同的个人或机构,实际上相当于不同的利益方。一个成员的节点设备可以有多个(即设备集群),该成员可以灵活(例如考虑单个设备的性能)在设备集群中部署若干属于不同区块链网络的节点,通过不同节点参与不同区块链网络中的交易。
节点是软件层面的概念,一个节点可以理解为用于实现节点功能的代码的一个实例(一个进程或一个线程),如此,相当于同一成员的节点设备上可以部署多个用于实现节点功能的实例。对于联盟链网络的情况,节点的控制方是联盟成员(机构),而客户端的控制方是机构对接的用户,因此,这多个节点可以通过节点设备的不同端口(或者同一默认端口)与客户端进行通信,接收客户端提交的交易。
而对于公有链网络的情况,节点包含于客户端,节点的控制方就是客户端的控制方,即用户,因此,这多个节点可以包含于同一客户端,用户可以选择一个节点提交交易。
在本文中,为了方便描述,“节点接收客户端提交的交易”既可以指联盟链网络的情况,又可以指公有链网络的情况。
由于区块链网络的去中心化特性,使得区块链网络中的所有区块链节点均会维护相同的区块数据,无法满足部分节点的特殊需求。以现有的联盟链网络为例,所有联盟成员(即联盟内的节点成员)的节点设备上都部署有该联盟链网络的节点,可以组成一区块链网络,即所有联盟成员在该区块链网络中分别存在对应的区块链节点,并可以通过对应的区块链节点获得该区块链网络上发生的所有交易和相关数据。但在一些情况下,可能存在部分联盟成员希望小范围内完成一些具有保密需求的交易,这些联盟成员既希望这些交易能够在区块链上存证或借助于区块链技术的其他优势,又能够避免其他联盟成员查看到这些交易和相关数据。
为此,本说明书实施例提供一种由多个成员参与的区块链系统,该系统在硬件层面包括每个成员的节点设备,每个成员的节点设备上部署至少一个节点,同一成员的节点设备上部署的不同节点属于不同区块链网络。同时,该系统在软件层面具有以区块链主网为根结点、各个区块链子网分别为其他结点的树形结构。
需要说明的是,本文所述的节点与结点是不同概念。节点是区块链意义上的概念,是指区块链网络中的节点;而结点是树形结构中的概念,在本文中代指树形结构中的一个区块链网络。
区块链主网可以认为是系统中最上一级的区块链网络,其通常由系统的全部成员的节点设备上部署的主网节点组成。需要说明的是,在有些实施例中,成员可以有初始成员(参与初始化系统的成员)与后续成员(系统初始化之后加入的成员)之分。全部初始成员构建区块链系统,系统中的区块链主网由全部初始成员的节点设备上部署的主网节点组成,而后续,更多的后续成员可以加入区块链系统,后续成员的节点设备上可以部署主网节点,从而加入主网,也可以不部署主网节点,仅仅部署一个或多个子网节点。
系统中的区块链子网可以有多级。最上一级的区块链子网是区块链主网在树形结构中的子结点。区块链子网也可以有下一级区块链子网的子结点。需要说明的是,通常而言,一个区块链子网的节点对应的节点设备上,同时也部署了区块链主网的主网节点。而在系统中存在初始成员与后续成员之分的实施例中,一个区块链子网的节点对应的节点设备可能是后续成员的节点设备,这个后续成员的节点设备有可能没有部署主网节点。
通过这样的区块链系统,个别成员可以自行组建区块链子网进行小范围交易,系统中的各区块链网络(不论是主网还是子网)是相互数据隔离的。
在有些实施例中,区块链网络的创建方式可以是,由每个成员在自己的节点设备上进行手动部署,如果一个成员的节点设备上需要部署3个不同区块链网络(一个主网,两个子网)的节点,那么需要这个成员对节点设备进行三次手动部署区块链网络的流程。然而,对于成员来说,每次需要在自己的节点设备上增加部署一个新区块链网络的节点,就需要成员重新执行手动部署流程,这比较麻烦。况且,一些成员之间小范围的交易需求往往是临时的或者具有一定的时效性,使得手动部署的新的区块链子网很快就会由于需求消失而失去存在的意义,而取消该区块链子网又需要成员对节点设备进行手动操作,更增加了麻烦。
为此,在有些实施例中,提出另外一种在系统中创建区块链网络的方法。将系统中最初组建的区块链主网作为基础,在该区块链主网的基础上组建区块链子网。
具体来说,区块链主网受理子网创建交易并基于部署的合约处理子网创建交易,触发子网创建事件,每个主网节点监听到子网创建事件后,如果确定自身对应的节点设备的成员参与该子网,则根据子网创建交易携带的配置信息,创建一个实例,作为创建的子网的节点。而每个区块链子网也可以进一步受理子网创建交易并基于部署的合约处理子网创建交易,触发子网创建事件,该区块链子网中的每个子网节点从该子网节点监听到子网创建事件之后,如果确定自身对应的节点设备的成员参与该下一级子网,则根据子网创建交易携带的配置信息,创建一个实例,作为进一步创建的下一级子网的节点。
在本文中,对于任一区块链子网,如果负责处理用于创建该区块链子网的子网创建交易的区块链网络,即被称为创建该区块链子网的区块链网络,是树形结构中该区块链子网的父结点。在树形结构中,父结点的子结点的区块链子网不一定是父结点创建的,但是依然可以由父结点管理(即父结点的区块链网络中记录了子结点的区块链子网的网络标识与地址信息)。
在这些实施例中,任一区块链子网由其父结点对应的区块链网络所创建与管理。这样的方式,成员通常仅需要在自己的节点设备上完成一次主网节点的手动部署即可,后续部分成员的节点设备上的主网节点可以创建新的实例作为下一级的子网节点。部分成员的节点设备上的某个区块链子网的节点又可以进一步创建新的实例作为更下一级的子网节点。通过这样的层级式地网络部署方式,可以减少成员手动部署的麻烦。
此外在这些实施例中,一些后续成员的节点设备依然可以在部署了区块链子网之后,再加入到系统中,这意味着该区块链子网并不是系统中原先的任何区块链网络创建的,而是直接从外部加入到系统中的区块链子网,这种区块链子网依然可以加入树形结构中,成为一个结点,只不过该结点的区块链子网是由其父结点对应的区块链网络所管理(而非创建)。
通过上述的子网创建与管理方式,任一区块链子网要么是父结点的区块链网络所创建与管理的,要么是从外部直接加入到树形结构中,由父结点的区块链网络所管理的。不论是哪种情况,任一区块链子网的地址信息(即包含的每个节点的地址信息,如IP地址、端口号)可以只暴露给其父结点的区块链网络,由其父结点的区块链网络中的每个节点进行记录。如此一来,可以最大限度保证子网隐私,降低网络攻击的风险。
以下结合图4对本说明书的区块链子网的组建方案进行说明。需要说明的是,下文中的节点成员具体是指成员;节点设备是指成员控制的设备,是硬件层面的概念;节点是指节点实例(节点设备上运行的进程或线程),部署在节点设备上,是软件层面的概念。
请参见图4,图4是一示例性实施例提供的一种组建区块链子网的方法的流程图。如图4所示,该方法可以包括以下步骤:
步骤402,区块链主网中的各区块链节点分别获取组建区块链子网的交易,所述交易包含所述区块链子网的配置信息,所述配置信息包括参与组建所述区块链子网的节点成员的身份信息。
组建区块链子网的交易可由区块链主网的管理员发起,即仅允许管理员在区块链主网的基础上组建区块链子网,而避免将区块链子网的组建权限开放给普通用户,以防止由此导致的安全性问题。在一些情况下,也可以允许区块链主网的普通用户发起上述组建区块链子网的交易,以满足普通用户的组网需求,使得普通用户能够在管理员不便于发起交易的情况下依然能够快捷地组建区块链子网。
以图5所示为例,区块链主网为subnet0,该subnet0包含的区块链节点为nodeA、nodeB、nodeC、nodeD和nodeE等。假定nodeA、nodeB、nodeC 和nodeD分别对应的节点成员希望组建一区块链子网:如果nodeA为管理员且仅允许管理员发起组建区块链子网的交易,那么可由nodeA向subnet0发起上述组建区块链子网的交易;如果nodeE为管理员且仅允许管理员发起组建区块链子网的交易,那么nodeA~nodeD需要向nodeE进行请求,使得nodeE向subnet0发起上述组建区块链子网的交易;如果nodeE为管理员但允许普通用户发起组建区块链子网的交易,那么nodeA~nodeE均可以向subnet0发起上述组建区块链子网的交易。当然,不论是管理员或者普通用户,发起组建区块链子网的交易的区块链节点对应的节点成员并不一定参与所组建的区块链子网,比如虽然最终由nodeA、nodeB、nodeC 和nodeD分别对应的节点成员组建区块链子网,但可由nodeE向subnet0发起上述组建区块链子网的交易,而并不一定由nodeA~nodeD来发起该组建区块链子网的交易。
在区块链主网的基础上组建区块链子网时,容易理解的是,会使得该区块链子网与区块链主网之间存在逻辑上的层次关系。比如在图5所示的subnet0上组建区块链子网subnet1时,可以认为subnet0处于第一层、subnet1处于第二层。一种情况下,本说明书中的区块链主网可以为底层区块链网络,即区块链主网并非在其他区块链网络的基础上组建的区块链子网,比如图5中的subnet0可以认为属于底层区块链网络类型的区块链主网。另一种情况下,本说明书中的区块链主网可以为其他区块链网络的子网,比如可以在图5中subnet1的基础上进一步组建另一区块链子网,此时可以认为subnet1为该区块链子网对应的区块链主网,而这并不影响该subnet1同时属于subnet0上创建的区块链子网。可见,区块链主网与区块链子网实际上是相对概念,同一区块链网络在一些情况下可以为区块链主网、另一些情况下可以为区块链子网。
步骤404,所述区块链主网中的各区块链节点分别执行所述交易以透出所述配置信息。
步骤406,当所述配置信息包含第一区块链节点对应的节点成员的身份信息时,部署第一区块链节点的节点设备基于所述包含所述配置信息的创世块启动属于所述区块链子网的第二区块链节点。
上述组建区块链子网的交易在被发送至区块链主网后,由区块链主网内的共识节点进行共识,并在通过共识后由各区块链节点执行该交易,以完成区块链子网的组建。共识过程取决于所采用的共识机制,譬如上文所述的任一共识机制,本说明书并不对此进行限制。
通过在上述组建区块链子网的交易中包含配置信息,该配置信息可以用于对所组建的区块链子网进行配置,使得组建的区块链子网符合组网需求。例如,通过在配置信息中包含参与组建所述区块链子网的节点成员的身份信息,可以指定组建的区块链子网对应于哪些节点成员。
节点成员的身份信息可以包括公钥,或者采用节点ID等其他能够表征节点成员的身份的信息,本说明书并不对此进行限制。以公钥为例,每个区块链节点都存在对应的一组或多组公私钥对,由区块链节点持有私钥而公钥被公开且唯一对应于该私钥,因而可以通过公钥来表征相应区块链节点的身份,也可以通过该公钥来表征该区块链节点对应的节点成员的身份。因此,对于希望参与组建区块链子网的节点成员,可以将这些节点成员在区块链主网上对应的区块链节点的公钥添加至上述组建区块链子网的交易中,以作为上述节点成员的身份信息。上述的公私钥对可以用于签名验证的过程。例如,在采用有签名的共识算法中,譬如subnet1上述的nodeA1采用自身维护的私钥对消息进行签名后,将经过签名的消息在subnet1中广播,而nodeB1、nodeC1和nodeD1可以用nodeA1的公钥对收到的消息进行签名验证,以确认自身收到的消息确实来自nodeA1且没有经过篡改。
第一区块链节点可以为区块链主网上属于配置信息所指示的节点成员对应的区块链节点。在组建区块链子网时,并非由第一区块链节点直接参与组建区块链子网,而是需要由用于部署该第一区块链节点的节点设备生成第二区块链节点,并由第二区块链节点参与组建区块链子网。第一区块链节点和第二区块链节点对应于同一个节点成员,比如在联盟链场景下对应于同一联盟链成员,但第一区块链节点属于区块链主网、第二区块链节点属于区块链子网,使得该节点成员可以分别参与到区块链主网和区块链子网的交易中;并且,由于区块链主网和区块链子网属于相互独立的两个区块链网络,使得第一区块链节点生成的区块与第二区块链节点生成的区块分别存入所述节点设备上的不同存储(采用的存储譬如可以为数据库),实现了第一区块链节点与第二区块链节点分别使用的存储之间的相互隔离,因而区块链子网所产生的数据仅会在区块链子网中的各个区块链节点之间同步,使得仅参与了区块链主网的节点成员无法获得区块链子网上产生的数据,实现了区块链主网与区块链子网之间的数据隔离,满足了部分节点成员(即参与区块链子网的节点成员)之间的交易需求。
第一区块链节点和第二区块链节点是在逻辑上划分出来的区块链节点,而从物理设备的角度来说,相当于上述部署了第一区块链节点和第二区块链节点的节点设备同时参与了区块链主网和区块链子网。由于区块链主网与区块链子网之间相互独立,使得这两个区块链网络的身份体系也相互独立,因而即便第一区块链节点和第二区块链节点可以采用完全相同的公钥,仍然应当将两者视为不同的区块链节点。譬如在图5中,subnet0中的nodeA相当于第一区块链节点,而部署该nodeA的节点设备生成了属于subnet1的nodeA1,该nodeA1相当于第二区块链节点。可见,由于身份体系相互独立,所以即便第二区块链节点所采用的公钥区别于第一区块链节点,也不影响本说明书方案的实施。
当然,参与区块链子网的节点成员并不一定只是参与区块链主网的节点成员中的一部分。在一些情况下,参与区块链子网的节点成员可以与参与区块链主网的节点成员完全一致,此时所有的节点成员都可以获得区块链主网和区块链子网上的数据,但是区块链主网与区块链子网所产生的数据依然可以相互隔离,比如可以通过在区块链主网上实现一类业务、在区块链子网上实现另一类业务,从而可以使得这两类业务分别产生的业务数据之间相互隔离。
除了上述的节点成员的身份信息之外,配置信息还可以包括下述至少之一:所述区块链子网的网络标识、所述区块链子网的管理员的身份信息、针对区块链平台代码的属性配置等,本说明书并不对此进行限制。网络标识用于唯一表征该区块链子网,因而该区块链子网的网络标识应当区别于区块链主网和该区块链主网上组建的其他区块链子网。区块链子网的管理员的身份信息,譬如可以为作为管理员的节点成员的公钥;其中,区块链主网与区块链子网的管理员可以相同,也可以不同。
通过区块链主网来组建区块链子网的优势之一,就是由于生成第二区块链节点的节点设备上已经部署了第一区块链节点,因而可以将第一区块链节点所使用的区块链平台代码复用在第二区块链节点上,免去了区块链平台代码的重复部署,极大地提高了区块链子网的组建效率。那么,如果配置信息中未包含针对区块链平台代码的属性配置,第二区块链节点可以复用第一区块链节点上采用的属性配置;如果配置信息中包含了针对区块链平台代码的属性配置,第二区块链节点可以采用该属性配置,使得第二区块链节点所采用的属性配置不受限于第一区块链节点的属性配置、与第一区块链节点无关。针对区块链平台代码的属性配置可以包括下述至少之一:代码版本号、是否需要共识、共识算法类型、区块大小等,本说明书并不对此进行限制。
组建区块链子网的交易包括调用合约的交易。该交易中可以指明被调用的智能合约的地址、调用的方法和传入的参数。例如,调用的合约可以为前述的创世合约或系统合约,调用的方法可以为组建区块链子网的方法,传入的参数可以包括上述的配置信息。在一实施例中,该交易可以包含如下信息:
from:Administrator
to:Subnet
method:AddSubnet(string)
string:genesis
其中,from字段为该交易的发起方的信息,譬如Administrator表明该发起方为管理员;to字段为被调用的智能合约的地址,譬如该智能合约可以为Subnet合约,则to字段具体为该Subnet合约的地址;method字段为调用的方法,譬如在Subnet合约中用于组建区块链子网的方法可以为AddSubnet(string),而string为AddSubnet()方法中的参数,上述示例中通过genesis表征该参数的取值,该genesis具体为前述的配置信息。
以Subnet0上的节点nodeA~nodeE执行调用Subnet合约中AddSubnet()方法的交易为例。在交易通过共识后,nodeA~nodeE分别执行AddSubnet()方法并传入配置信息,得到相应的执行结果。
合约的执行结果可以包括所述配置信息,该执行结果可以处于前文所述的收据中,该收据中可以包含与执行AddSubnet()方法相关的event,即组网事件。组网事件的topic可以包含预定义的组网事件标识,以区别于其他的事件。譬如在与执行AddSubnet()方法相关的event中,topic的内容为关键词subnet,且该关键词区别于其他方法所产生event中的topic。那么,nodeA~nodeE或者部署nodeA~nodeE的节点设备1~5通过监听生成的收据中各个event所含的topic,可以在监听到包含关键词subnet的topic的情况下,确定监听到与执行AddSubnet()方法相关的event,即组网事件。例如,收据中的event如下:
Event:
[topic:other][data]
[topic:subnet][data]
......
那么,在监听到第1条event时,由于所含topic的内容为other,确定该event与AddSubnet()方法无关;以及,在监听到第2条event时,由于所含topic的内容为subnet,确定该event与AddSubnet()方法相关,并进而读取该event对应的data字段,该data字段包含上述的配置信息。以配置信息包括区块链子网的节点成员的公钥为例,data字段的内容例如可以包括:
{subnet1;
nodeA的公钥,nodeA的IP、nodeA的端口号…;
nodeB的公钥,nodeB的IP、nodeB的端口号…;
nodeC的公钥,nodeC的IP、nodeC的端口号…;
nodeD的公钥,nodeD的IP、nodeD的端口号…;
}
其中,subnet1为希望创建的区块链子网的网络标识。区块链主网中的各个区块链节点可以记录该区块链主网上已创建的所有区块链子网的网络标识,或者与这些区块链子网相关的其他信息,这些信息譬如可以维护在上述的Subnet合约中,具体可以对应于该Subnet合约所含的一个或多个合约状态的取值。那么,可以根据记录的已创建的所有区块链子网的网络标识,确定上述的subnet1是否已经存在;如果不存在,说明subnet1是当前需要创建的新区块链子网,如果存在则说明subnet1已经存在。
除了采用希望创建的新的区块链子网的网络标识之外,还可以采用预定义的新建网络标识,该新建网络标识表明相应的组网事件用于组建新的区块链子网。例如,可以将上述的subnet1替换为newsubnet,该newsubnet为预定义的新建网络标识,nodeA~nodeE在识别到data字段包含newsubnet时,即可确定包含该newsubnet的event为组网事件,需要创建新的区块链子网。
除了网络标识subnet1之外,上述data字段中还包含参与组建区块链子网的各个节点成员的身份信息等内容。部署第一区块链节点的节点设备可以监听生成的收据,并在监听到所述组网事件且所述组网事件的内容包含第一区块链节点对应的节点成员的身份信息的情况下,由部署第一区块链节点的节点设备获取所述组网事件包含的配置信息或创世块。或者,第一区块链节点可以监听生成的收据,并在监听到所述组网事件且所述组网事件的内容表明第一区块链节点属于所述节点成员的情况下,触发部署第一区块链节点的节点设备获取所述组网事件包含的所述配置信息或所述创世块。
如前所述,节点设备可以直接监听收据。假定nodeA~nodeE分别部署在节点设备1~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中的区块链节点。
如前所述,区块链主网中的区块链节点可以监听收据,并根据监听结果触发节点设备执行相关处理。例如,nodeA~nodeE在确定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中的区块链节点。
如前所述,第一区块链节点与第二区块链节点并不一定采用相同的身份信息。因此,在上述实施例中,data字段中可以包含预先为nodeA1~nodeD1生成的身份信息,且区别于nodeA~nodeD的身份信息。仍以nodeA和节点设备1为例:节点设备1如果在data字段中发现了nodeA1的身份信息,可以生成创世块、部署nodeA1,并由nodeA1加载该创世块;或者,nodeA如果在data字段中发现了nodeA1的身份信息,那么nodeA会触发节点设备1生成创世块、部署nodeA1,并由nodeA1加载该创世块。其他区块链节点或节点设备的处理方式类似,此处不再一一赘述。
除了配置信息之外,合约的执行结果可以包括创世块。换言之,除了可以在data字段中包含配置信息,还可以直接在执行合约调用的过程中生成包含配置信息的创世块,从而将创世块包含于data字段中,那么对于上述的nodeA~nodeD而言,相应的节点设备1~4可以通过消息机制直接从data字段获得创世块,而无需自行生成,可以提升对nodeA1~nodeD1的部署效率。
在本说明书中,组建区块链子网的交易可以并非是调用智能合约的交易,使得不支持智能合约的区块链网络也可以实现本说明书的技术方案,从而在区块链主网的基础上快捷地创建出区块链子网。例如,可以预先定义一组网交易类型标识,当交易包含该组网交易类型标识时,就表明该交易用于组建新的区块链子网,即该交易为组建区块链子网的交易。区块链平台代码可以包含相关的用于组建区块链子网的处理逻辑,使得运行该区块链平台代码的第一区块链节点在执行交易时,如果发现该交易中包含上述的组网交易类型标识,且第一区块链节点对应的节点成员的身份信息被包含于该交易中的配置信息中,可以基于上述处理逻辑来触发部署第一区块链节点的节点设备生成包含该配置信息的创世块并启动第二区块链节点,由第二区块链节点加载该创世块,以形成为区块链子网中的区块链节点。
节点设备通过在进程中创建一个运行区块链平台代码的实例,实现在该节点设备上部署一区块链节点。对于第一区块链节点而言,由节点设备在上述进程中创建运行区块链平台代码的第一实例而形成。类似地,对于第二区块链节点而言,由节点设备在上述进程中创建运行区块链平台代码的第二实例而形成。例如,节点设备可以首先在进程中创建第一实例,以形成区块链主网中的第一区块链节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以在上述进程中创建第二实例,该第二实例区别于上述的第一实例,并由该第二实例形成区块链子网中的第二区块链节点。当第一实例与第二实例位于同一进程时,由于不涉及跨进程交互,可以降低对第二区块链节点的部署难度、提高部署效率。当然,第二实例也可能与第一实例分别处于节点设备上的不同进程中,本说明书并不对此进行限制;例如,节点设备可以在第一进程中创建第一实例,以形成区块链主网中的第一区块链节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以启动区别于第一进程的第二进程,并在该第二进程中创建第二实例,该第二实例区别于上述的第一实例,进而由该第二实例形成区块链子网中的第二区块链节点。
通过上述方式,可以在区块链主网上创建出区块链子网。以图5为例,subnet0原本包含nodeA~nodeE,而在subnet0的基础上可以组建出subnet1,该subnet1包含nodeA1~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的组建相似,此处不再赘述。
在上述如图4所示的实施例中,实际上是从整个区块链系统的角度来描述了本说明书的组建区块链子网的过程,而在该过程中,并非所有的节点成员都参与了区块链子网,接下来将结合图6,从参与区块链子网的主网节点及其所处的节点设备的角度,对本说明书的技术方案进行描述。容易理解的是,图6所示的实施例与图4所示的实施例并不存在本质上的差异,前文针对图4所示实施例的描述,均适用于图6所示的实施例。
图6是一示例性实施例提供的另一种组建区块链子网的方法的流程图。如图6所示,该方法可以包括以下步骤:
步骤602,区块链主网中的第一区块链节点获取组建区块链子网的交易,所述交易包含所述区块链子网的配置信息,所述配置信息包括参与组建所述区块链子网的节点成员的身份信息。
步骤604,第一区块链节点执行所述交易以透出所述配置信息。
步骤606,在所述配置信息包含第一区块链节点对应的节点成员的身份信息时,部署第一区块链节点的节点设备基于包含所述配置信息的创世块启动属于所述区块链子网的第二区块链节点。
如前所述,所述组建区块链子网的交易包括调用合约的交易。
如前所述,所述合约包括创世合约或系统合约。
如前所述,
所述合约的执行结果包括所述配置信息,部署第一区块链节点的节点设备通过消息机制获得所述配置信息,并根据获得的配置信息生成所述创世块;或者,
所述合约的执行结果包括所述创世块,部署第一区块链节点的节点设备通过消息机制获得所述创世块。
如前所述,所述合约执行后生成的收据中包含与组建新的区块链子网相关的组网事件;所述部署第一区块链节点的节点设备通过消息机制获得所述配置信息或所述创世块,包括:
第一区块链节点监听生成的收据,并在监听到所述组网事件且所述组网事件的内容表明第一区块链节点属于所述节点成员的情况下,触发部署第一区块链节点的节点设备获取所述组网事件包含的所述配置信息或所述创世块;或者,
部署第一区块链节点的节点设备监听生成的收据,并在监听到所述组网事件且所述组网事件的内容表明第一区块链节点属于所述节点成员的情况下,获取所述组网事件包含的所述配置信息或所述创世块。
如前所述,所述组网事件包括:所述收据中的主题名称包含预定义的组网事件标识的事件。
如前所述,当所述组网事件的内容包含下述标识时,表明所述组网事件与组建新的区块链子网相关:
希望组建的区块链子网的网络标识,且所述网络标识区别于已有区块链子网;或者,
预定义的新建网络标识,所述新建网络标识表明所述组网事件用于组建新的区块链子网。
如前所述,所述交易包括组网交易类型标识,所述组网交易类型标识表明所述交易用于组建新的区块链子网。
如前所述,
所述组建区块链子网的交易由所述区块链主网的管理员发起;或者,
所述组建区块链子网的交易由所述区块链主网的普通用户发起。
如前所述,所述配置信息还包括下述至少之一:所述区块链子网的网络标识、所述区块链子网的管理员的身份信息、针对区块链平台代码的属性配置。
如前所述,所述区块链主网与所述区块链子网的管理员相同或不同。
如前所述,针对区块链平台代码的属性配置包括下述至少之一:代码版本号、是否需要共识、共识算法类型、区块大小。
如前所述,所述节点设备启动第二区块链节点包括:所述节点设备创建运行区块链平台代码的第二实例,第二实例区别于所述节点设备上运行所述区块链平台代码且对应于第一区块链节点的第一实例。
如前所述,第一区块链节点生成的区块与第二区块链节点生成的区块分别存入所述节点设备上的不同存储。
如前所述,第一区块链节点与第二区块链节点分别使用的存储之间相互隔离。
如前所述,所述存储为数据库。
如前所述,所述区块链主网为底层区块链网络;或者,所述区块链主网为其他区块链网络的子网。
此外,系统中的两个区块链网络之间可以进行跨网通信。此处对于系统中两个区块链网络之间的跨网通信进行介绍。假设系统中第一区块链网络与第二区块链网络之间需要进行跨网通信。第一区块链网络可以向第二区块链网络发送请求消息,接收第二区块链网络返回的响应消息。同理,第二区块链网络也可以向第一区块链网络发送请求消息,接收第一区块链网络返回的响应消息。
以第一区块链网络向第二区块链网络发送请求消息为例。第一区块链网络中的各节点可以在执行业务流程合约的过程中,分别向第二区块链网络发送请求消息。假设第二区块链网络的节点数量为Q,那么,第一区块链网络中每个节点都需要构造Q个请求消息,分别发送给第二区块链网络中的每个节点。
在多级区块链系统中,有时两个区块链网络之间需要进行交互,这意味着其中一个区块链网络的各节点需要获取另一个区块链网络的节点信息列表,以便基于获取的节点信息列表与另一个区块链网络的节点进行交互。
后文为了描述方便,将上述的其中一个区块链网络称为第一区块链网络,将上述的另一个区块链网络称为第二区块链网络。可以理解,系统中的任一区块链网络都可以是第一区块链网络,系统与第一区块链网络具有交互关系的任一区块链网络都可以是第二区块链网络。
第二区块链网络的节点信息列表记录了第二区块链网络的每个节点的信息,节点信息通常可以包括节点标识,也可以包括节点通信地址、节点公钥等其他与节点有关的信息。
第一区块链网络的各节点在与第二区块链网络的各节点进行交互时,一方面,可以基于第二区块链网络的节点信息列表,查询第二区块链网络的每个节点的标识,从而在向第二区块链网络的每个节点发送消息时,在消息中指定该节点的节点标识,以便消息可以路由到该节点;另一方面,可以基于第二区块链网络的节点信息列表,查询接收到的消息的发送方是否为第二区块链网络的节点。
也就是说,所述第一区块链网络的节点与所述第二区块链网络进行交互时,执行的步骤可以包括:基于本地的节点信息列表,查询所述第二区块链网络的一个或多个节点的节点标识,并基于查询到的节点标识,构造发往所述第二区块链网络的一个或多个节点的消息。此外,执行的步骤也可以包括:基于本地的节点信息列表,验证与其进行交互的所述第一区块网络外的节点是否属于所述第二区块链网络。
倘若第一区块链网络的各节点所采用的节点信息列表不一致,那么,容易导致第一区块链网络中各节点与第二区块链网络进行交互时的操作不一致,进而带来安全风险。例如,第一区块链网络的节点1采用的第二区块链网络的节点信息列表中包括节点A,第一区块链网络的其他节点采用的节点信息列表中不包括节点A,事实上,节点A之前已经退出第二区块链网络,只是因为节点1没有获取到最新的第二区块链网络的节点信息列表,节点1可能会将仅能发送给第二区块链网络的数据发送给节点A,从而导致数据泄露,危及数据安全。
为了使得区块链网络中各节点尽可能获取到一致的另一个区块链网络的节点信息列表,提出如下技术方案:
第一区块链网络的每个节点构造用于指定自己获取的节点信息列表的列表指定消息并附加签名,将附加签名后的列表指定消息广播到第一区块链网络。第一区块链网络的每个节点可以获取到每个其他节点广播的列表指定消息,每个节点都可以对第一区块链网络的各节点各自获取节点信息列表的情况进行汇总,如果确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1(对于第一区块链网络而言,N是共识协议所支持的可信节点数量最小值,节点自己获取的节点信息列表与N-1个节点获取的节点信息列表一致,则意味着N个节点获取到一致的节点信息列表),那么就可以认定这个一致的节点信息列表是准确的,就可以向第一区块链网络中广播包含这个一致的节点信息列表的列表同步交易。每个节点通过执行列表同步交易的方式,完成节点信息列表的同步。此外,如果确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1(意味着该节点统计的获取到一致的节点信息列表的节点数量还未达到N),则对该列表指定消息附加签名并广播。
通过上述技术方案,系统中的任一区块链网络的各节点可以实现对系统中其他区块网络的节点信息列表的同步,该任一区块链网络的各节点所采用的节点信息列表是一致的,从而避免了由于各节点所采用的节点信息列表不一致所带来的安全风险。
图7是本说明书提供的一种同步节点信息列表的方法的流程示意图,包括如下步骤:
S700:获取所述第二区块链网络的节点信息列表。
图7所示方法应用于第一区块链网络中的每个节点。图7所示方法的执行时机可以根据实际需要指定。在有些实施例中,可以在第一区块链网络的各节点进行一次交易共识(即出块)时,一并执行图7所示方法。
此外,考虑到第二区块链网络的各节点的节点信息可能会不时发生变更(如节点增删,又如节点地址改变),这意味着第二区块链网络的节点信息列表也会不时发生更新。因此,为了第一区块链网络中各节点采用的第二区块链网络的节点信息列表尽可能是最新的,第一区块链网络的各节点可以按照一定的时间计划多次执行图7所示方法。例如,可以周期性执行图7所示方法。
在步骤S700中,第一区块链网络的各节点通常是分别获取第二区块链网络的节点信息列表,由于获取途径并不一致,因此容易出现第一区块链网络的各节点各自获取的节点信息列表不一致的可能性。此外,即便第一区块链网络的各节点各自获取节点信息列表的途径一致,依然有可能出现第一区块链网络的各节点各自获取的节点信息列表不一致的可能性(例如有的节点获取的节点信息列表在传输过程中丢失部分数据)。
第一区块链网络的节点获取第二区块链网络的节点信息列表的方式有多种。例如,第一区块链网络的一个节点可以从第二区块链网络的一个节点处获取节点信息列表,第一区块链网络的不同节点可能从第二区块链网络的不同节点获取节点信息列表。
在有些实施例中,第二区块链网络由所述系统中所述第二区块链网络的上一级区块链网络所管理。此处所谓的管理,至少包括维护所述第二区块链网络的节点信息列表。也就是说,第二区块链网络的上一级区块链网络可以存储第二区块链网络的节点信息列表,还会根据第二区块链网络中节点的更新情况,更新该节点信息列表。如此,第一区块链网络的每个节点分别从所述第二区块链网络的上一级区块链网络,获取所述第二区块链网络的节点信息列表。
举例来说,第二区块链网络可以是一个区块链子网,而第二区块链网络的上一级区块链网络可以是区块链主网。第一区块链网络也可以是一个区块链子网,从区块链主网获取第二区块链网络的节点信息列表。
进一步地,在有些实施例中,第一区块链网络的每个节点从对应节点设备上部署的所述第二区块链网络的上一级区块链网络,获取所述第二区块链网络的节点信息列表。如前所述,系统在硬件层面包括若干成员的节点设备,同一成员的节点设备上可以部署不同区块链网络的节点,使得同一成员可以参与不同的区块链网络。在这些实施例中,第一区块链网络的每个节点对应的节点设备上,都同时部署了第二区块链网络的上一级区块链网络的节点。
例如,第一区块链网络与第二区块链网络可以是同一级的两个区块链子网,这两个区块链子网的上一级区块链网络可以是区块链主网。区块链主网管理第一区块链网络与第二区块链网络,并维护第一区块链网络的节点列表与第二区块链网络的节点信息列表。不仅第一区块链网络可以从对应节点设备的区块链主网节点获取第二区块链网络的节点信息列表,第二区块链网络也可以从对应节点设备的区块链主网节点获取第一区块链网络的节点信息列表。
此处需要说明,第二区块链网络的上一级区块链网络虽然会响应于第二区块链网络的系节点信息变更情况,维护第二区块链网络的节点信息列表,但是第二区块链网络的上一级区块链网络通常是通过执行针对第二区块链网络的节点信息变成交易来更新节点信息列表的。而第二区块链网络的上一级区块链网络的各节点并不一定同时执行完成节点信息变更交易,也就是说,第二区块链网络的上一级区块链网络的各节点在同一时间段内维护的第二区块链网络的节点信息列表不一定是一致的。这意味着,第一区块链网络的各节点各自从对应节点设备上部署的第二区块链网络的上一级区块链网络的节点获取节点信息列表,可能会出现获取的节点信息列表不一致的情况。
S702:构造用于指定获取的节点信息列表的列表指定消息,对构造的列表指定消息附加签名并广播。
在图7所示方法中,第一区块链网络的各节点间同步第二区块链网络的节点信息列表的原理是,每个节点可以将自己获取的节点信息列表告知第一区块链网络的其他节点,这样第一区块链网络的每个节点都可以汇总第一区块链网络的各节点获取节点信息列表的情况。具体来说,每个节点对其构造的协商信息附加签名并广播。如此,第一区块链网络中每个节点都可以接收到每个其他节点广播的协商信息。
每个节点构造的列表指定消息的主要作用是指定自己获取的节点信息列表,方便每个节点互相获知彼此获取节点信息列表的情况,从而进行统计判断。在有些实施例中,每个节点构造的列表指定消息可以包含自己获取的节点信息列表和/或自己获取的节点信息列表的哈希值。
S704:针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则构造包含所述一致的节点信息列表的列表同步交易并广播。
S706:针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播。
每个节点对于其接收到的每个协商信息,一方面可以判断该协商信息指定的节点信息列表与自身获取的节点信息列表是否一致,另一方面可以判断对该协商信息附加过签名的节点数量是否已达到N-1。
N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值。例如,倘若该共识协议是PBFT,则N可以为2f+1,第一区块链网络的节点数量为3f+1,f是PBFT协议对应的容错节点(可以是作恶或宕机)数量的最大值。又如,倘若该共识协议是RAFT,则N可以是f+1,第一区块链网络的节点数量为2f+1,f是PBFT协议对应的容错节点(可以是宕机)数量的最大值。
每个节点如果确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,则说明获取到该一致的节点信息列表的节点数量已经达到N(N-1个附加签名以及该节点自身),因此该一致的节点信息列表是可信的。
每个节点如果确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则说明在该节点看来,获取到该一致的节点信息列表的节点数量还没有达到N(N-1个附加签名以及该节点自身),因此该节点还无法确认该一致的节点信息列表是可信的,该节点需要继续对该列表指定消息附加签名并广播出去,以便该列表指定消息上继续累积附加签名。
每个节点如果确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,则可以将该列表指定消息丢弃,也可以在不对该列表指定消息附加签名的前提下,将该列表指定消息再次广播。
S708:通过执行列表同步交易的方式,同步所述一致的节点信息列表。
此外,每个节点构造的列表指定消息还可以包含该节点的节点标识。如此,每个节点针对接收到的每个列表指定消息,可以根据该列表指定消息包含的节点标识,获取相应的节点公钥对该列表指定消息的签名进行验证,然后节点可以根据获取的节点信息列表与通过签名验证的各列表指定消息,判断是否存在N个以上的节点获取到一致的节点信息列表。也就是说,未通过签名验证的列表指定消息可以默认为不可信,不纳入统计。
存在N个以上的节点获取到一致的节点信息列表,意味着该一致的节点信息数量列表是可信的,因此可以将该一致的节点信息列表在第一区块链网络的各节点中进行同步。
如果不存在N个以上的节点获取到一致的节点信息列表,则说明第一区块链网络的各节点无法共识出一个可信的节点信息列表。这种情况下,节点可以彼此通知重新获取所述第二区块链网络的节点信息列表,从而触发重新执行图7所示方法。此外,节点也可以不再触发重新执行图7所示方法。
在步骤S704中,节点构造的列表同步交易的作用可以是,使得第一区块链网络的各节点以执行列表同步交易的方式,同步该一致的节点信息列表。列表同步交易经过第一区块链网络的执行,可以存证到第一区块链网络对应的区块链中。第一区块链网络的各节点可以基于区块链中最新存证的第二区块链网络的节点信息列表,与第二区块链网络进行交互。
进一步地,在有些实施例中,第一区块链网络的每个节点可以调用部署的智能合约来执行列表同步交易,在执行列表同步交易后,可以利用智能合约的事件通知机制,触发携带所述一致的节点信息列表的通知,该通知可以将链上的信息映射到链外,使得第一区块链网络的各节点可以每个节点根据监听到的通知,同步所述一致的节点信息列表,即将一致的节点信息列表写入到链外的本地存储中。
需要说明的是,由于在实际应用中,第一区块链网络的各节点与第二区块链网络的各节点进行的交互一般是链外交互,交互消息一般不是区块链交易这种数据结构,因此,第一区块链网络的各节点使用链外的本地存储中的第二区块链网络的节点信息列表,效率更高。
在有些实施例中,节点构造列表同步交易时,可以对构造的列表同步交易进行签名,表明自己对所要同步的一致的节点信息列表的认可。该列表同步交易中不仅可以包含所述一致的节点信息列表,还可以包含该列表指定消息上附加的全部签名。
如此,每个节点在执行列表同步交易时,可以在确定列表同步交易的签名通过验证,且列表同步交易中包含的签名通过验证的情况下,才执行列表同步交易。如此,每个节点可以在确认列表同步交易所要同步的列表得到至少N个节点确认的情况下,才会对列表同步交易中携带的节点信息列表进行同步。
此外,在图7所示方法中,有可能出现第一区块链网络的不止一个节点都构造列表同步交易并广播的情况。考虑到这种情况下列表同步交易是冗余的,因此,在有些实施例中,可以设置每个节点即便判断存在可信的节点信息列表,也只能在确定未接收到其他节点广播的列表同步交易的情况下,才可以构建列表同步交易,如果确定已接收到其他节点广播的列表同步交易的情况下,就不需要再构建列表同步交易。
另外,还可以设置第一区块链网络的每个节点通过执行获取到的首个列表同步交易的方式,同步所述一致的节点信息列表。第一区块链网络的每个节点可以将获取到的非首个列表同步交易丢弃,或者,使获取到的非首个列表同步交易的执行结果为失败,从而避免列表同步交易被重复执行的情况。
此外,本说明书还提供一种同步节点信息列表的方法,用于实现多级区块链系统中第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表;所述方法应用于所述第一区块链网络,所述方法包括:
每个节点获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息,对构造的列表指定消息附加签名并广播;
每个非主节点针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则对该列表指定消息附加签名后发送给所述第一区块链网络的主节点;若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播;
所述主节点在接收到附加了N个签名的列表指定消息之后,构造包含该列表指定消息指定的节点信息列表的列表同步交易并广播;
每个节点通过执行列表同步交易的方式,同步所述一致的节点信息列表。
进一步地,可以周期性执行此方法。
进一步地,还包括:
所述主节点针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则构造包含所述一致的节点信息列表的列表同步交易并广播。
进一步地,还包括:
所述非主节点若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播。
进一步地,若所述第一区块链网络采用有主共识协议对交易进行共识,则所述主节点基于该有主共识协议确定。
进一步地,所述第一区块链网络的各非共识节点若确定所述主节点超过指定时长未响应,则基于有主共识协议,更换主节点。
此外,本说明书还提供一种多级区块链系统,所述系统中第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表;
所述第一区块链网络的每个节点,获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息,对构造的列表指定消息附加签名并广播;针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则构造包含所述一致的节点信息列表的列表同步交易并广播;若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播;通过执行列表同步交易的方式,同步所述一致的节点信息列表。
本说明书还提供一种多级区块链系统,所述系统中第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表;
每个节点,获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息,对构造的列表指定消息附加签名并广播;每个节点通过执行列表同步交易的方式,同步所述一致的节点信息列表;
每个非主节点,针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则对该列表指定消息附加签名后发送给所述第一区块链网络的主节点;若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播;
所述主节点,在接收到附加了N个签名的列表指定消息之后,构造包含该列表指定消息指定的节点信息列表的列表同步交易并广播。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。在一个典型的配置中,计算机包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。

Claims (23)

1.一种同步节点信息列表的方法,用于实现多级区块链系统中第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表;所述方法应用于所述第一区块链网络的每个节点,所述方法包括:
获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息,对构造的列表指定消息附加签名并广播;
针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则构造包含所述一致的节点信息列表的列表同步交易并广播;若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播;
通过执行列表同步交易的方式,同步所述一致的节点信息列表。
2.如权利要求1所述方法,所述第一区块链网络的节点与所述第二区块链网络进行交互时,执行的步骤包括:基于本地的节点信息列表,查询所述第二区块链网络的一个或多个节点的节点标识,并基于查询到的节点标识,构造发往所述第二区块链网络的一个或多个节点的消息。
3.如权利要求1所述方法,所述第一区块链网络的节点与所述第二区块链网络进行交互时,执行的步骤包括:基于本地的节点信息列表,验证与其进行交互的所述第一区块网络外的节点是否属于所述第二区块链网络。
4.如权利要求1所述方法,所述第二区块链网络由所述系统中所述第二区块链网络的上一级区块链网络所管理;所述管理至少包括:维护所述第二区块链网络的节点信息列表;
所述第一区块链网络的每个节点获取所述第二区块链网络的节点信息列表,包括:
所述第一区块链网络的每个节点分别从所述第二区块链网络的上一级区块链网络,获取所述第二区块链网络的节点信息列表。
5.如权利要求4所述方法,所述第一区块链网络的每个节点分别从所述第二区块链网络的上一级区块链网络,获取所述第二区块链网络的节点信息列表,包括:
所述第一区块链网络的每个节点从对应节点设备上部署的所述第二区块链网络的上一级区块链网络,获取所述第二区块链网络的节点信息列表。
6.如权利要求4或5所述方法,周期性执行所述方法。
7.如权利要求1所述方法,执行列表同步交易,包括:
调用智能合约执行列表同步交易,并触发携带所述一致的节点信息列表的通知;
同步所述一致的节点信息列表,包括:
根据监听到的通知,同步所述一致的节点信息列表。
8.如权利要求1所述方法,每个节点构造的列表指定消息包含获取的节点信息列表,和/或,包含获取的节点信息列表的哈希值。
9.如权利要求1所述方法,还包括:
若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表不一致,则丢弃该列表指定消息。
10.如权利要求1所述方法,若是,则构建列表同步交易,包括:
若是,则在确定未接收到其他节点广播的列表同步交易的情况下,构建列表同步交易;
所述方法还包括:
若是,则在确定已接收到其他节点广播的列表同步交易的情况下,不构建列表同步交易。
11.如权利要求1所述方法,若是,则所述方法还包括:
对该列表指定消息附加签名。
12.如权利要求1所述方法,通过执行列表同步交易的方式,同步所述一致的节点信息列表,包括:
通过执行获取到的首个列表同步交易的方式,同步所述一致的节点信息列表;
所述方法还包括:
将获取到的非首个列表同步交易丢弃;或者,使获取到的非首个列表同步交易的执行结果为失败。
13.如权利要求1所述方法,构造包含所述一致的节点信息列表的列表同步交易,包括:
构造列表同步消息,并对构造的列表同步消息进行签名;构造的列表同步消息包含所述一致的节点信息列表与该列表指定消息上附加的全部签名。
14.如权利要求13所述方法,执行列表同步交易,包括:
在确定列表同步交易的签名通过验证,且列表同步交易中包含的签名通过验证的情况下,执行列表同步交易。
15.如权利要求1所述方法,所述第一区块链网络与所述第二区块链网络是由同一上一级区块链网络所管理的区块链子网。
16.一种同步节点信息列表的方法,用于实现多级区块链系统中第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表;所述方法应用于所述第一区块链网络,所述方法包括:
每个节点获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息,对构造的列表指定消息附加签名并广播;
每个非主节点针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则对该列表指定消息附加签名后发送给所述第一区块链网络的主节点;若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播;
所述主节点在接收到附加了N个签名的列表指定消息之后,构造包含该列表指定消息指定的节点信息列表的列表同步交易并广播;
每个节点通过执行列表同步交易的方式,同步所述一致的节点信息列表。
17.如权利要求16所述方法,周期性执行所述方法。
18.如权利要求16所述方法,还包括:
所述主节点针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则构造包含所述一致的节点信息列表的列表同步交易并广播。
19.如权利要求18所述方法,还包括:
所述非主节点若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播。
20.如权利要求16所述方法,若所述第一区块链网络采用有主共识协议对交易进行共识,则所述主节点基于该有主共识协议确定。
21.如权利要求20所述方法,所述第一区块链网络的各非共识节点若确定所述主节点超过指定时长未响应,则基于有主共识协议,更换主节点。
22.一种多级区块链系统,所述系统中第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表;
所述第一区块链网络的每个节点,获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息,对构造的列表指定消息附加签名并广播;针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则构造包含所述一致的节点信息列表的列表同步交易并广播;若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播;通过执行列表同步交易的方式,同步所述一致的节点信息列表。
23.一种多级区块链系统,所述系统中第一区块链网络的各节点间同步:与所述系统中第二区块链网络进行交互时所采用的、所述第二区块链网络的节点信息列表;
每个节点,获取所述第二区块链网络的节点信息列表;构造用于指定获取的节点信息列表的列表指定消息,对构造的列表指定消息附加签名并广播;每个节点通过执行列表同步交易的方式,同步一致的节点信息列表;
每个非主节点,针对从其他节点接收到的每个列表指定消息,若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量已达到N-1,N为在第一区块链网络中应用共识协议所决定的可信节点数量最小值,则对该列表指定消息附加签名后发送给所述第一区块链网络的主节点;若确定该列表指定消息指定的节点信息列表与自身获取的节点信息列表一致,且确定对该列表指定消息附加过签名的节点数量未达到N-1,则对该列表指定消息附加签名并广播;
所述主节点,在接收到附加了N个签名的列表指定消息之后,构造包含该列表指定消息指定的节点信息列表的列表同步交易并广播。
CN202110611532.9A 2021-06-02 2021-06-02 同步节点信息列表的方法 Active CN113259118B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110611532.9A CN113259118B (zh) 2021-06-02 2021-06-02 同步节点信息列表的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110611532.9A CN113259118B (zh) 2021-06-02 2021-06-02 同步节点信息列表的方法

Publications (2)

Publication Number Publication Date
CN113259118A true CN113259118A (zh) 2021-08-13
CN113259118B CN113259118B (zh) 2021-09-24

Family

ID=77185845

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110611532.9A Active CN113259118B (zh) 2021-06-02 2021-06-02 同步节点信息列表的方法

Country Status (1)

Country Link
CN (1) CN113259118B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113761064A (zh) * 2021-08-27 2021-12-07 成都质数斯达克科技有限公司 基于区块链的日切对账方法、装置、设备及可读存储介质
WO2023207076A1 (zh) * 2022-04-29 2023-11-02 蚂蚁区块链科技(上海)有限公司 区块链子网的组建方法及装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108200210A (zh) * 2018-02-12 2018-06-22 众安信息技术服务有限公司 基于区块链的链管理的方法、装置及计算机可读介质
CN108881231A (zh) * 2018-06-21 2018-11-23 郑州云海信息技术有限公司 一种集群系统中同步账户信息的方法、装置和存储介质
CN109246176A (zh) * 2018-07-03 2019-01-18 北京邮电大学 软件定义网络中基于区块链的多控制器同步方法及装置
CN109274754A (zh) * 2018-10-11 2019-01-25 上海保险交易所股份有限公司 用于在区块链网络中同步数据的方法、设备和存储介质
CN110033371A (zh) * 2019-02-19 2019-07-19 阿里巴巴集团控股有限公司 一种基于资产交易的对账方法及装置
CN110955721A (zh) * 2019-10-23 2020-04-03 金蝶软件(中国)有限公司 区块链节点状态维护方法、装置、计算机设备和存储介质
CN111212139A (zh) * 2020-01-02 2020-05-29 支付宝(杭州)信息技术有限公司 对信任节点信息进行更新的方法及装置
US20200218823A1 (en) * 2017-07-06 2020-07-09 Chromaway Ab Method and system for a distributed computing system
CN111786812A (zh) * 2020-05-27 2020-10-16 金蝶软件(中国)有限公司 节点管理方法、装置、计算机设备和存储介质
CN112287031A (zh) * 2020-12-15 2021-01-29 腾讯科技(深圳)有限公司 区块链系统的数据同步方法、装置、可读介质及电子设备
US20210120085A1 (en) * 2019-05-21 2021-04-22 Huawei Technologies Co., Ltd. Information Synchronization Method and Apparatus

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200218823A1 (en) * 2017-07-06 2020-07-09 Chromaway Ab Method and system for a distributed computing system
CN108200210A (zh) * 2018-02-12 2018-06-22 众安信息技术服务有限公司 基于区块链的链管理的方法、装置及计算机可读介质
CN108881231A (zh) * 2018-06-21 2018-11-23 郑州云海信息技术有限公司 一种集群系统中同步账户信息的方法、装置和存储介质
CN109246176A (zh) * 2018-07-03 2019-01-18 北京邮电大学 软件定义网络中基于区块链的多控制器同步方法及装置
CN109274754A (zh) * 2018-10-11 2019-01-25 上海保险交易所股份有限公司 用于在区块链网络中同步数据的方法、设备和存储介质
CN110033371A (zh) * 2019-02-19 2019-07-19 阿里巴巴集团控股有限公司 一种基于资产交易的对账方法及装置
US20210120085A1 (en) * 2019-05-21 2021-04-22 Huawei Technologies Co., Ltd. Information Synchronization Method and Apparatus
CN110955721A (zh) * 2019-10-23 2020-04-03 金蝶软件(中国)有限公司 区块链节点状态维护方法、装置、计算机设备和存储介质
CN111212139A (zh) * 2020-01-02 2020-05-29 支付宝(杭州)信息技术有限公司 对信任节点信息进行更新的方法及装置
CN111786812A (zh) * 2020-05-27 2020-10-16 金蝶软件(中国)有限公司 节点管理方法、装置、计算机设备和存储介质
CN112287031A (zh) * 2020-12-15 2021-01-29 腾讯科技(深圳)有限公司 区块链系统的数据同步方法、装置、可读介质及电子设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113761064A (zh) * 2021-08-27 2021-12-07 成都质数斯达克科技有限公司 基于区块链的日切对账方法、装置、设备及可读存储介质
WO2023207076A1 (zh) * 2022-04-29 2023-11-02 蚂蚁区块链科技(上海)有限公司 区块链子网的组建方法及装置

Also Published As

Publication number Publication date
CN113259118B (zh) 2021-09-24

Similar Documents

Publication Publication Date Title
CN113067904B (zh) 组建区块链子网的方法和区块链系统
CN113067894B (zh) 节点退出区块链子网的方法
CN113067902B (zh) 区块链消息的传输方法及装置
CN113055190B (zh) 针对客户端的访问控制方法
CN113067895B (zh) 组建区块链子网的方法和区块链系统
CN113098982B (zh) 区块链消息的传输方法及装置
CN113067901B (zh) 区块链子网的创建方法
CN113259118B (zh) 同步节点信息列表的方法
CN113259117B (zh) 同步节点信息列表的方法
CN113259120B (zh) 同步节点信息列表的方法
CN113326290B (zh) 跨网查询控制方法
CN113067897A (zh) 跨链交互方法及装置
CN113067896B (zh) 区块链子网中加入节点的方法和区块链系统
CN113259457B (zh) 区块链子网的信息同步方法及装置
CN113259461B (zh) 跨链交互方法和区块链系统
CN114363162A (zh) 区块链日志的生成方法及装置、电子设备、存储介质
CN113259236B (zh) 区块链网络间的交易转发方法
CN113259237B (zh) 区块链网络间的交易转发方法
CN113067774B (zh) 区块链网络间的交易转发方法
CN113067772B (zh) 区块链网络间的交易转发方法
CN113259459B (zh) 区块链子网运行状态的控制方法和区块链系统
CN113259463B (zh) 跨链交互方法和区块链系统
CN113259119B (zh) 区块链消息的分发方法及装置
CN113259466B (zh) 区块链子网运行状态的控制方法和区块链系统
CN115086338A (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