CN115037756A - 一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备 - Google Patents

一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备 Download PDF

Info

Publication number
CN115037756A
CN115037756A CN202210615860.0A CN202210615860A CN115037756A CN 115037756 A CN115037756 A CN 115037756A CN 202210615860 A CN202210615860 A CN 202210615860A CN 115037756 A CN115037756 A CN 115037756A
Authority
CN
China
Prior art keywords
node
distribution
nodes
data
subset
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.)
Pending
Application number
CN202210615860.0A
Other languages
English (en)
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.)
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Ant Blockchain Technology Shanghai 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 Ant Blockchain Technology Shanghai Co Ltd filed Critical Ant Blockchain Technology Shanghai Co Ltd
Priority to CN202210615860.0A priority Critical patent/CN115037756A/zh
Publication of CN115037756A publication Critical patent/CN115037756A/zh
Priority to PCT/CN2022/135407 priority patent/WO2023231343A1/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/104Peer-to-peer [P2P] networks
    • H04L67/1059Inter-group management mechanisms, e.g. splitting, merging or interconnection of groups

Landscapes

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

Abstract

本公开涉及运行联盟链网络的方法,所述联盟链网络包括被配置为链式存储区块数据的多个数据节点以及被配置为不存储区块数据并且传输数据的多个分发节点,所述方法包括:将所述多个数据节点划分为第一子集和第二子集,并将第一子集的数据节点配置为参与共识过程以生成并存储区块,将第二子集的数据节点配置为不参与共识过程并且从第一子集的数据节点获取并存储所生成的区块,将所述分发节点配置为从与其连接的第一子集的数据节点接收所生成的区块,并将所述区块传输到与其连接的第二子集的数据节点。

Description

一种运行联盟链网络的方法、联盟链网络和用于联盟链网络 的节点设备
技术领域
本公开实施例属于计算机技术领域,尤其涉及运行联盟链网络的方法、联盟链网络和用 于联盟链网络的节点设备。
背景技术
随着区块链技术的发展,基于联盟链网络的业务处理模式较为常见。联盟链可以是只针 对特定群体的成员和有限的第三方,多个服务机构可以组成一个联盟。允许授权的节点加入 联盟链网络,每个服务机构的服务器(或服务器集群)可以为联盟链网络中的一个节点,链 上节点可根据权限查看信息。随着联盟链支撑的业务规模越来越大,联盟链中需要接入的数 据节点的数量也越来越多。
发明内容
本公开的目的在于提供运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设 备。
根据本公开的第一方面,提供了一种运行联盟链网络的方法,所述联盟链网络包括被配 置为链式存储区块数据的多个数据节点以及被配置为不存储区块数据并且传输数据的多个分 发节点,所述方法包括:将所述多个数据节点划分为第一子集和第二子集,并将第一子集的 数据节点配置为参与共识过程以生成并存储区块,将第二子集的数据节点配置为不参与共识 过程并且从第一子集的数据节点获取并存储所生成的区块,将所述分发节点配置为从与其连 接的第一子集的数据节点接收所生成的区块,并将所述区块传输到与其连接的第二子集的数 据节点。
根据本公开的第二方面,提供了一种联盟链网络,包括:多个数据节点,所述数据节点 被配置为链式存储区块数据;以及多个分发节点,所述分发节点被配置为不存储区块数据并 且传输数据,其中,所述多个数据节点被划分为第一子集和第二子集,第一子集的数据节点 被配置为参与共识过程以生成并存储区块,第二子集的数据节点被配置为不参与共识过程并 且从第一子集的数据节点获取并存储所生成的区块,所述分发节点被配置为从与其连接的第 一子集的数据节点接收所生成的区块,并将所述区块传输到与其连接的第二子集的数据节点。
根据本公开的第三方面,提供了一种联盟链网络,包括多个共识节点、多个分发节点和 多个同步节点,其中,所述共识节点被配置为参与共识过程以生成并链式存储区块以及与所 述多个分发节点中的一个或多个分发节点相连接;所述分发节点被配置为与所述多个同步节 点中的一个或多个同步节点相连接并监听其所连接的共识节点,以及响应于其所连接的共识 节点生成区块,从其所连接的共识节点获取所述区块并将所述区块传输给其所连接的一个或 多个同步节点;以及所述同步节点被配置为不参与共识过程并且从其所连接的分发节点接收 所述区块并链式存储所述区块,其中,所述多个共识节点中被定期地随机选择出一个第一节 点,所述多个同步节点中被定期地随机选择出一个第二节点,并且所述第一节点和所述第二 节点被配置为功能互换。
根据本公开的第四方面,提供了一种用于联盟链网络的节点设备,包括一个或多个处理 器和一个或多个存储器,所述一个或多个存储器被配置为存储一系列计算机可执行指令,其 中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,使所述一个或多个处 理器执行:响应于被配置为参与共识过程的共识节点:监听节点管理合约更新的事件以获取 更新的节点列表,并基于节点列表定期地与所述联盟链网络中的被配置为传输数据的一个或 多个分发节点建立连接;参与共识过程以生成并链式存储区块;以及将所生成的区块传输给 与其连接的分发节点。
根据本公开的第五方面,提供了一种用于联盟链网络的节点设备,包括一个或多个处理 器和一个或多个存储器,所述一个或多个存储器被配置为存储一系列计算机可执行指令,其 中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,使所述一个或多个处 理器执行:与所述联盟链网络中的一个被配置为参与共识过程并存储区块的共识节点建立连 接,并且与所述联盟链网络中的一个或多个被配置为不参与共识过程并存储区块的同步节点 建立连接;以及响应于其所连接的共识节点生成区块,从其所连接的共识节点获取所述区块, 并将所述区块传输给其所连接的一个或多个同步节点。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例描述中所需要使用的附图 作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开中记载的一些实施例,对于本 领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的 附图。
图1是示例联盟链网络的示意图;
图2是图1的示例联盟链网络的拓扑结构的示意图;
图3是根据本公开实施例的联盟链网络的示意图;
图4是根据本公开实施例的联盟链网络中的节点连接的示意图;
图5至图9是根据本公开实施例的运行联盟链网络的方法的示意图;
图10是根据本公开实施例的用于联盟链网络的节点设备的至少部分的结构示意图;
图11是可应用于根据本公开实施例的通用硬件系统的示例性框图。
具体实施方式
为了使本技术领域的人员更好地理解本公开中的技术方案,下面将结合本公开实施例中 的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅 是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人 员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本公开保护的范围。
图1是示例联盟链网络的示意图。该示例联盟链网络有多个参与方(参与方A、B、C), 每个参与方可以有一个或多个联盟链节点(节点0至节点5)。每个联盟链节点可以从该参与 方所服务的客户接收交易,并由联盟链网络中的各节点进行分布式执行与存证。联盟链的网 络拓扑结构可以为全连接(full-mesh)网络结构,如图2所示。在全连接模式下,每个链节点 都与其他的链节点直接通信连接。联盟链采用的共识算法可以是实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法。联盟链中的一个链节点,例如节点0,可以通过选举 被确定为主节点。主节点在PBFT共识算法中,负责发起共识提议,并将一个共识周期内的交 易集合(Pre-Prepare消息)广播给其他的链节点(在共识阶段为参与共识的链节点)。具体地, 主节点根据本节点存储的各条交易的交易内容和执行结果生成状态树、交易树和收据树,将 这三棵树的根节点对应的根哈希记入区块头中;然后,主节点将这一组交易打包并生成新的 区块后,将该区块(或区块头)广播至其他链节点。其他的链节点,例如节点1至节点5,接 收到Pre-Prepare消息之后,通过执行Pre-Prepare消息中的一组交易,对区块头中的根哈希进 行验证。在对共识提议的验证通过后,向其它节点发送Prepare消息。在预定时间范围内,如 果收到超过2F个不同链节点的Prepare消息(其中F为PBFT共识算法中的容错节点个数),就代 表Prepare阶段已经完成,则进入Commit阶段。每个链节点向其它节点广播Commit消息,当收 到2F+1个Commit消息后(包括自己的),代表当前共识周期内的共识已经达成,各链节点可 以将包含这组交易的区块追加到原有的区块链的末尾(也称链式存储、上链),并根据这组交 易的执行结果对世界状态进行更新。
需要说明的是,本文所述的交易(transaction),是指用户通过区块链的客户端创建,并 需要最终发布至区块链的分布式数据库中的一笔数据。交易是区块链协议中所约定的一种数 据结构,一笔数据要存入区块链,就需要被封装成交易。区块链中的交易,存在狭义的交易 以及广义的交易之分。狭义的交易是指用户向区块链发布的一笔价值转移;例如,在传统的 区块链网络中,交易可以是用户在区块链中发起的一笔转账。而广义的交易是指用户向区块 链发布的一笔具有业务意图的业务数据;例如,运营方可以基于实际的业务需求搭建一个联 盟链,依托于联盟链部署一些与价值转移无关的其它类型的在线业务(比如,租房业务、车 辆调度业务、保险理赔业务、信用服务、医疗服务等),而在这类联盟链中,交易可以是用 户在联盟链中发布的一笔具有业务意图的业务消息或者业务请求。
在采用PBFT共识算法的联盟链网络中,交易数据和共识阶段的消息数据(例如上述过程 中的Pre-Prepare消息、Prepare消息和Commit消息)均采用应用层组播的方式。随着联盟链网 络支撑的业务规模越来越大,其链上节点的数量也越来越多,每个链上节点进行应用层组播 需要消耗的带宽也随之增长。此外,随着链上节点的数量越来越多,整个共识过程的耗时也 会越来越长。
根据本公开实施例的运行联盟链网络的方法和联盟链网络,将联盟链网络中的链上节点 配置为三种:参与共识过程并生成和存储区块数据的共识节点、用于数据分发但不存储区块 数据的分发节点、以及不参与共识过程但存储区块数据的同步节点,如图3所示。需要说明的 是,在本文中,为简便起见,将联盟链网络中的用于链式存储区块数据的链上节点称为“数 据节点”,每个数据节点均为有能力和资格参与共识过程的节点,并且每个数据节点均可以 被配置为参与共识过程或者不参与共识过程。将数据节点中参与共识过程、并在共识通过之 后生成区块的节点称为“共识节点”;而将不参与共识过程、只是将共识节点的共识结果同 步过来存储的数据节点称为“同步节点”。因此,共识节点是从联盟链网络中的数据节点中 选出的一部分节点,负责执行共识算法,生成区块,以提升共识过程的效率。为了使得各数 据节点平等地参与共识过程,会定期地随机选出共识节点和同步节点进行交换。
分发节点专门负责数据分发,或称数据传输。其中,共识节点与同步节点之间、共识节 点与共识节点之间、以及同步节点与同步节点之间的通信均需经由分发节点来完成。分发节 点也是联盟链网络中的链上节点,其和数据节点均基于联盟链网络的节点管理合约来管理。 利用链上合约来进行各节点的管理,使得数据节点和分发节点的身份均是可验证的。但分发 节点不是数据节点,不存储区块,也不能被选中称为共识节点。分发节点负责把共识节点的 共识结果即区块分发给同步节点,以及把同步节点接收到的交易转发给共识节点。此外,分 发节点之间可以建立全连接(full-mesh)模式,以负责共识节点之间或同步节点之间的相互 通信。
图4所示为根据本公开实施例的联盟链网络中的节点连接的示意图。根据本公开实施例的 运行联盟链网络的方法和联盟链网络,通过在联盟链网络中引入新的节点类型,即分发节点, 构成用于数据传输的分发层;并通过从数据节点中选出一部分参与共识过程构成用于生成区 块的共识层,另一部分节点构成同步共识结果存储区块的同步层,使得整个联盟链网络形成 了一个固定高度(三层高度)的可变多源组播树,用高效的区块分发实现了低延迟通信,大 幅提升了联盟链的共识效率和可扩展性。
下面参照图3和图4详细描述根据本公开实施例的运行联盟链网络的方法、联盟链网络和 用于联盟链网络的节点设备。图3中每个圆形或环形分别表示共识层、分发层、同步层中的“层”, 每个用虚线分割出的扇形表示在扇形内相邻层的节点之间是建立连接的。图4(以及后续图5 至图9)中线段表示节点之间的通信连接,线段端部的箭头表示区块数据的传输方向。
联盟链网络包括被配置为链式存储区块数据的多个数据节点、和被配置为不存储区块数 据并且传输数据的多个分发节点。多个数据节点被划分为第一子集和第二子集,第一子集的 数据节点被配置为参与共识过程以生成并存储区块,第二子集的数据节点被配置为不参与共 识过程并且从第一子集的数据节点获取并存储所生成的区块。分发节点被配置为从与其连接 的第一子集的数据节点接收所生成的区块,并将区块传输到与其连接的第二子集的数据节点。 第一子集的数据节点被称为共识节点,在附图中表示为位于共识层的黑色填充的圆点;第二 子集的数据节点被称为同步节点,在附图中表示为位于同步层的点状图案填充的圆点。分发 节点在附图中表示为位于分发层的斜杠图案填充的圆点。
联盟链网络中的每个链上节点,即多个数据节点和多个分发节点中的每个节点,均基于 联盟链网络的节点管理合约来管理。例如,基于用于节点管理的智能合约来管理链上节点的 加入该联盟链网络、以及从该联盟链网络中删除。不论是公有链、私有链还是联盟链,都可 能提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。 智能合约可以通过代码的形式定义。智能合约使得用户可以在联盟链网络中创建并调用一些 复杂的逻辑。
例如,用户将一个包含创建智能合约信息的交易发送到联盟链网络后,接收该交易的节 点的图灵完备的虚拟机可以执行这个交易并生成对应的合约实例。交易的data字段保存的是 合约代码,交易的to字段为一个空的账户。节点间通过共识机制达成一致后,这个合约成功 创建,后续用户可以调用这个合约。合约创建后,链上出现一个与该智能合约对应的合约账 户,并拥有一个特定的地址,合约代码和账户存储将保存在该合约账户中。智能合约的行为 由合约代码控制,而智能合约的账户存储则保存了合约的状态。换句话说,智能合约使得区 块链上产生包含合约代码和账户存储(Storage)的虚拟账户。例如,用户可以将一个包含调用 智能合约信息的交易发送到联盟链网络,相应的节点可以执行这个交易并生成对应的合约实 例。交易的from字段是发起调用智能合约的账户的地址,to字段为被调用的智能合约的地址, data字段保存的是调用智能合约的方法和参数。调用智能合约后,balance的值可能改变。后 续,某个链上节点可以查看balance的当前值。智能合约可以通过规定的方式在区块链网络中 的每个节点独立地执行,所有执行记录和数据都保存在区块链上,所以当这样的交易完成后, 区块链上就保存了无法篡改、不会丢失的交易凭证。例如,在每个区块链节点处生成的每个 区块中,可以存储有该区块所涉及的各个交易、记录各个交易的结果等信息的相应的收据、 以及区块链网络维护的各个账户的状态。收据的格式(例如每个收据包括几条消息、每条消 息包括几个主题)和内容(例如每条消息中每个主题的含义)可以由区块链网络的各参与方 共同定义。例如,关于一个特定的智能合约的执行的收据中的一条特定的消息,可以包括多 个主题以分别记录该智能合约的地址、调用该智能合约的账户、该智能合约中的哪个/哪些函 数被执行、以及该智能合约执行的结果等。
如此,可以经过编写智能合约、变成字节码、部署到联盟链过程,从而在联盟链网络中 创建用于节点管理的智能合约。如果一个新节点要加入到该联盟链网络中,则需要调用用于 节点管理的智能合约,即发起一笔指向该智能合约地址的交易。该智能合约的运行可以使得 该新节点可以被加入到该联盟链网络的节点列表中。节点列表中记录有各个链上节点的节点 ID(为该链上节点的标识信息,例如可以是节点的公钥的哈希值)、角色信息(例如是共识 节点或同步节点,还是分发节点)、网络信息(例如对于可以连接公网的节点,网络信息可 以是该节点的公网IP地址)等。此外,任何链上节点的信息变更,也需要调用该智能合约来 修改。每次该智能合约的执行结果都保存在区块链上,每个链上节点均可获得这些数据(例 如全量节点在本地即可访问这些数据)。在本公开实施例中,不仅联盟链网络中用于存储数 据的数据节点,而且仅用于传输数据的分发节点也是通过节点管理合约来管理的。这就使得 链上节点都可以根据区块数据来验证任何其他链上节点的合法性,即该节点是否是该联盟链 网络的成员,并且保证了信息的可靠性和一致性。
每个分发节点与其他各分发节点分别建立通信连接。分发节点可以具有公网IP,多个分 发节点之间可以进行全连通通信。联盟链网络建立时,每个分发节点从节点列表中获取所有 其他分发节点的ID和网络信息,分别建立通信连接。之后,每个分发节点监听链上节点管理 合约更新的事件,获取更新的节点列表。如果有分发节点的信息变更,则根据变更信息建立 通信连接。
此外,每个分发节点还建立结构为dnode_info的自身节点的描述信息,以描述自身分发 节点的服务能力(带宽、CPU能力等)、网络亲和性(是否相同的运营商网络等)等。dnode_info可以具有例如如下的数据结构:
Struct dnode_info{
String nid;
uint32_t local_bw;
char isp_type;
uint32_t cpu_score;
}
其中,nid为该分发节点的ID,为该节点的标识信息,例如可以是该节点的公钥的哈希值;local_bw为该分发节点的本地带宽;isp_type为该分发节点的网络服务商类型,例如电信、联 通、移动、或其他运营商等;cpu_score为该分发节点的CPU能力分。
分发层的节点之间还共享节点描述信息dnode_info,例如通过在各分发节点之间广播来 进行共享,每个分发节点可以构建这个全连接的分发层的节点列表dn_dnode_info。分发层节 点列表dn_dnode_info可以用于分发节点之间的负载调度,例如可以参考各分发节点的isp_type,优先将负载调度到由相同运营商提供服务的分发节点下。
std::map<string,dnode_info>dn_dnode_info;
在该map集合中存储键值对,其中string字符串用作键,为分发节点ID;dnode_info用 作值,为该分发节点的节点信息。
共识节点的个数小于或等于分发节点的个数,每个共识节点与多个分发节点中的一个或 多个分发节点相连接,而相应地,每个分发节点只与一个共识节点相连接,从而保证每个分 发节点有且只有一个数据源。由于链上的数据节点可能是不具有公网IP的,例如可能是某个 机构内网中的计算机设备,连接到公网的分发节点可能无法访问数据节点,因此需要数据节 点主动去连接分发节点。同样地,共识节点可以通过区块数据获得基于合约管理的链上节点 列表,从而得到分发节点的信息,以便主动连接分发节点。数据节点主动连接分发节点的时 机可以是新的数据节点加入该联盟链网络,也可以是链上的节点掉线后重新上线。例如,共 识节点可以向某个分发节点发送连接请求,由于每个分发节点只能连接一个共识节点,因此, 该分发节点根据自己是否已经连接有共识节点来决定是否接收该连接请求:响应于已与共识 节点相连接,拒绝该共识节点的连接请求;以及响应于未与共识节点相连接,接受连接请求 以与该共识节点建立连接。此外,由于分发节点不能主动连接共识节点,但为了保证每个分 发节点都有数据源,即都连接有共识节点,需要共识节点定期地去尝试连接某个分发节点。 例如,共识节点定期地从各分发节点中随机选择一个并向其发送连接请求。此外,共识节点 可以根据自己的负载能力来尝试连接分发节点。例如,如果一个共识节点连接的分发节点的 个数已经达到或接近了自己负载能力的上限,则其可以不定期去尝试连接其他的分发节点。 因此,为了保证每个分发节点都有数据源,对共识节点的个数和分发节点的个数的配置应保 证能够满足共识节点的负载能力条件。
每个共识节点建立描述与其连接的分发节点的路由表dn_route_table。路由表dn_route_table可以具有如下的结构:
struct route_item{
string nid;
uint32_t srtt;
uint32_t bandwidth;
uint16_t state;
}
std::list<route_item>dn_route_table;
其中,nid为与该共识节点连接的分发节点的ID,srtt为平滑往返时间,其指示该共识节 点与该分发节点之间传输数据的网络延时,bandwidth为该分发节点的带宽,state为该分发 节点的状态,例如掉线、在线、超载、低载、正常等。
分发节点的个数小于或等于同步节点的个数,每个分发节点与一个或多个同步节点相连 接,但每个同步节点只与一个分发节点相连接。由于上述同样的原因,需要共识节点主动去 连接分发节点。同步节点可以通过区块数据获得基于合约管理的链上节点列表,从而得到分 发节点的信息,以便主动连接分发节点。例如,同步节点可以向某个分发节点发送连接请求, 分发节点基于其带宽和负载能力,例如响应于其负载情况满足条件,可以接受该连接请求以 与该同步节点建立连接;例如响应于其负载情况不满足条件,可以把该同步节点的连接调度 到其他分发节点上,从而实现负载均衡。例如在图3所示的示例中,如果一个分发节点的负 载能力为3个同步节点,则如果一个同步节点向扇形S8或S6内的分发节点发起连接请求, 则可能会被接受并建立连接;如果向扇形S2、S3或S7内的分发节点发起连接请求,则会被 拒绝请求。分发节点拒绝同步节点的连接请求后,可以基于节点列表和各分发节点的负载情 况,向连接请求的发起方,即该同步节点,通知作为连接目标的分发节点的ID,以将该同步 节点调度到其他的分发节点上。例如,如果扇形S2内的分发节点接收到同步节点的连接请求, 则其可以根据节点列表和各分发节点共享的路由表(其中记载有分发节点的负载情况),找 到低载的分发节点,例如扇形S6内的分发节点,并将该分发节点的节点ID通知给该同步节 点,以便同步节点向扇形S6内的分发节点发起连接请求。
此外,分发节点之间的负载调度也可以不由同步节点的连接请求而触发,例如可以定期 进行、或是应过载分发节点的请求而进行。例如,在图3所示的示例中,扇形S2、S3或S7 内的分发节点可能通过定期查询各分发节点共享的路由表而发现扇形S6内的分发节点没有 连接的同步节点,其处于低载状态;因此,扇形S2、S3或S7内的分发节点可以向其负载的 同步节点中的至少一个发送扇形S6内的分发节点的节点ID,以通知该至少一个同步节点去连 接扇形S6内的分发节点,从而实现分发节点之间的负载均衡。
每个分发节点建立描述与其连接的同步节点的路由表sn_route_table。路由表sn_route_table可以具有如下的结构:
struct route_item{
string nid;
uint32_t srtt;
uint32_t bandwidth;
uint16_t state;
}
std::list<route_item>sn_route_table;
其中,nid为与该分发节点连接的同步节点的ID,srtt为平滑往返时间,其指示该分发节 点与该同步节点之间传输数据的网络延时,bandwidth为该同步节点的带宽,state为该同步 节点的状态,例如掉线、在线、超载、低载、正常等。
在所有分发节点之间共享各自的路由表,例如通过在各分发节点之间广播来进行共享, 从而每个分发节点都可以建立如下的描述同步节点分布的路由表,使得每个分发节点基于各 分发节点的路由表可以获得各分发节点的负载情况,以便进行自主调度,实现负载均衡。
std::map<string,std::list<route_item>>dn_sn_route_table;
在该map集合中存储键值对(key-value),其中string字符串用作键,为分发节点ID; std::list<route_item>清单列表用作值,为该分发节点上所连接的同步节点路由表sn_route_table。
如上所述,每个共识节点在连接了一个或多个分发节点之后,建立了到分发节点的路由 表dn_route_table;每个分发节点也建立了到同步节点的路由表sn_route_table。基于这两个 路由表,构成了两层路由,如图4所示。在该两层路由下,所有的区块同步都是从共识节点 发送给同步节点的,从共识节点出发经过一层路由先把区块发送给分发节点,再由分发节点 出发经过一层路由将区块发送给同步节点,从而为区块数据的分发形成了多源组播树的结构。
此外,如上所述,为了使得各数据节点平等地参与共识过程,会定期地随机选出共识节 点和同步节点进行交换,因此,该多源组播树的数据源是可变的。共识节点中被定期地随机 选择出一个将要变换的共识节点,同步节点中被定期地随机选择出一个将要变换的同步节点, 将这两个节点的角色功能互换,从而可以实现各数据节点平等地参与共识过程。其中,随机 选择一个将要变换的共识节点或同步节点,均可以通过执行智能合约来进行。例如可以编写 并部署具有在多个链上节点中随机选择一个的功能的合约代码来在联盟链网络中创建该智能 合约。定期地调用并执行该智能合约,使得执行结果作为区块数据上链存储,链上节点均可 以获得该信息。
下面结合图5至图9来说明将要变换的共识节点和将要变换的同步节点的角色功能互换 的过程。如图5所示,从共识层的多个共识节点中随机选择出一个将要变换的共识节点,例 如节点1。节点1目前与分发层中的分发节点2和3相连接,作为节点2和3的数据源。从 同步层的多个同步节点中随机选择出一个将要变换的同步节点,例如节点5。节点5目前与 分发层中的分发节点4相连接,作为节点4分发区块的目的地。共识节点角色的变化会导致 其支撑的分发层节点没有数据源,所以,新加入的共识节点要成为原共识节点所支撑的分发 层节点的数据源。
如图6所示,节点5先连接到原共识节点即节点1所连接的分发节点即节点2和3,分别与节点2和3建立新的连接L2和L3;并断开与原分发节点即节点4的连接L1。如图7所 示,原共识节点即节点1断开与节点2和3的原有连接L4和L5,并且原同步节点即节点5 切换为共识节点,开始参与共识过程以生成并存储区块。节点5通过新建的连接L2和L3来 成为分发节点2和3的数据源。
如图8所示,原共识节点即节点1被切换为同步节点,以从分发节点接收共识节点生成 的区块,并且节点1从分发层中选择一个分发节点,建立与该分发节点的连接,以生成该分 发节点传输区块数据的一个目的地。节点1所选择的该分发节点,可以是节点5原先连接的 分发节点即节点4,也可以不是。在图8所示的示例中,节点1选择节点2并与其建立连接 L6。如上所述,作为同步节点的节点1对其所选择的分发节点即节点2发送连接请求,节点 2可以根据其负载情况来决定是否接受该请求。如果接受则建立连接,如果不接受则基于联 盟链网络的节点列表和各分发节点的负载情况将该同步节点调度到其他分发节点。
如图9所示,节点1和节点5角色功能互换后,整个联盟链网络中的各节点重新形成用 于分发区块数据的新的多源组播树。变换之后,作为共识节点的节点5通过连接L2和L3分 别成为分发节点2和3的区块数据的数据源,作为同步节点的节点1通过连接L6成为分发节 点2的分发区块数据的一个目的地。
此外,在共识节点和同步节点均分别连接到分发节点之后,例如建立如图4所示的连接 结构之后,联盟链网络除了进行上述的区块数据分发之外,还可以进行其他形式的通信。例 如,每个同步节点接收到的交易,需要经由分发节点转发到共识节点;共识节点之间的通信, 例如交易的广播、共识过程中各消息的广播等,均需要经由分发节点来进行;同步节点之间 的通信,例如有新的同步节点加入时需要从其他的同步节点同步数据,也需要经由分发节点 来进行。分发节点使得链上的任意两个数据节点之间可以相互通信。
根据本公开实施例的运行联盟链网络的方法和联盟链网络,将联盟链网络中的节点分为 由参与共识过程并生成区块数据的共识节点形成的共识层、由分发区块数据的分发节点形成 的分发层、和由同步区块数据的同步节点形成的同步层,每个共识节点连接一个或多个分发 节点并且每个分发节点连接一个或多个同步节点,使得形成对区块分发的三层高度的多源组 播树结构。多源组播树结构使每个共识节点成为了一个单源组播树的数据源,链上区块的分 发从每个共识节点开始,沿着每个单源组播树结构分发。固定一个分发层,保障了分发的低 延迟特性。随着链上节点数量的增加,可以通过适度增加分发层节点的个数,在分发时延稳 定的情况下,保障链的整体性能不降低,提升链的扩展性。在一个具体的示例中,如果联盟 链网络中的每个链上节点能够支撑的负载节点个数为20个,则如果配置40个共识节点,可 以支撑800个分发节点,并进一步支撑16000个同步节点。如果该联盟链网络上平均每个交 易大小为1KB,要支撑1000TPS,则区块同步占用的节点带宽为:1000TPS*1KB*8bit*20= 160Mbps。而如果采用常规的方案,例如全连接模式下进行应用层广播,则16000个节点的 区块同步将占用远超160Mbps的节点带宽。
图10是根据本公开实施例的用于联盟链网络的节点设备700的至少部分的结构示意图。节 点设备700包括一个或多个处理器710、一个或多个存储器720、以及通常存在于计算机等装置 中的其他组件(未示出)。一个或多个存储器720中的每一个可以存储可由一个或多个处理器 710访问的内容,包括可以由一个或多个处理器710执行的指令721、以及可以由一个或多个处 理器710来检索、操纵或存储的数据722。
指令721可以是将由一个或多个处理器710直接地执行的任何指令集,诸如机器代码, 或者间接地执行的任何指令集,诸如脚本。本公开中的术语“指令”、“应用”、“过程”、“步骤”和“程序”在本公开中可以互换使用。指令721可以存储为目标代码格式以便由一 个或多个处理器710直接处理,或者存储为任何其他计算机语言,包括按需解释或提前编译的独立源代码模块的脚本或集合。本公开其他部分更加详细地解释了指令721的功能、方法和例程。
一个或多个存储器720可以是能够存储可由一个或多个处理器710访问的内容的任何临 时性或非临时性计算机可读存储介质,诸如硬盘驱动器、存储卡、ROM、RAM、DVD、CD、USB存储器、能写存储器和只读存储器等。一个或多个存储器720中的一个或多个可以包括分布式存储系统,其中指令721和/或数据722可以存储在可以物理地位于相同或不同的地理 位置处的多个不同的存储装置上。一个或多个存储器720中的一个或多个可以经由网络连接 至一个或多个第一装置710,和/或可以直接地连接至或并入一个或多个处理器710中的任何 一个中。
一个或多个处理器710可以根据指令721来检索、存储或修改数据722。虽然本公开所 描述的主题不受任何特定数据结构限制,但是数据722还可能存储在计算机寄存器(未示出) 中,作为具有许多不同的字段和记录的表格或XML文档存储在关系型数据库中。数据722可 以被格式化为任何计算装置可读格式,诸如但不限于二进制值、ASCII或统一代码。此外,数 据722可以包括足以识别相关信息的任何信息,诸如编号、描述性文本、专有代码、指针、 对存储在诸如其他网络位置处等其他存储器中的数据的引用或者被函数用于计算相关数据的 信息。
一个或多个处理器710可以是任何常规处理器,诸如市场上可购得的中央处理单元(CPU)、 图形处理单元(GPU)等。可替换地,一个或多个处理器710还可以是专用组件,诸如专用 集成电路(ASIC)或其他基于硬件的处理器。虽然不是必需的,但是一个或多个处理器710 可以包括专门的硬件组件来更快或更有效地执行特定的计算过程。
虽然图10中示意性地将一个或多个处理器710以及一个或多个存储器720示出在同一个 框内,但是节点设备700可以实际上包括可能存在于同一个物理壳体内或不同的多个物理壳 体内的多个处理器或存储器。因此,引用处理器、计算机、计算装置或存储器应被理解成包 括引用可能并行操作或可能非并行操作的处理器、计算机、计算装置或存储器的集合。
图11是可应用于根据本公开一个或多个示例性实施例的通用硬件系统800的示例性框图。 现在将参考图11描述系统800,其是可以应用于本公开的各方面的硬件设备的示例。上述各 实施例中的节点设备700可以包括系统800的全部或部分。系统800可以是被配置为执行处 理和/或计算的任何机器,可以是但不限于工作站、服务器、台式计算机、膝上型计算机、平 板计算机、个人数据助理、智能电话、车载电脑、或其任何组合。
系统800可以包括可能经由一个或多个接口与总线802连接或与总线802通信的元件。 例如,系统800可以包括总线802,以及一个或多个处理器804,一个或多个输入设备806和一个或多个输出设备808。一个或多个处理器804可以是任何类型的处理器,可以包括但不限于一个或多个通用处理器和/或一个或多个专用处理器(例如特殊处理芯片)。上文所述 的方法中的各个操作和/或步骤均可以通过一个或多个处理器804执行指令来实现。
输入设备806可以是可以向计算设备输入信息的任何类型的设备,可以包括但不限于鼠 标、键盘、触摸屏、麦克风和/或遥控器。输出设备808可以是可以呈现信息的任何类型的设 备,可以包括但不限于显示器、扬声器、视频/音频输出终端、振动器和/或打印机。
系统800还可以包括非暂时性存储设备810或者与非暂时性存储设备810连接。非暂时 性存储设备810可以是非暂时性的并且可以实现数据存储的任何存储设备,可以包括但不限 于磁盘驱动器、光学存储设备、固态存储器、软盘、硬盘、磁带或任何其他磁介质、光盘或 任何其他光学介质、ROM(只读存储器)、RAM(随机存取存储器)、高速缓冲存储器、和/或任何其他存储器芯片/芯片组、和/或计算机可从其读取数据、指令和/或代码的任何其他介 质。非暂时性存储设备810可以从接口拆卸。非暂时性存储设备810可以具有用于实现上述 方法、操作、步骤和过程的数据/指令/代码。
系统800还可以包括通信设备812。通信设备812可以是能够与外部设备和/或与网络通 信的任何类型的设备或系统,可以包括但不限于调制解调器、网卡、红外通信设备、无线通 信设备、和/或芯片组,例如蓝牙设备、802.11设备、WiFi设备、WiMax设备、蜂窝通信设备、 卫星通信设备、和/或类似物。
总线802可以包括但不限于工业标准体系结构(ISA)总线、微通道架构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)本地总线、和外围部件互连(PCI)总 线。特别地,对于车载设备,总线802还可以包括控制器区域网络(CAN)总线或设计用于 在车辆上应用的其他架构。
系统800还可以包括工作存储器814,其可以是可以存储对处理器804的工作有用的指 令和/或数据的任何类型的工作存储器,可以包括但不限于随机存取存储器和/或只读存储设 备。
软件元素可以位于工作存储器814中,包括但不限于操作系统816、一个或多个应用程 序818、驱动程序、和/或其他数据和代码。用于执行上述方法、操作和步骤的指令可以包括 在一个或多个应用程序818中。软件元素的指令的可执行代码或源代码可以存储在非暂时性 计算机可读存储介质中,例如上述存储设备810,并且可以通过编译和/或安装被读入工作存 储器814中。还可以从远程位置下载软件元素的指令的可执行代码或源代码。
还应该理解,可以根据具体要求进行变化。例如,也可以使用定制硬件,和/或可以用硬 件、软件、固件、中间件、微代码、硬件描述语言或其任何组合来实现特定元件。此外,可 以采用与诸如网络输入/输出设备之类的其他计算设备的连接。例如,根据本公开实施例的方 法或设备中的一些或全部可以通过使用根据本公开的逻辑和算法的、用汇编语言或硬件编程 语言(诸如VERILOG,VHDL,C++)的编程硬件(例如,包括现场可编程门阵列(FPGA)和/ 或可编程逻辑阵列(PLA)的可编程逻辑电路)来实现。
还应该理解,系统800的组件可以分布在网络上。例如,可以使用一个处理器执行一些 处理,而可以由远离该一个处理器的另一个处理器执行其他处理。系统800的其他组件也可 以类似地分布。这样,系统800可以被解释为在多个位置执行处理的分布式计算系统。
尽管到目前为止已经参考附图描述了本公开的各方面,但是上述方法,系统和设备仅仅 是示例性示例,并且本公开的范围不受这些方面的限制,而是仅由以下方面限定:所附权利 要求及其等同物。可以省略各种元件,或者可以用等效元件代替。另外,可以以与本公开中 描述的顺序不同的顺序执行这些步骤。此外,可以以各种方式组合各种元件。同样重要的是, 随着技术的发展,所描述的许多元素可以由在本公开之后出现的等同元素代替。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对 二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此, 不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray, FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编 程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的 集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编 译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要 编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、 Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的 是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领 域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到 集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及 存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、 逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控 制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现 为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式 实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专 用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器 可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件 内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又 可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者 由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随 着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计 算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、 导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设 备的组合。
虽然本公开一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常 规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为 众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行 时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线 程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变 体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包 括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品 或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、 产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名 称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本公开 一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一 功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的, 例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例 如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。 另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置 或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本公开是参照根据本公开实施例的方法、装置(系统)、和计算机程序产品的流程图和 /或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和 /或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指 令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一 个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流 程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工 作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制 造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指 定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或 其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编 程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多 个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接 口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失 性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术 来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机 的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机 存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程 只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多 功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储 设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定, 计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本公开一个或多个实施例可提供为方法、系统或计算机程序产 品。因此,本公开一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和 硬件方面的实施例的形式。而且,本公开一个或多个实施例可采用在一个或多个其中包含有 计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储 器等)上实施的计算机程序产品的形式。
本公开一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述, 例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、 对象、组件、数据结构等等。也可以在分布式计算环境中实践本本公开一个或多个实施例, 在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式 计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本公开中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参 见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言, 由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明 即可。在本公开的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体 示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或 者特点包含于本公开的至少一个实施例或示例中。在本公开中,对上述术语的示意性表述不 必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任 一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技 术人员可以将本公开中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组 合。
以上所述仅为本公开一个或多个实施例的实施例而已,并不用于限制本本公开一个或多 个实施例。对于本领域技术人员来说,本公开一个或多个实施例可以有各种更改和变化。凡 在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围 之内。

Claims (52)

1.一种运行联盟链网络的方法,所述联盟链网络包括被配置为链式存储区块数据的多个数据节点以及被配置为不存储区块数据并且传输数据的多个分发节点,所述方法包括:
将所述多个数据节点划分为第一子集和第二子集,并将第一子集的数据节点配置为参与共识过程以生成并存储区块,将第二子集的数据节点配置为不参与共识过程并且从第一子集的数据节点获取并存储所生成的区块,
将所述分发节点配置为从与其连接的第一子集的数据节点接收所生成的区块,并将所述区块传输到与其连接的第二子集的数据节点。
2.根据权利要求1所述的方法,还包括:
通过执行智能合约从第一子集的数据节点中定期地随机选择出一个第一数据节点,通过执行智能合约从第二子集的数据节点中定期地随机选择出一个第二数据节点,并且将所述第一数据节点和所述第二数据节点配置为功能互换。
3.根据权利要求2所述的方法,其中,在所述功能互换之前,所述第一数据节点与所述多个分发节点中的第一分发节点相连接并且所述第二数据节点与所述多个分发节点中的第二分发节点相连接,所述方法还包括:
将所述第二数据节点连接到所述第一分发节点并使得所述第二数据节点断开与第二分发节点的连接;
使得所述第一数据节点断开与所述第一分发节点的连接,并且将所述第二数据节点切换配置为参与共识过程以生成并存储区块;以及
将所述第一数据节点切换配置为从第一子集的数据节点获取并存储所生成的区块,并使得所述第一数据节点建立与所述多个分发节点中的一个分发节点的连接,从而使得所述第一数据节点和所述第二数据节点的功能互换。
4.根据权利要求1所述的方法,还包括将所述多个数据节点和所述多个分发节点中的各节点配置为基于所述联盟链网络的节点管理合约来管理。
5.根据权利要求1所述的方法,还包括将所述分发节点配置为与其他各分发节点分别具有通信连接。
6.根据权利要求4所述的方法,还包括将所述分发节点配置为监听节点管理合约更新的事件以获取更新的节点列表,并基于节点列表建立与其他各分发节点的通信连接。
7.根据权利要求1所述的方法,还包括将所述多个分发节点配置为将第二子集的数据节点接收的交易传输到第一子集的数据节点。
8.根据权利要求5所述的方法,还包括:
将第一子集的数据节点配置为通过所述多个分发节点中的一个或多个分发节点相互通信;和/或
将第二子集的数据节点配置为通过所述多个分发节点中的一个或多个分发节点相互通信。
9.根据权利要求1所述的方法,其中,第一子集的数据节点的个数小于或等于分发节点的个数,并且分发节点的个数小于或等于第二子集的数据节点的个数。
10.根据权利要求1所述的方法,还包括将第一子集中的每个数据节点配置为与所述多个分发节点中的一个或多个分发节点相连接并且将所述多个分发节点中的每个分发节点配置为只与第一子集中的一个数据节点相连接,以及将第二子集中的每个数据节点配置为只与所述多个分发节点中的一个分发节点相连接并且将所述多个分发节点中的每个分发节点配置为与第二子集中的一个或多个数据节点相连接。
11.根据权利要求4所述的方法,还包括将数据节点配置为监听节点管理合约更新的事件以获取更新的节点列表,并基于节点列表连接分发节点。
12.根据权利要求10所述的方法,还包括将第一子集中的数据节点配置为定期地向所述多个分发节点中的一个或多个分发节点发送连接请求,并将所述一个或多个分发节点中的每个分发节点配置为:
响应于已与第一子集的数据节点相连接,拒绝所述连接请求;以及
响应于未与第一子集的数据节点相连接,接受所述连接请求以建立连接。
13.根据权利要求12所述的方法,还包括将第一子集中的数据节点配置为建立描述与其连接的分发节点的路由表。
14.根据权利要求10所述的方法,还包括将第二子集中的每个数据节点配置为向所述多个分发节点中的一个分发节点发送连接请求,并将所述一个分发节点配置为:
响应于其负载情况满足条件,接受所述连接请求以建立连接;以及
响应于其负载情况不满足条件,基于节点列表和各分发节点的负载情况,向所述连接请求的发起方通知作为连接目标的分发节点的ID。
15.根据权利要求14所述的方法,还包括将分发节点配置为建立描述与其连接的第二子集的数据节点的路由表,以及所述多个分发节点之间共享各自的路由表,从而使得每个分发节点基于各分发节点的路由表获得各分发节点的负载情况。
16.一种联盟链网络,包括:
多个数据节点,所述数据节点被配置为链式存储区块数据;以及
多个分发节点,所述分发节点被配置为不存储区块数据并且传输数据,其中,
所述多个数据节点被划分为第一子集和第二子集,第一子集的数据节点被配置为参与共识过程以生成并存储区块,第二子集的数据节点被配置为不参与共识过程并且从第一子集的数据节点获取并存储所生成的区块,
所述分发节点被配置为从与其连接的第一子集的数据节点接收所生成的区块,并将所述区块传输到与其连接的第二子集的数据节点。
17.根据权利要求16所述的联盟链网络,其中,所述多个数据节点还被配置为:第一子集的数据节点中被定期地随机选择出一个第一数据节点,第二子集的数据节点中被定期地随机选择出一个第二数据节点,并且所述第一数据节点和所述第二数据节点被配置为功能互换,其中,通过执行智能合约来进行所述随机选择。
18.根据权利要求17所述的联盟链网络,其中,在所述功能互换之前,所述第一数据节点与所述多个分发节点中的第一分发节点相连接并且所述第二数据节点与所述多个分发节点中的第二分发节点相连接,所述功能互换包括:
所述第二数据节点连接到所述第一分发节点并断开与第二分发节点的连接;
所述第一数据节点断开与所述第一分发节点的连接,并且所述第二数据节点被切换配置为参与共识过程以生成并存储区块;以及
所述第一数据节点被切换配置为从第一子集的数据节点获取并存储所生成的区块,并建立与所述多个分发节点中的一个分发节点的连接。
19.根据权利要求16所述的联盟链网络,其中,所述多个数据节点和所述多个分发节点中的每个节点均被配置为基于所述联盟链网络的节点管理合约来管理。
20.根据权利要求16所述的联盟链网络,其中,所述分发节点被配置为与其他各分发节点分别具有通信连接。
21.根据权利要求19所述的联盟链网络,其中,所述分发节点被配置为监听节点管理合约更新的事件以获取更新的节点列表,并基于节点列表建立与其他各分发节点的通信连接。
22.根据权利要求16所述的联盟链网络,其中,所述多个分发节点还被配置为将第二子集的数据节点接收的交易传输到第一子集的数据节点。
23.根据权利要求20所述的联盟链网络,其中,第一子集的数据节点还被配置为通过所述多个分发节点中的一个或多个分发节点相互通信;和/或第二子集的数据节点还被配置为通过所述多个分发节点中的一个或多个分发节点相互通信。
24.根据权利要求16所述的联盟链网络,其中,第一子集的数据节点的个数小于或等于分发节点的个数,并且分发节点的个数小于或等于第二子集的数据节点的个数。
25.根据权利要求16所述的联盟链网络,其中,第一子集中的每个数据节点还被配置为与所述多个分发节点中的一个或多个分发节点相连接并且所述多个分发节点中的每个分发节点被配置为只与第一子集中的一个数据节点相连接,第二子集中的每个数据节点还被配置为只与所述多个分发节点中的一个分发节点相连接并且所述多个分发节点中的每个分发节点被配置为与第二子集中的一个或多个数据节点相连接。
26.根据权利要求19所述的联盟链网络,其中,所述多个数据节点中的每个数据节点被配置为监听节点管理合约更新的事件以获取更新的节点列表,并基于节点列表连接分发节点。
27.根据权利要求25所述的联盟链网络,其中,第一子集中的数据节点还被配置为定期地向所述多个分发节点中的一个或多个分发节点发送连接请求,所述一个或多个分发节点中的每个分发节点:
响应于已与第一子集的数据节点相连接,拒绝所述连接请求;以及
响应于未与第一子集的数据节点相连接,接受所述连接请求以建立连接。
28.根据权利要求27所述的联盟链网络,其中,第一子集中的每个数据节点还被配置为建立描述与其连接的分发节点的路由表。
29.根据权利要求25所述的联盟链网络,其中,第二子集中的每个数据节点还被配置为向所述多个分发节点中的一个分发节点发送连接请求,所述一个分发节点:
响应于其负载情况满足条件,接受所述连接请求以建立连接;以及
响应于其负载情况不满足条件,基于节点列表和各分发节点的负载情况,向所述连接请求的发起方通知作为连接目标的分发节点的ID。
30.根据权利要求29所述的联盟链网络,其中,所述多个分发节点中的每个分发节点被配置为建立描述与其连接的第二子集的数据节点的路由表,以及所述多个分发节点之间共享各自的路由表,从而使得每个分发节点基于各分发节点的路由表获得各分发节点的负载情况。
31.一种联盟链网络,包括多个共识节点、多个分发节点和多个同步节点,其中,
所述共识节点被配置为参与共识过程以生成并链式存储区块以及与所述多个分发节点中的一个或多个分发节点相连接;
所述分发节点被配置为与所述多个同步节点中的一个或多个同步节点相连接并监听其所连接的共识节点,以及响应于其所连接的共识节点生成区块,从其所连接的共识节点获取所述区块并将所述区块传输给其所连接的一个或多个同步节点;以及
所述同步节点被配置为不参与共识过程并且从其所连接的分发节点接收所述区块并链式存储所述区块,其中,
所述多个共识节点中被定期地随机选择出一个第一节点,所述多个同步节点中被定期地随机选择出一个第二节点,并且所述第一节点和所述第二节点被配置为功能互换。
32.根据权利要求31所述的联盟链网络,其中,通过执行智能合约来进行所述随机选择。
33.根据权利要求31所述的联盟链网络,其中,在所述功能互换之前,所述第一节点与所述多个分发节点中的第一分发节点相连接并且所述第二节点与所述多个分发节点中的第二分发节点相连接,所述功能互换包括:
所述第二节点连接到所述第一分发节点并断开与第二分发节点的连接;
所述第一节点断开与所述第一分发节点的连接,并且所述第二节点被切换配置为参与共识过程以生成并存储区块;以及
所述第一节点被切换配置为不参与共识过程并且从其所连接的分发节点接收并存储区块,并建立与所述多个分发节点中的一个分发节点的连接。
34.根据权利要求31所述的联盟链网络,其中,所述分发节点被配置为与其他各分发节点分别具有通信连接。
35.根据权利要求34所述的联盟链网络,其中,所述分发节点被配置为将同步节点接收的交易传输给当前分发节点所连接的共识节点和其他分发节点。
36.根据权利要求34所述的联盟链网络,其中,所述多个共识节点和所述多个同步节点中的任两个节点之间的通信通过所述多个分发节点中的一个或多个分发节点进行。
37.根据权利要求31所述的联盟链网络,其中,所述多个共识节点和所述多个同步节点中的每个节点被配置为监听节点管理合约更新的事件以获取更新的节点列表,并基于节点列表连接分发节点。
38.根据权利要求31所述的联盟链网络,其中,所述共识节点还被配置为定期地向所述多个分发节点中的一个或多个分发节点发送连接请求,所述一个或多个分发节点中的每个分发节点:
响应于已与共识节点相连接,拒绝所述连接请求;以及
响应于未与共识节点相连接,接受所述连接请求以建立连接。
39.根据权利要求31所述的联盟链网络,其中,所述同步节点还被配置为向所述多个分发节点中的一个分发节点发送连接请求,所述一个分发节点:
响应于其负载情况满足条件,接受所述连接请求以建立连接;以及
响应于其负载情况不满足条件,基于所述联盟链网络的节点列表和各分发节点的负载情况,向所述连接请求的发起方通知作为连接目标的分发节点的ID。
40.根据权利要求39所述的联盟链网络,其中,所述分发节点被配置为建立描述与其连接的同步节点的路由表,以及所述多个分发节点之间共享各自的路由表,从而使得每个分发节点基于各分发节点的路由表获得各分发节点的负载情况。
41.一种用于联盟链网络的节点设备,包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器被配置为存储一系列计算机可执行指令,其中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,使所述一个或多个处理器执行:响应于被配置为参与共识过程的共识节点:
监听节点管理合约更新的事件以获取更新的节点列表,并基于节点列表定期地与所述联盟链网络中的被配置为传输数据的一个或多个分发节点建立连接;
参与共识过程以生成并链式存储区块;以及
将所生成的区块传输给与其连接的分发节点。
42.根据权利要求41所述的节点设备,其中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器执行:响应于被配置为共识节点:
监听节点选择合约更新的事件以获取定期地随机选择的将要变换的共识节点ID;
响应于将要变换的共识节点ID指向所述节点设备,断开与分发节点之间的连接;以及
切换为不参与共识过程的同步节点,并基于节点列表与一个分发节点建立连接。
43.根据权利要求41所述的节点设备,其中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器执行:响应于被配置为共识节点:
接收并记录分发节点转发的交易。
44.根据权利要求41所述的节点设备,其中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器执行:响应于被配置为不参与共识过程的同步节点:
监听节点管理合约更新的事件以获取更新的节点列表,并基于节点列表与一个分发节点建立连接;以及
从其连接的分发节点接收并链式存储区块。
45.根据权利要求41所述的节点设备,其中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器执行:响应于被配置为同步节点:
监听节点选择合约更新的事件以获取定期地随机选择的将要变换的同步节点ID;以及
响应于将要变换的同步节点ID指向所述节点设备,获取将要变换的共识节点ID所对应的共识节点所连接的分发节点的信息;
连接到将要变换的共识节点ID所对应的共识节点所连接的分发节点并断开原本连接的分发节点;以及
切换为参与共识过程的共识节点。
46.根据权利要求42或44所述的节点设备,其中,基于节点列表与一个分发节点建立连接包括:
基于节点列表任意选择一个分发节点并发送连接请求;
响应于连接请求被接受,与所述分发节点建立连接;以及
响应于连接请求被拒绝,从所述分发节点接收作为连接目标的另一个分发节点的ID,并向所述另一个分发节点发送连接请求。
47.一种用于联盟链网络的节点设备,包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器被配置为存储一系列计算机可执行指令,其中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,使所述一个或多个处理器执行:
与所述联盟链网络中的一个被配置为参与共识过程并存储区块的共识节点建立连接,并且与所述联盟链网络中的一个或多个被配置为不参与共识过程并存储区块的同步节点建立连接;以及
响应于其所连接的共识节点生成区块,从其所连接的共识节点获取所述区块,并将所述区块传输给其所连接的一个或多个同步节点。
48.根据权利要求47所述的节点设备,其中,所述节点设备与所述联盟链网络中其他的被配置为传输数据的分发节点分别具有通信连接。
49.根据权利要求48所述的节点设备,其中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器执行:
将同步节点接收的交易传输给所述节点设备所连接的共识节点和其他分发节点。
50.根据权利要求47所述的节点设备,其中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器执行:
响应于接收到来自共识节点的连接请求并且已与共识节点相连接,拒绝所述连接请求;以及
响应于接收到来自共识节点的连接请求并且未与共识节点相连接,接受所述连接请求以与所述共识节点建立连接。
51.根据权利要求47所述的节点设备,其中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器执行:
响应于接收到来自同步节点的连接请求并且所述节点设备的负载情况满足条件,接受所述连接请求以建立连接;以及
响应于接收到来自同步节点的连接请求并且所述节点设备的负载情况不满足条件,基于所述联盟链网络的节点列表和各分发节点的负载情况,向所述连接请求的发起方通知作为连接目标的分发节点的ID。
52.根据权利要求51所述的节点设备,其中,所述一系列计算机可执行指令在由所述一个或多个处理器执行时,还使所述一个或多个处理器执行:
建立描述与其连接的同步节点的路由表并与其他分发节点共享路由表,从而使得基于各分发节点的路由表来获得各分发节点的负载情况。
CN202210615860.0A 2022-06-01 2022-06-01 一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备 Pending CN115037756A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202210615860.0A CN115037756A (zh) 2022-06-01 2022-06-01 一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备
PCT/CN2022/135407 WO2023231343A1 (zh) 2022-06-01 2022-11-30 一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210615860.0A CN115037756A (zh) 2022-06-01 2022-06-01 一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备

Publications (1)

Publication Number Publication Date
CN115037756A true CN115037756A (zh) 2022-09-09

Family

ID=83123743

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210615860.0A Pending CN115037756A (zh) 2022-06-01 2022-06-01 一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备

Country Status (2)

Country Link
CN (1) CN115037756A (zh)
WO (1) WO2023231343A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023231343A1 (zh) * 2022-06-01 2023-12-07 蚂蚁区块链科技(上海)有限公司 一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180240114A1 (en) * 2017-02-22 2018-08-23 Alibaba Group Holding Limited Transaction verification in a consensus network
CN109981750A (zh) * 2019-03-06 2019-07-05 北京百度网讯科技有限公司 业务流程系统、业务数据处理方法和装置
CN111159295A (zh) * 2019-12-28 2020-05-15 深圳市网心科技有限公司 区块链系统、数据存储方法、数据存储装置和设备及介质
CN111277645A (zh) * 2020-01-16 2020-06-12 深圳市网心科技有限公司 主备节点热切换方法、区块链系统、区块链节点及介质
WO2020227984A1 (en) * 2019-05-15 2020-11-19 Nokia Technologies Oy Parallel multi-blocks creation scheme for blockchain
CN112685505A (zh) * 2021-01-07 2021-04-20 腾讯科技(深圳)有限公司 一种交易数据处理方法、装置、计算机设备及存储介质
CN114092252A (zh) * 2021-11-26 2022-02-25 成都质数斯达克科技有限公司 一种区块链交易执行方法、装置、设备及可读存储介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107018125B (zh) * 2017-02-17 2019-08-09 阿里巴巴集团控股有限公司 一种区块链系统、数据存储方法及装置
CN114157671B (zh) * 2021-11-26 2024-06-18 支付宝(杭州)信息技术有限公司 将区块链网络承载的信息向多个客户端节点分发的方法
CN114218612B (zh) * 2021-12-14 2023-10-20 河北省科学院应用数学研究所 一种适用于联盟链高频交易场景的共识方法
CN115037756A (zh) * 2022-06-01 2022-09-09 蚂蚁区块链科技(上海)有限公司 一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180240114A1 (en) * 2017-02-22 2018-08-23 Alibaba Group Holding Limited Transaction verification in a consensus network
CN109981750A (zh) * 2019-03-06 2019-07-05 北京百度网讯科技有限公司 业务流程系统、业务数据处理方法和装置
WO2020227984A1 (en) * 2019-05-15 2020-11-19 Nokia Technologies Oy Parallel multi-blocks creation scheme for blockchain
CN111159295A (zh) * 2019-12-28 2020-05-15 深圳市网心科技有限公司 区块链系统、数据存储方法、数据存储装置和设备及介质
CN111277645A (zh) * 2020-01-16 2020-06-12 深圳市网心科技有限公司 主备节点热切换方法、区块链系统、区块链节点及介质
CN112685505A (zh) * 2021-01-07 2021-04-20 腾讯科技(深圳)有限公司 一种交易数据处理方法、装置、计算机设备及存储介质
CN114092252A (zh) * 2021-11-26 2022-02-25 成都质数斯达克科技有限公司 一种区块链交易执行方法、装置、设备及可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023231343A1 (zh) * 2022-06-01 2023-12-07 蚂蚁区块链科技(上海)有限公司 一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备

Also Published As

Publication number Publication date
WO2023231343A1 (zh) 2023-12-07

Similar Documents

Publication Publication Date Title
CN101711387B (zh) 移动设备的功能的对等共享
CN103442049B (zh) 一种面向构件的混合型云操作系统体系结构及其通信方法
CN110262902B (zh) 信息处理方法及系统、介质和计算设备
Wang et al. Towards network-aware service composition in the cloud
CN102025550A (zh) 一种分布式集群中数据管理的系统和方法
CN104537076A (zh) 一种文件读写方法及装置
CA3100810C (en) Multicast encryption scheme for data-ownership platform
CN113067897B (zh) 跨链交互方法及装置
WO2024001022A1 (zh) 跨子网调用
CN111932239B (zh) 业务处理方法、装置、节点设备及存储介质
CN114301828A (zh) 一种跨子网交互方法、装置、电子设备和存储介质
CN115037756A (zh) 一种运行联盟链网络的方法、联盟链网络和用于联盟链网络的节点设备
CN105554126A (zh) 一种通过cdn加速机制实现多数据中心分布式部署的方法
CN114374699A (zh) 跨链交互方法和跨链交互的审计方法
CN103297542A (zh) 一种支持构件在线伸缩的云操作系统总线及均衡方法
WO2024119751A1 (zh) 一种多以太网交换机的信息交换方法及相关装置
WO2023185043A1 (zh) 一种可调用资源的分配方法和装置
CN114363335B (zh) 跨链交互方法及装置
CN115022340B (zh) 一种运行联盟链网络的方法和用于区块链网络的节点设备
CN103312808B (zh) 一种云操作系统总线及通信方法
CN115374949A (zh) 分布式量子计算系统和资源管理方法
CN102929605A (zh) 一种基于云计算的数据挖掘系统开放接口
CN115242646B (zh) 一种基于区块链的网络切片应用方法以及相关装置
CN113810313B (zh) 分布式会话报文的处理方法及处理装置
CN103037016A (zh) 一种p2p节点选择系统

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