首页 / 专利库 / 计算机网络 / 对等网络 / 具有安全访问限制管理的分布式私有子空间化区块链数据结构

具有安全访问限制管理的分布式私有子空间化链数据结构

阅读:992发布:2020-05-08

专利汇可以提供具有安全访问限制管理的分布式私有子空间化链数据结构专利检索,专利查询,专利分析的服务。并且本文公开了一种用于提供密码平台以在 对等网络 内分发数据结构的系统,其中加密消息在 节点 之间交换。系统提供了创建和管理私有子空间化 区 块 链 ,该私有子空间化区块链包括私有的、但是可以通过使用全局状态根来核实的子空间。全局状态根基于子空间根来更新,子空间根又是基于该子空间中的数据生成。,下面是具有安全访问限制管理的分布式私有子空间化链数据结构专利的具体信息内容。

1.一种用于提供分布式平台以支持数据的私有和安全交换以及确保这种数据的认证的系统,所述系统包括:
经由网络相互通信耦接的多个节点,所述多个节点中的每个节点具有用于接收在公共子空间中交换的消息的逻辑;
所述多个节点中的节点子集,所述节点子集对应于一个域并且具有访问在所述域内的私有子空间内交换的消息的许可
所述节点子集内的验证节点集,每个验证节点具有用于基于在所述私有子空间内交换的消息来生成状态根的逻辑;以及
所述节点子集内的所述节点还具有用于基于所述状态根生成全局状态根值的逻辑。
2.根据权利要求1所述的系统,其中所述状态根是对所述私有子空间中的数据执行哈希函数得到的哈希值,并且其中所述全局状态根是对包括所述状态根的数据集执行哈希函数得到的哈希值。
3.根据权利要求1所述的系统,其中所述验证节点集中的每个节点具有用于基于涉及所述验证节点集中其他节点的共识投票过程来验证在所述私有子空间内交换的消息的逻辑。
4.根据权利要求1所述的系统,其中在所述公共子空间中维护用于每个节点的许可信息,并且其中通过所述多个节点在所述公共子空间中交换和验证消息来管理对许可信息的改变。
5.根据权利要求4所述的系统,其中所述多个节点中的每个节点具有用于基于所述许可信息将接收到的消息转发给被许可接收这种消息的其他节点的逻辑。
6.根据权利要求1所述的系统,其中所述多个节点中的每个节点通信耦接到数据库,并且所述多个节点中的每个节点在所述数据库内存储已经验证的消息和区
7.根据权利要求6所述的系统,其中每个节点还包括用于根据一个或多个标准集来删除消息和区块的逻辑,其中删除消息保留所述子空间哈希值和全局哈希值。
8.一种在支持数据的私有和安全交换以及确保这种数据的认证的分布式平台中的网络节点,所述系统包括:
用于接收在公共子空间中交换的消息以及用于接收在所述节点被许可的私有子空间中交换的消息的逻辑,其中所述网络中的所有节点具有访问所述公共子空间中的消息的许可;
用于基于在所述私有子空间中交换的消息生成子空间哈希值的逻辑;以及用于基于所述子空间哈希值生成全局哈希值的逻辑。
9.根据权利要求8所述的网络节点,还包括用于基于涉及所述分布式平台中其他节点的共识投票过程来验证在所述私有子空间内交换的消息的逻辑。
10.根据权利要求8所述的网络节点,其中在所述公共子空间中维护用于每个节点的许可信息,并且其中通过所述网络节点在所述公共子空间中交换和验证消息来管理对许可信息的改变。
11.根据权利要求10所述的网络节点,还包括用于基于所述许可信息将接收到的消息转发给被许可接收这种消息的其他节点的逻辑。
12.根据权利要求8所述的网络节点,其中所述网络节点通信耦接到数据库,并且其中所述网络节点在所述数据库内存储已经验证的消息和区块。
13.根据权利要求12所述的网络节点,还包括用于根据一个或多个标准集来删除消息和区块的逻辑,其中删除消息保留所述子空间哈希值和全局哈希值。
14.一种在计算机存储器中实现的分布式数据结构,用于在分布式网络中的多个节点之间安全地交换私有数据并确保这种数据的认证,所述数据结构包括:
一个或多个私有子空间,具有仅能够由所述多个节点中具有充分访问凭证的节点访问的内容,每个子空间包括状态根;
公共子空间,对于所述多个节点中的所有节点都是能够访问的,所述公共子空间识别每个私有子空间的验证节点;以及
报头,包括:基于所述一个或多个子空间的状态根的全局状态根。
15.根据权利要求14所述的分布式数据结构,其中每个私有子空间的所述状态根是对所述私有子空间中的数据执行哈希函数得到的哈希值。
16.根据权利要求14所述的分布式数据结构,其中所述全局状态根是对包括所述一个或多个私有子空间的状态根的数据集执行哈希函数得到的哈希值。
17.根据权利要求14所述的分布式数据结构,其中所述公共子空间包括用于管理所述多个节点中每个节点的许可的脚本。
18.根据权利要求14所述的分布式数据结构,其中每个私有子空间包含用于通过保留所述子空间的哈希值的删除过程来删除所述私有子空间内的区块和消息的策略。
19.根据权利要求14所述的分布式数据结构,其中所述报头还包括用于验证所述分布式数据结构的一个或多个密码签名。
20.根据权利要求14所述的分布式数据结构,其中所述报头还包括消息根,所述消息根的值是包含在所述分布式数据结构内的所有消息的函数。

说明书全文

具有安全访问限制管理的分布式私有子空间化链数据

结构

[0001] 相关申请
[0002] 本申请要求于2017年6月1日提交的美国临时专利申请序列号No.62/513,773的优先权,其在法律允许的全部范围内通过引用合并于此。

技术领域

[0003] 本发明一般涉及私有子空间化区块链分布式数据结构以及用于管理该数据结构的系统和方法。更具体地,本发明涉及具有多个子空间的新型许可链数据结构、集成验证机制(也提供对链数据结构中的子空间的许可和安全访问)以及管理此类许可链数据结构的系统和方法。

背景技术

[0004] 分布式数据库可以提供一种去中心化手段以在多个不同用户之间分发共享数据,每个用户都可能需要访问共享数据,但彼此之间又相互远离。为了使这种共享数据可靠,必须有一种方式来核实分布式数据库中数据的完整性。分布式数据库的一种形式是“区块链”(或“块链”),它是一种数据结构类型,由一系列按时间顺序链接的较小数据结构或记录组成,称为“区块”,每个区块包含一个到链中的前一区块的链接。每个区块包含区块链中在先区块的哈希值,其用作链接这两个区块的手段。哈希值的使用有助于确保数据的可核实性,并防止修改区块链内的数据。区块链的完整性通过其去中心化的特性得到了提高,因为不需要一个位于中心的“官方”区块链副本。相反,区块链的多个可核实副本可能存储在不同的用户中,从而防止对区块链的未经授权的修改。
[0005] 像传统区块链这样的分布式和去中心化数据结构的一个缺点是,存储在这种数据结构中的数据必须能够被数据结构副本的每个持有者访问。数据对于分布式数据结构副本的每个持有者的可访问性是必要的,以使得用户能够核实其中存储的数据的完整性,并确保存储在分布式数据结构的特定副本中的数据没有在未许可情况下被篡改和修改。结果,像传统的区块链一样,这种分布式数据结构不允许用户在区块链中私有地存储数据。共享和利用这种分布式数据结构的传统系统也不需要授权或许可访问,相反其受益于缺少访问控制,因为附加用户的存在通常增加了分布式数据结构的副本数量,从而降低篡改记录的险。在这方面,这种传统的系统通常没有核实系统中节点身份和关联许可的手段。

发明内容

[0006] 本文公开了用于创建和分布式管理能够允许安全访问限制的新型数据结构的系统和方法。该新型数据结构和关联的功能基于区块链原理,也即它们是包括链接在一起形成链的区块的分布式数据库,其中每个区块包括链中在先区块的哈希,其将两个区块链接在一起。不过这些新型数据结构不同于传统区块链结构之处在于它们包括重要且新颖的特征和功能性,其允许每个区块的数据集内的私有数据子空间,其中这种子空间只有具有许可访问这种子空间的节点可以访问,并且其中区块的副本通常以使得节点仅接收该节点被许可的那些子空间的方式传播。为了便于参考,本文公开的新型数据结构称为“私有子空间化区块链”,不过要认识到这些数据结构明显不同于传统的区块链,如下文详细描述的。
[0007] 如本文所公开的,该新型数据结构及其管理提供了分布式的、基于共识的数据有效载荷(子空间)完整性核实的优势,其中多个不同节点保留数据结构的部分副本,同时提供数据共享和数据隔离。特别地,数据结构中的公共参考数据对所有许可的节点可用,而数据有效载荷的一部分(此处称为数据结构内的“子空间”)仅对具有足够访问凭证的节点可用。系统和方法还提供了数据许可,以允许具有足够许可的节点根据需要进行读/写访问。本发明的系统和方法进一步提供了新型手段,用于在节点之间安全、经认证的传送这些数据结构,以及用于提供节点之间互连以协助这种传送,从而涉及特定数据结构的节点之间的通信不影响对涉及数据结构其他副本的其他节点之间的通信进行处理的系统容量或能。本发明的系统和方法进一步为数据结构提供了确保隔离的改进的共识机制,这意味着一对节点之间失败的共识不会导致其他节点对之间的级联失败。本发明的系统和方法进一步为数据结构提供了确保连续性的改进的共识机制,这意味着即使在无法到达的处理节点的情况下,系统也能继续正确地处理和保持数据结构的完整性。本发明的系统和方法进一步提供了改进的节点之间的冲突管理,以及改进的扩展,从而附加节点的部署不需要对现有节点进行重大更新。此外,本发明的系统和方法进一步提供了以数据可核实的方式改进与外部数据库的同步。
[0008] 本文中新型的私有子空间化区块链数据结构以及相关的系统和方法可以在各种上下文中使用,而上述特征和改进将是有利的。例如,此新型数据结构和相关的系统和方法可以用来实现安全的数据交换,数据涉及库存管理、部件跟踪(例如,飞机零部件维修周期跟踪)、来源核实高价值货物(如钻石)、医疗记录、与真实财产和数字财产有关的所有权转移、安全文档处理、以及其他受益于同时提供分布式核实和许可的数据存储和访问特征的数据结构的领域和应用。此外,此新型数据结构和相关的系统和方法可以用于为智能合约应用实现安全系统,包括与信用违约互换(CDS)、股权互换和外汇(FX)交易相关的应用。
[0009] 根据本发明的实施例,提供了一种用于密码平台在对等网络中分发数据结构的系统,该系统包括:非瞬态计算机可读存储介质;通过执行一个或多个软件模块而配置的处理器,这些模块包括存储在存储介质中的代码形式的指令,模块包括:通信模块,配置处理器通过网络在第一对等节点和第二对等节点之间发送和接收来自远程设备的加密数据;核心模块,配置处理器以创建代表在所述第一对等节点和第二对等节点之间交换的加密数据的状态根,并且其中核心模块进一步配置处理器以创建代表在网络内的多个对等节点之间交换的加密数据的全局状态根,并且其中核心模块进一步配置处理器以在向网络提供对等节点之间交换的可核实数据记录的私有子空间化区块链内创建许可区块;数据库模块,配置处理器以将在所述第一对等节点和第二对等节点之间传播的数据存储到存储介质中;并且其中数据库模块进一步配置处理器以将状态根、全局状态根和区块存储到存储介质中。
[0010] 在另一实施例中,提供了一种计算机程序产品,计算机程序产品具体化在计算机可读介质上,用于处理数据结构的分发,包括:用于在多个对等节点之间发射和接收多个加密消息的计算机代码;用于为在所述对等节点之间交换的加密消息创建多个状态根的计算机代码;用于在全局状态根中存储多个状态根的计算机代码,其中每个状态根定义了数据子空间;以及用于创建包括具有多个子空间的多个全局状态根的私有子空间化区块链的计算机代码。
[0011] 在本发明的又一实施例中,提供了一种用于在底层网络上构建的一个或多个网络中的对等节点之间分发数据结构的密码系统,其中数据结构包括多个全局状态根,并且其中该多个全局状态根包括多个状态根,密码系统包括:存储器,存储私有子空间化区块链内的多个许可区块;状态根生成器,基于在子空间内的多个对等节点之间交换的加密消息创建状态根;全局状态根生成器,基于一个或多个状态根创建全局状态根;区块编译器,对所述全局状态根和状态根进行编译;以及许可区块生成器,生成所述许可区块,其中许可区块包括所述全局状态根和一个或多个状态根。
[0012] 在另一实施例中,提供了一种用于在对等网络内提供分发数据结构的密码平台的系统,该系统包括:基于的数据库,包含为多个区块中每个定义多个全局状态根的数据,其中每个全局状态根包括多个状态根;支持网络的设备,用于为多个对等节点发送和接收加密数据;计算机服务器,耦接到支持网络的设备和基于云的数据库并被编程从而:对在第一对等节点和第二对等节点之间发射的数据加密;自动生成用于在所述第一对等节点和第二对等节点之间发射的数据的状态根以创建子空间信息;响应于生成状态根,自动更新全局状态根;创建包含更新的全局状态根的区块,该全局状态根包括多个状态根,包括具有子空间信息的所述状态根;以及将私有子空间化区块链内的所述区块存储在所述基于云的数据库中。
[0013] 在另一实施例中,提供一种系统和方法,用于存储对应于私有智能合约的指令以及使用私有子空间化区块链数据结构在虚拟机中执行这些指令。
[0014] 通过适当处参考附图阅读下文的详细描述,这些以及其他方面和优势对于本领域普通技术人员而言将变得显而易见。此外,应当理解,前述概述仅仅是示意性的,不旨在于以任何方式限制所附权利要求依法享有的同等权利的范围或范畴。

附图说明

[0015] 专利或申请文件包含至少一幅彩图。本专利或专利申请带有彩图的公开副本将由官方根据请求并支付必要费用而提供。本发明结合附图描述如下,附图中:
[0016] 图1是示出根据本发明实施例的用于创建和分布式管理具有安全访问限制的数据结构的系统组件的图示;
[0017] 图2是示出根据本发明实施例的上述系统的核心模块和数据库模块的组件的图示;
[0018] 图3是示出根据本发明实施例的对等或验证节点的组件的图示;
[0019] 图4是示出根据本发明实施例的区块的内容的图示;
[0020] 图5是根据本发明实施例的两个节点交换加密数据的示意图;
[0021] 图6是根据本发明实施例的服务节点请求数据、检查许可和验证数据的示意图;
[0022] 图7A和图7B是示出根据本发明实施例的一个节点向另一被许可节点发送其可访问的子空间内的信息的图示;
[0023] 图8是示出根据本发明实施例的用于三个不同节点的数据的可访问子空间的图示;
[0024] 图9是示出根据本发明实施例的在子空间中交换的消息被添加到私有子空间化区块链的图示;
[0025] 图10是示出根据本发明实施例的创建将包括在区块报头中的状态根和全局状态根的图示;
[0026] 图11A-图11D是示出根据本发明实施例的交换数据、验证数据和创建包含来自所有子空间的状态根的区块的图示;
[0027] 图12A-图12G是示出根据本发明实施例的在节点之间的共识过程的图示;
[0028] 图13是示出根据本发明实施例的在被许可网络内验证节点的图示;
[0029] 图14是根据本发明实施例的子空间验证映射的示意图;
[0030] 图15是示出根据本发明实施例的智能合约的组件和对应的子空间交互的图示;
[0031] 图16A-图16E是示出根据本发明实施例的核心模块的应用的图示;
[0032] 图17A-图17C是示出根据本发明实施例的核心模块的另一应用的图示;
[0033] 图18是示出根据本发明实施例的使用具有自动物理连接和合约许可的正在进行的权限管理的系统的应用的图示;
[0034] 图19是示出根据本发明实施例的与私有子空间化区块链相关的域和子空间之间的关系的图示;以及
[0035] 图20A-图20B是示出使用私有子空间化区块链和相关系统来实现抵押贷款支持证券(MBS)池的图示。

具体实施方式

[0036] 尽管本发明能够以各种形式体现,为了简化和示意性目的,本发明的原理部分通过参考本发明的若干实施例进行描述。然而,应当理解,本公开应当视为所请求保护主题的一个范例,而不旨在将所附权利要求限制于所阐述的特定实施例。对于本领域普通技术人员而言将很明显,可以实践本发明而不受限于这些特定细节。在其他情况下,没有对公知方法和结构进行详细描述以免不必要地模糊本发明。
[0037] 图1示出根据本发明实施例的用于创建和分布式管理具有安全访问限制的私有子空间化区块链和其他分布式数据结构的系统100。系统100围绕分布式网络节点112构建,这些节点经由局域网(LAN)或广域网(WAN)(诸如互联网)或其组合相互可通信地链接。每个节点可以在具有用于执行本文描述的功能的逻辑的一个或多个服务器上实现。系统100的组件(诸如核心模块104和数据库106)可以驻留在单个服务器上,或者可以驻留在一个或多个服务器上。核心模块104提供系统中每个节点的核心功能性。具有核心模块104的每个节点可以与数据库模块106交互,数据库模块106可以位于单独的服务器上。除了与核心模块104相关联的功能性之外,每个节点还可以包括与API 102相关联的功能性(如下文进一步描述的),以及用于增加的安全性的硬件密钥管理108。核心模块104包括提供用于创建、配置和注册节点的功能。在节点被创建之后,核心模块104初始化该节点,将该节点连接到集成工具(API)102,以及经由对等网络将该节点连接到一个或多个共识节点。核心模块104基于节点类型(验证、对等、服务)来配置节点,如下文进一步描述的,这确定了节点在系统100中的色。核心模块104还通过向节点提供指示基于标识创建该节点的一方或用户的标识符节点可以访问哪些子空间的信息来配置节点。在某些实施例中,创建方或用户的标识符可以与节点类型相关联,并且可以用于标识节点类型。例如,作为注册过程的一部分,系统维护并向每个节点分发一个表,该表将每一方/用户的标识符与特定节点类型(验证、对等、服务)相关联。附加地或备选地,通过使用在系统中所有节点都可以访问的公共子空间中维护的信息来维护节点注册,由此确保注册数据是一致的并可用于所有节点。节点注册信息包括节点被许可的子空间列表,以及针对每个子空间的访问权限级别(例如,对等点是否具有验证器、对等或服务节点访问权限)。通过这种方式,节点可以针对不同子空间具有不同的访问权限级别。例如,一个节点可以是一个子空间上的“验证器”,同时是另一子空间上的“对等”。节点注册可以在公共子空间上运行的特定脚本(例如,智能合约)中进行管理。对注册数据集的改变可以通过向公共子空间上的脚本发送消息来进行,并且一旦请求改变的消息在私有子空间化区块链中的区块内被确认,这种改变就起作用。
[0038] 每个节点存储指示节点类型(验证、对等或服务)的类型信息,其确定了节点相对于系统100以及网络上的其他节点的角色及其行为,诸如节点的数据访问级别及其主要功能,如图2所示。验证节点202具有该节点被许可的所有子空间的访问权限。验证节点涉及用于验证私有子空间化区块链中的区块的共识过程,如下文进一步讨论的。特别地,验证节点与特定子空间中的其他节点在有关有效消息和区块方面达成协议。验证节点202进一步将它接收到的所有消息转发给被许可接收此类消息的节点,以及将消息提交给私有子空间化区块链上的区块。类似于验证节点202,对等节点204具有该节点被许可的所有子空间的访问权限。然而,不同于验证节点,对等节点是不参与共识过程的观察方。因此,可以将对等节点称为观察方节点。在功能性方面,对等节点204还将它接收到的所有消息转发给被许可接收此类消息的节点,但不将消息和区块提交给私有子空间化区块链。此外,对等节点204和验证器节点各自提供对外部系统的访问,并与此类外部系统进行交互。对等节点(类似于其他节点)配置成维护企业数据库208,如下文进一步讨论的。在这方面,企业数据库包含扩展的数据集,并且每个节点包括支持与数据库208交互的逻辑和编程,诸如能够根据节点的类型在数据库208中存储和聚合数据并有效地查询数据库208。特别地,对等节点具有使得节点能够查询数据库208的逻辑和编程。验证器节点具有使得节点能够查询数据库208并通过链接到智能合约的事件在数据库208中存储和聚合数据的逻辑和编程。除了数据库208提供的数据库功能性外,API 102还提供了扩展功能,使得系统100能够与具有其他数据格式的外部现有系统集成。例如,API 102可以包括用于以下的功能和过程:用于访问以不同于本文描述的区块链结构的数据格式存储在外部现有系统中的数据,用于将数据导入到企业数据库208,用于查询这种数据,用于将这种数据整合到系统100中,用于将数据集转换为适合与本文描述的区块链结构一起使用的格式,以及用于将来自本文描述的区块链结构的数据输出为适合于外部系统使用的格式。在其他实施例中,验证节点也可以与外部系统交互。服务节点206具有对某些子空间内的有限的智能合约集合的访问权限。服务节点206也接收和转发有限数量的消息,尽管它接收公共子空间中的所有消息。
[0039] 图3提供了根据本系统实施例的对等节点或验证节点300的表示,其示出了与每个节点相关联的特征和逻辑。每个节点可以在一个或多个服务器中实现,其中接口用于经由LAN或WAN与系统100中的其他联网节点和组件通信,内部逻辑用于执行本文所列出的功能,并且内部存储器用于存储变量和数据。每个对等节点或验证节点包含用于经由对等(p2p)协议与其他节点通信的通信逻辑302,如本文进一步描述的。在优选实施例中,系统100中的节点使用可扩展的、版本化的二进制编码方案(诸如递归长度前缀(RLP))来格式化消息以便进行通信。节点发送的消息使用私钥签名以核实发送节点的身份并防止欺骗。每个对等节点或验证节点还包含用于实现远程过程调用(RPC)协议的API逻辑304,节点可以通过API逻辑304向其他节点和系统组件发送通知,以及调用其他系统组件中的过程和子例程的执行。在优选实施例中,节点使用JSON-RPC协议。每个对等节点或验证节点还包括共识逻辑306,用于实现系统所使用的共识算法来验证消息和区块,如本文进一步讨论的。根据一个实施例,系统使用Raft共识算法,不过其他共识逻辑也可以通过逻辑306来实现。在其他实施例中,使用拜占庭容错(byzantine fault tolerant)(BFT)共识机制。在其他实施例中,系统使用轮流共识机制或联合签名来验证消息和区块。共识逻辑306还负责处理消息和向区块添加已验证消息。每个对等节点或验证节点还包含用于脚本执行的逻辑308,其可以用作用于执行脚本的运行时环境,脚本包括例如执行与智能合约相关联的代码。用于脚本执行的逻辑308可以与以太坊虚拟机(EVM)实现兼容。每个对等节点或验证节点还包括数据储存库310以及用于存储、检索和查询数据储存库的关联逻辑。数据储存库310用作消息、区块和关联元数据的数据库存储库。特别地,数据储存库310包含一个或多个数据库,用于长期存储系统变量,诸如私有子空间化区块链数据。数据储存库310为每个节点提供对该节点被许可的所有子空间的数据访问。当私有子空间化区块链与智能合约相关时,数据储存库310存储智能合约信息并为节点提供对此类信息的快速检索。
[0040] 服务节点206与对等和验证节点的不同之处在于,它们不处理所有消息(例如,它们不在虚拟机中运行所有消息)并且不维护每个子空间的完整状态树。服务节点接收子空间中数据的子集,可以在虚拟机中处理消息,或者仅接收作为执行脚本的结果而生成的数据(例如,合约数据)。例如,服务节点可以接收到特定交易(例如,特定合约)的所有消息,或仅接收该交易数据的最新状态而不处理任何消息。服务节点206向验证器或对等节点请求服务节点被许可的状态树的任何部分。可以许可服务节点接收子空间中的所有消息,或者只是消息的子集。这种粒度级别的访问权限是可能的,因为子集是由灵活的过滤规则定义的(例如,通过发送账户)。
[0041] 针对图1,客户端终端114能够通过使用系统集成工具102(是一组应用编程接口(API))来访问系统100和核心模块104的功能。这些API 102包括功能调用,客户端终端114可以通过这些功能调用来管理对客户端节点的许可,执行远程过程调用(RPC)和建立与系统网络中节点的连接,用系统管理客户端的帐户,以及管理本文公开的私有子空间化区块链中的数据记录的内容(例如,智能合约)。特别地,这些API 102包括可以被客户端终端114调用的、访问核心模块104的功能的功能,以便创建、配置和注册节点;与本文公开的新型分布式数据结构交互;以及配置许可和对系统网络的访问。这些API102还包括可以被客户端终端114调用的、访问数据库模块106的功能的功能,以便访问存储在数据库模块106中的数据、管理这种数据以及对这种数据执行查询。在使用硬件密钥管理的实施例中,这些API还包括可以被客户端终端114调用的、访问硬件密钥管理模块108的功能性的功能,以便存储和检索私钥以及对交易签名。集成工具102的API直接与私有子空间化区块链进行交互。涉及创建或与私有子空间化区块链中的数据记录交互的任何API命令生成区块链消息,并返回可以用于标识消息的消息哈希值,从而其稍后可以由系统100的用户检索和查看。客户端终端114可以采取各种形式。例如,客户端终端114可以是图形用户界面(由端用户使用),其提供了通过向API提供数据来与API 102交互,调用API 102提供的功能以及显示来自API的提示和数据的手段。客户端终端114也可以是完全自动化软件,当发生外部事件时,其经由API监控外部事件唤起功能。例如,客户端终端114可以是匹配平台,其经由API 102唤起分类账功能以匹配交易中的交易对手。
[0042] 由核心模块104创建的系统100中的每个节点也存储一些由节点用来与系统100的网络交互的信息。这种信息可以存储在节点的数据目录中、数据库或表结构中。每个节点存储它的类型(验证、对等或服务)。系统100中的每个节点还包括名称,该名称与系统中的其他节点分享并且显示在日志文件中。每个节点还包括节点标识符(或节点ID),节点标识符是节点的完整证书。备选地,安全哈希可以用于实现节点ID,由此允许使用不同证书类型和长度,假设哈希是固定长度值(诸如32字节的固定长度哈希值)。按照这种方式,许可合约(或“链环”脚本,如本文进一步讨论的)只需要存储可以在链上有效管理的固定长度值,而不损害安全性。因此,对于节点ID,可以使用节点的完整证书,也可以使用证书的哈希(以便增加效率和更快地在链上处理数据),这取决于每个系统部署的特定需求。
[0043] 在优选实施例中,系统100中的节点使用TLS认证过程,因此安全性证书是TLS证书。节点ID唯一地标识节点并且对于网络也是唯一的。每个节点还包括签名地址,签名地址为节点公钥的哈希并且用于对私有子空间化区块链中的消息和区块进行签名。签名地址信息不需要存在于观察方节点(诸如对等类型节点)中。每个节点还包括节点针对其充当验证器的域名阵列,以及节点针对其充当观察方的域名阵列。在参与区块和消息创建之前,每个节点必须有其自己的安全性证书(诸如TLS证书)和签名密钥,它们存储在节点的数据目录中。就此而言,每个节点有两个私钥:一个私钥用于TLS认证过程,此外,另一私钥(例如,ECDSA私钥)用于根据本文描述的区块创建和投票过程对区块和投票进行签名。
[0044] 参考图1和图2,系统100还包括数据库模块106,数据库模块106包括用于存储私有子空间化区块链数据的一个或多个数据库208。数据库模块106提供了从私有子空间化区块链到用于存储的公共数据库格式的单向同步。数据库模块106还允许将补充数据添加到私有子空间化区块链数据中。数据库模块106还对存储在该一个或多个数据库中的数据执行复杂的数据查询和分析。数据库模块106可以与核心模块104驻留在同一服务器上,也可以驻留在单独的服务器上。
[0045] 核心模块104还包括提供用于创建与本地节点关联的帐户的功能。每个帐户定义了用户在私有子空间化区块链上的身份。此外,当存储在私有子空间化区块链的区块内的数据涉及智能合约或其他自执行/自实施脚本时,账户用来识别与智能合约和/或脚本相关的动作方。账户是用于发送和接收消息和自动执行脚本(诸如智能合约)的唯一标识符。每个账户都通过对应于其公钥的地址来引用。每个帐户也有关联的私钥,其在签名和与私有子空间化区块链中的脚本交互时使用这些私钥。帐户进一步定义了私有子空间化区块链上的每一个用户身份。在私有子空间化区块链用来实现例如智能合约时,帐户用来识别智能合约的多方。
[0046] 核心模块104进一步包含为节点提供与其他网络节点112a-112d通信所需功能的逻辑,包括接收和转发消息的能力,以及将消息提交到私有子空间化区块链的能力。系统100的通信网络设置为对等网络,网络中的每个节点都有已知的身份。如本文所述,节点之间的连接通过使用TLS证书进行认证,只有那些TLS证书包括在批准列表中的节点被允许连接到网络。在优选实施例中,核心模块104基于发起消息或命令的一方/用户的标识符、以及基于对手方/用户的标识符来确定该消息或命令的子空间。例如,如果A方发送消息或命令并为该消息或命令指定对手方B作为B方,则核心模块104确定该消息或命令应当在AB子空间上发送。
[0047] 图4提供了根据本发明实施例的私有子空间化区块链中的区块400的表示。每个区块用作数据储存库并且包括到私有子空间化区块链中前一区块的链接。每个区块400包括报头402,报头具有用于验证区块的内容的状态信息。如本文更详细描述的,报头包括基于一个或多个底层哈希值的全局哈希值,这些底层哈希值对应于子空间以及区块中的其他数据。在优选实施例中,全局哈希值是哈希树(诸如Merkle树)的状态根,其中树的底层叶子代表子空间。报头还包括消息根,消息根是包含在该区块中的所有消息的概括,并且消息根基于私有子空间化区块链的内容所触发的事件而更新。除了子空间的状态根之外,每个子空间包括子空间的消息根、接收根和用于执行的“燃料”量(也即,用于交易执行的计算步骤数量)。消息根和接收根是树根哈希,树根哈希基于消息和接收的添加而触发的事件来更新,并且树根哈希基于包含在这些消息和接收中的数据。例如,消息根和接收根可以是通过添加区块为Merkle树结构中的子空间确认的所有消息(或者在接收根的情况下为消息接收)并获取根值来计算的Merkle树根哈希。报头还包括用于验证区块的密码签名。每个区块还包括一个数据有效负载,它被划分为一个或多个子空间,例如从A、B到N的子空间。这些子空间是共享区块链中的隔离区域,只许可已定义的用户子集访问和添加到这些区域。通过这种方式,子空间为参与方创建私有区域以存储只有被许可的参与方才能接收的记录和数据。子空间包含特定于该子空间的逻辑(例如,自执行脚本、智能合约)和数据集(例如,一系列数据记录,诸如消息和接收),并由访问许可进行保护,从而它们只对那些具有访问该子空间的许可的节点才是可访问的。每个子空间只能由那些针对该子空间授权的节点访问,这些节点可能包括单方、多方或网络上的所有方。在这方面,本发明的私有子空间化区块链与传统的区块链实现有很大的不同,传统的区块链实现依赖于公众对每个区块内容的可见性,以确保区块链的有效性和完整性。私有子空间化区块链的子空间可以基于特定交易(例如,双方之间的信用违约互换(CDS))进行分隔,或者基于具有对这些子空间的访问权限的一方或多方进行分隔,如本文进一步描述的。例如,每个子空间可以存储一组参与方之间的一系列交易,子空间中的消息列表提供了这些交易的完整历史。只有交易的多方具有访问对应于该交易的子空间的许可,当系统传播消息和交易时,只有对应于这些多方的节点才能接收这些子空间的内容。在这方面,存储在这些子空间中的数据存储在单独的数据库中,并且可以由网络中的节点单独进行同步。
[0048] 在一个实施例中,子空间的数据通过账户来组织。一个帐户由一个地址引用,它有一个消息随机数(nonce)(用于唯一地标识某些事情的随机或伪随机数,在本例中是消息记录)、脚本代码或“字节代码”(即,智能合约代码)以及帐户可以保存在储存器中的任何键-值对。存在两种类型的账户:(1)用户账户,和(2)脚本/智能合约账户。用户账户是由用户用来向系统内发送消息的账户。用户账户的地址根据用户的公钥推导。用户账户不具有与其关联的任何字节代码或键-值对。另一方面,脚本/智能合约账户具有脚本代码/字节代码并且可以存储键-值对以存留数据。脚本/智能合约账户的地址根据生成账户的地址和随机数推导,不过没有已知的匹配脚本/智能合约账户的地址(公钥)的私钥。在这种布置中,发送方帐户为脚本/智能合约的用户不能发送消息。
[0049] 图8提供了根据本发明实施例的私有子空间化区块链中的区块800的另一表示,其示出区块的有效载荷中的子空间的布置。除了如上所述的区块报头802之外,区块800包含多个子空间,这些子空间基于可以访问该子空间的参与方进行划分。子空间包括单方子空间804,其仅许可单方有权访问数据,并且包括对应于A方的子空间804a、对应于B方的子空间804b和对应于C方的子空间804c。单方子空间可以包含涉及单方的记录或交易,诸如从证券交易所购买股票、商品交易或医疗记录。区块800中的子空间还包括双边子空间806,其中两方中的每一方都被许可有权访问数据。在所示示例中,这些子空间包括对应于A方和B方的双边子空间806ab,对应于A方和C方的双边子空间806ac,以及对应于B方和C方的双边子空间806bc。双边子空间806可以包含涉及双方的记录或交易,诸如信用违约互换或股权互换等。公共子空间808包含参考数据、服务节点许可列表、提供系统100中每个节点的节点ID和针对每个节点的对应类型和许可的身份目录(或对等注册)、交易管理器、以及一般由系统中的所有参与方和节点使用的其他信息和脚本,或者是对于节点执行节点所确定的访问和许可所必需的信息和脚本。交易管理器提供消息调度服务,以允许用户调度将要在稍后的时间点或在发生某个事件时自动运行的消息。此消息调度服务功能也可以由其他组件提供。例如,可以使用消息调度服务来自动支付交易合约的优惠券(时间触发的实例),或者在实体注册中心更新实体名称时更改交易合约中的引用实体的名称(事件触发的实例)。公共子空间可以额外包括脚本/智能合约字节代码、应用二进制接口(ABI)、智能合约工厂、数据库配置信息和其他域或子空间状态信息。也可能有涉及一个或多个参与方的其他组合的附加子空间。多个子空间也可以包含在给定域中,例如如图19所示。例如,双边域可由双方(例如,A方和B方)访问,双方均可充当该域的验证器。在该域内,双方都有权访问该域中的所有子空间(为了确保隐私,任何一方的任何真正的私有子空间都将位于一个单独的私有域中)。在一个域内,不同子空间可以用于指定记录的单独分组或单独的交易。例如,在双边域中可以创建多个子空间来处理不同资产类别的交易,每个子空间对应于不同的资产类别,从而允许各方分别独立地处理和跟踪此类交易。
[0050] 类似于传统区块链数据结构中的区块,每个子空间中的数据记录包含数据(诸如对应于双方之间的特定交易的数据)以及基于该数据的键(诸如基于该数据的哈希值),以及到子空间中前一数据记录的链接。通过使用子空间,节点有可能可靠地同步和验证数据,同时隔离与不同用户相关的数据集。此外,通过使用子空间,系统100能够提供对不同子空间中的消息的并发处理。在传统的区块链中,为了保持区块链的完整性,必须按顺序处理消息和交易。私有子空间化区块链中的子空间允许同时处理不同子空间中的消息和交易,只需要同一子空间中的消息按顺序处理即可。为了在虚拟机中处理消息,节点需要访问消息调用所涉及的所有帐户(例如,包括字节代码和储存库在内的智能合约),每个帐户都处于最新状态。因此,必须按顺序处理同一子空间上的消息,因为每个消息都可能改变交易的状态,这可能会影响后续消息执行的结果。也就是说,允许消息对某些其他子空间进行特定调用,这对数据访问提出了额外要求。例如,消息可以调用公共子空间和域中的其他子空间。
[0051] 在参与方的节点上维护的区块的每个副本反映了子空间创建的隐私和访问限制。特别地,参与方的节点包括仅包含了参与方和节点所允许的子空间中的数据的区块的副本。在图8所示的示例中,在A方节点上维护的区块800的副本只包含位于A方被许可且可以访问的子空间中的数据,这意味着A方节点包含包括仅来自单方子空间804a、双边子空间
806ab和806ac以及公共子空间808的数据的区块800的副本。A方节点不具有来自A方未被许可的子空间的任何数据,这意味着A方节点不具有来自单边子空间804b或804c或双边子空间806bc的任何数据。类似地,在B方的节点上维护的区块800的副本只包含位于B方被许可且有权访问的子空间中的数据,而不包含来自B方未被许可的子空间的数据,这意味着B方节点包含包括来自单方子空间804b、双边子空间806ab和806ac以及公共子空间808的数据的区块800的副本;但是不具有来自单边子空间804a或804c或双边子空间806ac的任何数据。同样类似地,在C方节点上维护的区块800的副本只包含位于C方被许可且有权访问的子空间中的数据,而不包含来自C方未被许可的子空间的数据,这意味着C方节点包含包括来自单方子空间804c、双边子空间806ac和806bc以及公共子空间808的数据的区块800的副本;但是不具有来自单边子空间804a或804b或双边子空间806ab的任何数据。因为节点将不会接收到该节点未被许可的子空间的数据,所以这些子空间仍然是完全私有的,并且不存在向不具有这些数据的访问权限的一方或节点无意中泄露数据的风险。
[0052] 图9提供了根据本发明实施例的基于对子空间的更新在私有子空间化区块链中创建区块的示意图。在开始时,网络中来自A方和B方的节点交换与双方之间的交易相关的消息912和914,导致这一系列交易处于AB2状态。类似地,A方和C方交换与它们之间的交易相关的消息926,导致这两方之间的交易处于AC1状态。在对这些消息进行共识和验证之后,在新的私有子空间化区块链900中创建一个新的区块902,作为这些交易和相关信息的安全记录。私有子空间化区块链900及其内的区块具有两个双边子空间:对应于A方和B方之间的交易的子空间AB 908,和对应于A方和C方之间的交易的子空间AC 910。区块902在子空间AB 908中记录消息912和914,在子空间AC中记录消息926。在优选实施例中,特定子空间中的每个消息都以基于区块链原则的区块的形式存储在子空间中,其中链中的每个区块都有关联的哈希值,并且其中前一区块的哈希值用于计算当前区块的哈希值,由此创建两个区块之间的链接。例如,第一消息912存储为区块链中对应于子空间AB 908的第一区块,第二消息记录为该区块链中后续的消息。更具体地,特定子空间中的消息以本文所公开的私有子空间化区块链的形式存储在子空间中,其能够具有附加的子空间(也以私有子空间化区块链的形式)。此外,状态根AB2 908a基于存储在AB子空间中的消息来生成(此时由消息912和
914构成)。状态根是基于子空间中的数据的状态键,其通常是对子空间中的数据执行哈希函数得到的哈希值。例如,每个子空间的状态根可以是哈希树(诸如Merkle树)的根;这些状态根可以是包括所有子空间的状态根的更大哈希树的一部分,如本文进一步讨论的。类似地,状态根AC1910a基于存储在AC子空间中的消息来生成(此时由消息926构成)。这些状态根是由特定子空间中的领导者节点生成的,用于合并到区块报头中,如本文详细描述的。通过这种方式,区块包括每个子空间最近提交的状态信息。此外,如下面进一步讨论的,针对给定子空间中的每个个体消息或交易,在将其包括到私有子空间化区块链中的区块内之前,验证节点之间要达成共识。每个个体消息必须经过共识处理以确保结果总是可预测和可靠的。这部分归因于验证器节点不能可靠地确定它接收的消息的顺序。
[0053] 为区块中子空间生成新的状态根也会导致对区块的全局状态根的更新。这是因为子空间的状态根用作哈希函数的输入,而获得全局状态根的值。图10提供了根据本发明实施例的子空间的状态根如何影响区块的全局状态根的值的示意图。类似于图9中的区块,图10中的区块1000包括两个子空间:子空间AB 1012和子空间AC 1014。每个子空间分别具有状态根:AB状态根1004,和AC状态根1014。在特定子空间内不具有任何附加子空间(实际为“子-子空间”)时,该特定子空间的状态根可以是链中最新区块的哈希值。当子空间内具有一个或多个子空间(也即,多个子-子空间)时,该子空间的状态根可以是基于该一个或多个子-子空间的状态根值的哈希树(诸如Merkle树)的根。这样,每个子空间都是一个递归的数据结构元素,可以由区块链结构层次构成,如图10所示。子空间AB 1012内有多个子空间
1008,这些子-子空间的状态根用作哈希函数的输入,该哈希函数生成AB状态根1004。类似地,子空间AC 1014内有多个子空间1010,这些子-子空间的状态根用作哈希函数的输入,该哈希函数生成AC状态根1006。子空间的验证器节点具有接受或拒绝子-子空间的状态根的能力。
[0054] 如图9中示例所示,后续消息916和918针对AB子空间中的交易而生成,结果为AB子空间908生成一个新的状态根AB4 908b,这些消息和新的状态根在存储到私有子空间化区块链900中的新区块904中之前已进行验证。类似地,针对AC子空间910中的交易生成后续消息928,结果为AC子空间生成一个新的状态根AC2 910b。消息928和新状态根910b在存储到区块904中之前也进行了验证。如图9中进一步示出的,生成了对应于更新的状态根(AB子空间908中的状态根AB6 908c,和AC子空间910中的状态根AC4 910c)的附加消息(AB子空间908中的920、922,以及AC子空间910中的消息930和932),并且这些附加消息和状态根被验证并被添加到链中的新区块(例如,区块906)。随着附加消息在子空间中交换,此过程继续并且附加区块被添加到私有子空间化区块链900。
[0055] 在优选实施例中,基于每个子空间最近提交的状态信息,在固定的时间间隔内创建新区块。备选地,可以基于消息的交换来创建新区块。例如,每当发送与私有子空间化区块链中的子空间相关的消息时,可以创建一个新区块。为新的或现有的区块链创建新区块也可以基于其他事件来触发,包括系统100外部的事件。
[0056] 区块链中的初始块,即创世区块(genesis block),是根据对于区块链上的所有节点都相同的配置文件创建的。与所有其他区块相比,创世区块没有签名,它们可以包含任意数量的也没有签名的消息。例如,对于包含“公共”子空间的“公共”域,创世块包含部署用于管理许可的专用脚本或智能合约(例如,“链环”脚本)的消息,并在该专用脚本或智能合约中注册初始的验证器节点集。
[0057] 系统为私有子空间化区块链部署分布式共识算法。该算法设计了强大的密码保护来抵御恶意行为,并使用了拜占庭容错(BFT)保护。根据优选实施例,共识算法的功能如下。首先,被许可作为子空间验证节点的节点选举一个领导者节点。然后,领导者节点用于向子空间中其余验证节点发布消息和区块,这些其余的节点充当跟随者节点。跟随者节点通过以密码签名形式的批准对领导者进行响应,从而对新消息和区块进行签名。一旦大部分(超过50%)跟随者节点已经批准,领导者节点向跟随者节点发布新消息的有效性,或者确认新区块。网络中不参与共识过程的其他节点能够以一种不可靠的方式核实消息或区块,通过验证消息或区块上的签名,大部分验证节点已经批准了该消息或区块。
[0058] 图11A-图11D提供了根据本发明实施例的针对子空间的消息传播和验证过程以及后续区块创建过程的示意图。图11A示出了生成和传送初始交易创建消息。在图11A所示的示例中,参与方节点表示1104、1106和1108代表由该方管理的节点集群,在此例中分别为A方、B方和C方。节点集群1104、1106和1108以及服务节点1102经由对等通信网络可通信地耦接。服务节点1102发送用于A方和B方之间的交易的交易创建消息。该交易创建消息包括交易条款,可以采取自执行脚本或智能合约的形式,并且还包括相关子空间标识符,在此例中为AB子空间。注意,由于AB子空间上未许可C方,因此C方不具有AB子空间上的交易信息的访问权限,服务节点1102不向C方节点集群1108发送交易创建消息,A方节点集群1104和B方节点集群1106也不向C方节点集群1108传播交易创建消息,如本文进一步描述的。结果,C方节点集群不接收该交易创建消息也不知道该交易创建消息。
[0059] 如图11B和图11C中示出的示例所描述的,每个消息被传播到网络中相关子空间上许可的所有验证节点,以促进验证和区块创建过程。首先,服务节点向该服务节点所连接的、在相关子空间中许可接收该消息的所有验证节点发送该消息。如图11B所示,服务节点1110和1102是非验证节点,它们用作发送消息的入口点。服务节点A 1110从服务节点1102接收交易创建消息,并识别出该消息属于AB子空间。结果,服务节点A 1110将该消息从服务节点1102传播到AB子空间的所有验证节点。特定子空间的验证节点的标识可以包括在私有子空间化区块链上的区块中,也可以由位于私有子空间化区块链上的脚本或智能合同进行管理。例如,在一个实施例中,用于管理许可的专用脚本或智能合约(例如,“chainperm(链环)”脚本)被部署到创世块中的公共子空间中。为了许可一个节点,需要向链环合约发送一条消息,该消息包含新节点的名称、公共传输层安全性ID(TLS-ID)、公共签名地址以及允许该节点访问和/或验证的域和子空间列表。验证器许可在域级别上准许,而观察方(非验证器)访问可以在子空间级别上准许。假设所有接受来自其他节点的连接的节点都至少可以访问“公共”子空间,因此它们可以访问和验证链环合约。由于区块链内的数据确保网络上的所有节点都是同步的,所以所有节点对链环合约都是一致可视的,并相应地接受/拒绝节点连接。在图11B所示的示例中,服务器节点识别A方节点集群1104中的节点Al(1112a)和A2(1112b)以及B方节点集群1106中的节点B1(1114a)和B2(1114b),作为子空间的验证节点。
同样,因为在AB子空间中未许可C方节点,所以它们不接收该消息。
[0060] 其次,在服务器节点将消息传播到相关子空间中许可的已连接验证节点之后,验证节点将通过共识过程继续验证消息,诸如Raft共识协议,当然也可以使用其他共识算法,诸如轮流领导机制。如图11C所示,使用随机化过程来为共识过程选举一个领导者节点,其为节点Al(1112a)。选举出的领导者提议它所接收到的消息用于由相关子空间上许可的、与领导者相连的所有其他验证节点进行投票。在所示示例中,领导者节点A1(1112a)提出了从服务节点1102接收到的消息用于由许可子空间中的其他验证节点投票,其他验证节点也即A方节点集群1104中的节点A2(1112b)和B方节点集群1106中的节点B1(1114a)和B2(1114b)。在投票期结束时——其中投票期由特定共识协议确定,也可以通过一定时间量的流逝(超时)、或接收到来自所有或足够数量的投票验证节点的投票来确定——以及假设接收到足够数量的投票,提交状态根以包括在区块报头中。
[0061] 一旦子空间的状态根已经被批准包括在区块报头中,可以为网络创建更新的区块。根据实施例的用于系统的验证节点中的一个节点被随机选举为用于创建该区块的领导者。接着,所有子空间领导者向区块领导者提交它们各自的状态根。在图11所示的示例中,C方节点集群1108中的节点(例如,节点C1)被随机选举为用于创建该区块的领导者。所有子空间领导者,诸如AB子空间领导者A1(1112a),因而向区块领导者(C方节点集群1108中的节点C1)提交它们各自的选举的状态根。作为区块领导者,节点C1组合来自子空间的状态根并确定全局状态根和更新的区块报头,以及向网络中的跟随者节点请求批准所更新的区块报头。跟随者节点将来自区块领导者的更新的区块报头与它们自己确定的区块报头进行比较并向区块领导者指示它们的批准。一旦接收到批准,区块领导者(在此示例为节点C1)在私有子空间化区块链中为该点创建正式区块,其中包含来自所有子空间的状态根。
[0062] 图12A-图12G提供了根据本发明一个实施例的共识过程的更详细示意图。如以上所指出的,整个系统通常包括多个域和子空间,如图19所示。每个域包含一个或多个子空间,每个子空间仅被包含在一个域中。每个域都有自己的、从创世区块开始的私有子空间化区块链。针对域运行共识过程。从这个意义上说,子空间并不直接有领导者节点或跟随者节点,但是包含该子空间的域有领导者节点和跟随者节点。每个域都有它自己的验证器节点集。一个验证器节点可以验证一个或多个域;然而共识过程是针对每个域独立运行。这意味着,验证两个域的验证器节点运行两个独立的共识过程实例。结果,验证器节点可能在一个域“赢得”领导地位,但在另一个域充当跟随者。在优选实施例中,只有一个共识过程的实现,该实现对于所有域都是相同的。
[0063] 在如所示的优选实施例中,系统使用的共识过程是拜占庭容错(BFT)Raft共识过程。该过程包括确定领导者的选举过程和验证过程。图12A-图12C示出了根据本发明一个实施例的选举过程。如该示例所示,有5个为给定子空间验证消息和交易的验证节点A-E(节点1202、1204、1206、1208和1210)。在过程开始时,没有领导者节点,所有节点都视为跟随者。
每个跟随者节点等待一随机时间量(“超时”)之后,尝试开始选举并指定自身为候选节点,其请求来自其他验证节点的确认投票。如图12B所示,节点A(1202)在其他验证节点之前(或者在接收到来自任何其他验证节点的确认投票请求之前)到达超时,因此它成为候选节点并向它所连接的、在相关子空间中被许可的每个验证节点发出请求,候选节点在该相关子空间中请求确认投票或“赞成”投票。每个节点的超时在一段足够长的时间内随机化(取决于网络延迟条件),以便优化只有一个节点可能首先成为候选的可能性。每个节点为它首先接收到请求的候选节点发送一个确认投票或“赞成”投票。换言之,每个跟随者节点都将投票给第一个与跟随者节点联系并请求选举的候选节点。收到足够票数的候选者被选为领导者。请注意,选举需要多数跟随者的投票才能成功。此外,为了确保投票过程所有确认的完整性,由生成投票的节点对跟随者的投票进行签名,并验证所有跟随者的投票签名。在跟随者的投票发送后,获得足够数量确认票的候选者向跟随者发送消息,确认选举结果并确认其被选为领导者。关于图12C,节点A 1202在任何其他跟随者节点之前已超时并发出其投票请求,接收来自四个跟随者节点B(1204)、C(1206)、D(1208)和E(1210)中每个节点的确认投票。节点A 1202验证投票中的签名,在验证投票之后,将确认消息发送给四个跟随者节点以确认选举结果,并将节点A 1202标识为领导者,随后跟随者节点存储节点A是当前领导者的信息。如果没有交易,则当选的领导者会以固定间隔向所有跟随者发送一个周期性心跳消息。只要节点从当选的领导者节点接收到有效的周期性消息,它就一直是跟随者。如果当前的领导者没有反应,并且没有发出周期性心跳消息,则执行新的领导者选举以获得新的多数票。
[0064] 一旦从特定块或特定域的验证节点中选出一个领导者,这些节点就可以在子空间内继续进行交易验证和区块创建过程。图12D-图12G示出了根据本发明一个实施例的共识过程。在领导者节点选举之后,所有跟随者节点知晓哪个节点是特定区块或子空间的领导者节点。领导者负责在每个共识“任期”结束时创建区块,其中每个共识任期只可以持续一特定时间段(例如,1到3秒之间,优选2秒),或者只可以持续到系统中特定事件发生时。在每一任期内,领导者负责将交易和消息预提交到子空间数据。在任期结束时,预提交的交易和消息由跟随者批准,随之正式区块完成并提交到私有子空间化区块链。如图12D所示,在选举之后,所有跟随者节点知晓节点A 1202是经过核实选举出的领导者。当节点接收到消息时,该节点将按照本文描述的对等消息传播对其进行传播。例如,如图12E所示,节点B1204接收到代表特定交易(Tx 1)的消息并通过将该消息传播到系统中的所有其他节点(节点A(1202)、节点C(1206)、节点D(1208)和节点E(1210))来进行响应。这些节点A、C、D和E依次将消息传播到网络中所有其他验证节点,包括当选的领导者节点A 12012。接收到传播的消息后,领导者节点将消息发送给所有请求批准的跟随者节点,以将消息预提交给子空间。每个跟随者节点检查来自领导者节点的批准请求中的消息,然后跟随者节点向领导者节点发送批准消息。如果消息满足一定标准确保它们是有效的,包括正确的签名和正确的随机数值,则跟随者节点将批准消息的预提交。在优选实施例中,如果消息满足下列标准,则跟随者节点将批准消息的预提交:(i)消息被正确格式化(它们符合p2p协议定义的消息结构),(ii)消息被签名,以及(iii)消息具有等于发送账户的预期随机数的随机数值。一旦多数跟随者节点发送它们对预提交的批准,领导者就将消息预提交给子空间。对应于多数跟随者节点的数量基于具有访问公共子空间许可的节点数量来确定。如图12F中示例所示,领导者节点A 1202在接收到代表交易Tx 1的消息后,将消息发送给所有请求批准的跟随者节点,以将消息预提交到相关的子空间。跟随者节点1204、1206、1208和1210确定由领导者节点A 1202发送的Tx 1消息是有效的并发送它们的批准,然后领导者节点A 1202将Tx 1消息预提交给子空间。
[0065] 领导者节点继续按照上述过程接收、批准和预提交消息,直到它任期结束。在其任期结束时,领导者节点创建包括所有预提交的消息的正式区块,并将该区块的副本连同批准请求发送给所有跟随者节点。一旦领导者节点收到来自多数跟随者节点的批准消息,该区块就完成并提交给私有子空间化区块链。在区块完成并被添加到私有子空间化区块链之后,新的任期上开始。领导者可以服务多个任期,或者可以在每个任期开始时选举产生。每举行一次选举,任期数就增加一次。区块不会结束任期。因此,当领导者在一个任期当选时,它可以担任多个小时/天/周的领导者,只要领导者继续制造区块。当重新选举时,每一轮选举的任期数都会增加,直到选出新的领导者。允许新领导者和前任领导者相同。如图
12G中继续的示例所示,在任期期间,领导者节点已经接收并(在得到跟随者节点的批准之后)预提交了与交易Tx 1、Tx 2和Tx 3对应的消息。在此任期结束时,领导者节点A创建了正式区块并将其发送给跟随者节点,即节点B(1204)、节点C(1206)、节点D(1208)和节点E(1210)以供审批。一旦领导者A收到来自多数跟随者节点的批准消息,它就会将区块提交给私有子空间化区块链。此后,新的任期开始,后续消息被预提交给新的区块。
[0066] 如本文其他部分所述,节点许可是基于逐个子空间的。特别地,每个子空间验证节点的数目可能不同。例如,如图13和图14所示,根据本发明的对等节点网络可以包括对应于若干方的若干验证节点,但在许可这些节点作为验证节点的子空间方面可能有所不同。如图13所示,A方节点集群1300包括验证节点节点AO(1300a)、节点A1(1300b)、节点A2(1300c);B方节点集群1302包括验证节点节点BO(1302a)、节点B1(1302b)、节点B2(1302c);以及C方节点集群1304包括验证节点节点CO(1304a)、节点C1(1304b)、节点C2(1304c),所有节点都被授权访问系统网络1308并基于它们的类型和许可相互通信。然而,如图14所指示的,尽管这些节点都是验证节点,它们被许可作为验证节点的子空间是不同的。例如,节点AO(1300a)仅在子空间A 1408、AB 1400和AC 1402中被许可作为验证节点,而不包括公共子空间1406(尽管节点AO可以被许可作为公共子空间的对等节点并因此具有对该子空间中数据的访问权限)。作为另一示例,节点B2(1302c)仅在子空间B1410和公共空间1406中被许可作为验证节点,而不包括AB子空间1400或BC子空间1404(尽管节点B2可以被许可作为AB和BC子空间的对等节点并因此具有对这些子空间中数据的访问权限)。然而,在任一实现中,对于子空间而言,少于三个验证节点是次优的,因为在一个子空间中只使用两个验证节点会带来不可接受的失败风险,即两个验证节点在任何批准过程中的投票都不相同。
[0067] 从上面关于向私有子空间化区块链添加区块的讨论中可以看出,随着时间的推移,这些分布式数据结构可能会变得相对较大,并且私有子空间化区块链中的消息和区块的数量也会增加。与传统的区块链结构不同,本文公开的私有子空间化区块链可以通过如本文所述的一种新颖的修剪过程来缩减大小,该修剪过程可以维护私有子空间化区块链中数据的完整性,并保留了验证数据和维护共识过程的能力。对私有子空间化区块链的修剪允许显著减少数据结构所需的存储器,节省硬盘空间并提高了与数据存储相关的效率。此外,对私有子空间化区块链的修剪允许各方遵守数据保留和销毁政策,这在传统的区块链结构中是不可能的。
[0068] 本文描述的修剪过程是基于预先确定的标准(诸如基于时间的标准)触发的。例如,经过一段时间,诸如消息和区块创建后2年或3年,私有子空间化区块链可以对消息和区块进行修剪。这段时间可以由监管策略或一方自己的数据保留策略来规定。用于启动删除消息和区块的修剪过程的预定标准可以基于子空间,这意味着每个子空间可以有它自己的修剪策略和标准。此外,不同方可以利用不同的策略和标准来修剪其各自方节点和数据储存库中维护的私有子空间化区块链。在优选实施例中,在不同情况下,用于修剪的策略以及触发修剪过程的标准都在私有子空间化区块链本身上维护,例如在私有子空间化区块链中具体化的自执行脚本或智能合同中。系统100的核心模块104管理修剪过程。核心模块104从每个私有子空间化区块链中检索修剪策略,并根据这些策略监视触发修剪过程的标准。一旦满足标准,核心模块104就实现修剪过程,诸如包括基于一组标准、或识别可被修剪的消息特征的过滤器来删除区块和消息,同时保留区块和消息的哈希(诸如区块中各个子空间的状态根)。例如,修剪过程可以清除特定合约或合约集合的区块和消息,也可以清除超出给定保留日期的区块和消息。因为所有哈希值都在修剪过程中保留,因此共识过程不受影响。但是,如果试图访问由于修剪过程而被删除的区块和消息,则会导致一个表明数据已经被移除的错误。
[0069] 修剪过程提供了移除状态数据库(例如,Merkle树)中的数据,如前所述,这使得符合数据保留策略同时节省空间。每个数据对象(例如,每个实例化的智能合约)都以对象的形式存在于该状态数据库中。在移除对象时,由于数据保留策略或其他原因,系统必须确保树的状态根不会改变,至少由于不同参与方可能实现不同数据保留策略的原因。为了维护具有不同数据保留策略的各方之间的共识,不允许从数据库中修剪对象来更改树的状态根。为了实现数据的移除同时确保能够维护共识,本文描述的修剪过程确保当对所有邻近树节点一直到根进行哈希(例如,Merkle树哈希),同一根哈希计算成好像该对象还在原处。在这方面,为了修剪对象,系统维护数据对象树节点,但从其移除所有有效载荷。持久化的只是数据对象的地址和树节点的哈希。此外,数据对象被标记为“已修剪”,或已移除其有效载荷。当被访问时,这种形式的数据对象被标识为“已修剪”,从而允许系统区分不存在的数据对象和已修剪的数据对象。在修剪过程之后保留在对象中的该信息(例如,数据对象的地址和哈希)不允许恢复原始数据有效载荷。
[0070] 在一个实施例中,附加信息被嵌入到数据对象的树节点中,以防止恢复已移除的数据有效载荷。在某些情况下,简单地删除数据有效载荷可能会使数据对象容易受到强力恢复数据的影响,例如猜测移除的值直到找到匹配的哈希。例如,如果区块链只用于一种类型的合约,并且合约中仅有的字段是日期和值,那么攻击者可以生成与具有所有合理的日期和值组合的合约字节代码匹配的树节点,直到找到匹配的哈希。为了防止这种攻击,一种盐(即,用作哈希信息的附加输入的随机数据)被嵌入到每个私有子空间化区块链的每个树节点中,这使得通过强力恢复被移除数据的尝试和随机猜测尝试变得更加困难,即使所有的非随机数据都是已知的。
[0071] 图5提供了在系统100的网络中的节点之间的安全通信过程的示意图。在优选实施例中,系统100使用传输层安全性(TLS)功能性进行认证和身份管理。安全通信过程涉及双向认证过程,其中接受连接的节点(接受节点)核实其正连接的节点(连接节点)的凭据(诸如安全性证书)是批准的,并且连接节点核实接受节点的凭证是批准的。在优选实施例中,双向过程需要接受节点核实连接节点的TLS证书是批准的,以及连接节点核实接受节点的TLS证书是批准的。在节点能够成功认证并与网络上的其他节点通信之前,节点的安全性证书(例如,它的TLS证书)的哈希值必须在系统100中注册。在一个实施例中,每个节点的证书由核心模块104在对等注册表512、154中注册,每个节点维护一个对等注册表副本。这种注册需要将安全性证书与节点的类型(验证、对等或服务)相关联,以便将每个节点的TLS证书注册为与某个角色相关联。如图5所示,当与系统网络中的另一节点建立连接时,第一节点502(即节点A),首先通过使用通信耦接到第二节点508(节点B)的TLS模块514的TLS模块504来进行TLS握手过程。TLS证书的初始交换和验证按照TLS协议规范。作为TLS协议规范过程的补充或替代,作为握手过程的一部分,节点B以其数字证书(TLS证书)的形式提供其标识。
节点A通过检查节点B的TLS证书是否在对等注册表512中已注册,来验证节点B的TLS证书。
附加地或备选地,节点可以自我签名而不使用签名机构。
[0072] 系统100实现第二验证步骤,其检查TLS证书是否在对等注册表(例如,“链环”脚本或合约)中被批准。这仅在完成TLS证书交换之后,但在连接用于任何区块链目的之前完成。参照图5,对等注册表512对应于用于管理许可的专用脚本或智能合约(例如,“链环”脚本)。
如果节点B返回的TLS证书在对等注册表512中已注册,则节点A(连接节点)确定节点B(接受节点)的TLS证书已批准,随之节点A 502基于会话密钥对数据加密并经由网络510向节点B 
508发送数据及其TLS证书。节点B通过使用TLS模块506,检查节点A提供的TLS证书是否在对等注册表514中已注册,由此验证节点A的TLS证书。如果节点A返回的TLS证书在对等注册表
514中已注册,则节点B(接受节点)确定节点A(连接节点)的TLS证书已批准,随之节点B 508对消息进行解密以检索消息中的数据并相应地处理数据。此安全通信过程与以前的系统相比提供了显著的优势,因为传输层安全性(TLS)功能性不仅用于加密,还用于系统中的认证。
[0073] 通过连接过程,节点还确定它所连接的每个节点的类型。如上所述,系统中的每个节点都注册为特定的类型(验证、对等、服务),每个节点都可以针对不同子空间和域批准为不同的节点类型。此注册信息在专用的对等注册表中(例如,“链环”脚本)维护。特别地,系统维护并向网络中的节点分发注册表,该注册表将每个节点的唯一标识符与其类型关联起来。如前所述,每个节点的唯一标识符从其TLS证书推导。当连接节点连接到系统中的另一节点时,连接节点获取系统中该另一节点的TLS证书,并基于TLS证书和注册表中维护的信息,连接节点确定该另一节点的关联类型。结果,每个节点确定它连接到哪些验证节点、连接到哪些对等节点以及连接到哪些服务节点。每个节点的类型及其所连接的节点的类型将影响节点在系统中处理消息的方式。注册为验证节点的节点将自动参与区块和消息验证过程,但将丢弃从观察方或服务节点接收到的任何验证对等消息。此外,接收消息和需要达成共识的区块的节点将只向认证为为验证节点的节点发送这些消息和区块。
[0074] 如上所述,许可——或允许节点针对网络中的其他节点和数据采取的动作——通过子空间进行分组,这意味着例如一个节点可能是一个子空间的验证节点,同时可能是另一子空间的对等节点。特别地,一个节点可能有一组允许它验证的子空间,这样它就可以参与共识投票和区块签名过程。此外,一个节点可能有一组允许它作为对等节点观察的子空间,这样它就可以被动地参与导入区块和消息。一个节点可能有一组特定的子空间,这些子空间只允许该节点作为服务节点(或API客户端)进行连接,这样它就不会参与共识,也不会参与与区块和消息相关的主动或被动活动。在这方面,只允许节点发起许可它验证、服务或充当服务节点/API客户端的子空间的区块和消息。根据本系统,每个被许可的区块链中的初始块,称为创世块,包括其中每个子空间的初始验证节点集。创世块还可以包括每个子空间的对等节点和服务节点列表。因此,在链上维护与每个子空间相关的已标识节点集及其对应角色(和许可级别),并用于确定允许节点对每个子空间采取的动作。与每个子空间相关的已标识节点集及其对应角色(和许可级别)可以通过特定消息来更新。
[0075] 图6提供了一个示例,通过该示例,具有有限访问和许可的节点(如服务节点)能够参与不可信的验证过程。服务节点602请求关于特定子空间中的数据的信息,例如,特定智能合约608。首先,服务节点602通过TLS网关604与服务器节点606(其可能是对等节点或验证节点)建立安全连接后,生成对数据604的请求。服务器节点606对来自服务节点602的请求进行解密,并通过首先检查616服务节点602对所请求的子空间的任何级别的许可来处理该请求。为了检查许可616,服务器节点606检索具有相关子空间的私有子空间化区块链,然后访问特定子空间608(例如,智能合约)来检索具有与该子空间608相关的许可级别(对等、验证、服务)的节点列表。如果服务节点602被列为具有特定子空间的服务/API许可,则该许可被批准618。在这方面,应该注意许可级别是分层的,验证节点的许可大于对等节点,而对等节点的许可大于服务/API节点。结果,低级许可包含在高级许可中,从而对于需要低级许可的请求,具有高级许可的节点将被批准。例如,如果节点是特定子空间的验证节点,那么对于需要验证、对等、或服务/API许可的请求,它将被批准。作为另一示例,如果节点是特定子空间的对等节点,那么对于需要对等或服务/API许可的请求,它将被批准。系统可以根据需要支持额外的许可级别。在确定服务节点602具有访问特定子空间中的数据的许可之后,服务器节点通过返回验证数据622进行响应,服务节点602可以从验证数据622确定响应是有效的。例如,此验证数据可能是包含完整区块报头的区块622版本(包括来自服务器节点606的签名、消息根和根状态),但不包括来自服务节点未被许可的任何子空间的数据,并且只包含来自服务节点602被许可的相关子空间的数据有效载荷中的数据(例如,请求的智能合约),或其部分,以及来自未被包括的数据的哈希值或索引610。尽管事实上服务节点返回区块的有限部分,但是服务节点能够通过评估验证数据来验证数据,例如通过对哈希树执行证明来生成根612并将其与区块报头中的状态根进行比较来确认它生成了状态根的等效值。如果状态根是Merkle树的状态根,则服务节点602将执行Merkle证明,以便核实服务器节点606返回的数据。
[0076] 图15提供了各种智能合约和对应公共和私有子空间的示意图,通过以某些数据和逻辑仅对于许可访问子空间的那些节点可访问的方式使用上面描述的私有子空间化区块链,网络中的参与者可以借由这些子空间来存储数据和执行逻辑。子空间1500对于A方是私有的,并包含财富智能合约1506。智能合约1506存储A方贸易合同中的私有数据。公共子空间1504包含市场数据、许可注册表和基本模板合约。基本模板合约1520包含与财务合约相关的规则和逻辑。许可注册表合约1524维护各种私有子空间化区块链中各方的许可列表。市场数据合约1526为执行智能合约的逻辑提供输入。双边子空间1502包含一组记录了两方(A方和B方)之间的贸易的智能合约。贸易合约1528存储合约的当前状态1522、特定贸易条款1508、对该贸易的更新集1512和用于执行该贸易合约的规则/逻辑的字节代码1518。子空间1502还包含用于存储所有贸易合约的注册表合约1510、用于跟踪区块报头中的时间戳的事件调度器1514和用于合并来自贸易合约的支付并计算净值的支付智能合约1516。贸易合约条款1508中的财富数据部分由双方通过各自私有子空间1500中的财富合约1506来填充。
贸易合约1528本身使用基本模板1520进行实例化,并使用贸易1508的特定条款填充。针对可以执行贸易合约1528的逻辑的各方的许可通过公共子空间中的注册表合约1524进行管理。
[0077] 图16A-图16E示出根据实施例在私有子空间化区块链中实现的利率互换(IRS)合约的各种生命周期事件。图16A示出了IRS合约的架构。用于实现IRS的智能合约驻留在两个子空间:(1)双方之间的双边子空间1600,和(2)公共子空间1602。IRS数据合约1608包含贸易条款,注册表合约1606维护IRS实例,而支付合约1610用于合并支付和计算净额。公共子空间1602包含用于执行IRS的三个合约。基本合约1612是IRS合约的模板,许可注册表合约1614管理各方在子空间上的许可,而参考数据合约1616维护公共参考数据。图16B示出了创建新IRS期间的事件序列。匹配引擎1620与双边子空间1600中的服务器节点1618进行交互,以启动在私有子空间化区块链上记录贸易。服务器节点从公共子空间访问基本模板合约
1612来实例化新的IRS合约1608。通过访问注册表合约1614来验证服务提供方许可。在核实凭据之后,新合约将存储在注册表1606中,并将预付款发送到支付合约1610。新合约也被添加到调度器1604中,用于跟踪区块报头时间戳。图16C示出了导致在双边子空间1600中更新IRS合约的事件序列。清算所节点1624连接到公共子空间1602中的服务器节点1622。服务器节点向参考数据合约1616发送消息。双边子空间上的事件调度器1604观察此消息并通知IRS注册表合约1606。然后,注册表合约更新底层IRS合约1608的状态。图16D示出基于时间的触发器之后的事件序列。到达预定义的时间戳后,事件调度器1604通过通知IRS注册表
1606来触发时间触发的事件。注册表通知底层IRS合约1608,合约中的支付在支付合约1610中适当更新。图16E示出新的双边子空间的创建。清算节点1624向服务器节点1622发送消息以创建新的双边私有子空间化区块链。许可注册表合约1614核实许可并创建新的双边子空间,还从双方向相关节点发送通知。
[0078] 图17A-图17C示出根据一个实施例的创建股权互换合约。图17A示出私有子空间1700和公共子空间1702都需要的合约。公共子空间包含基本模板合约1712、许可注册表
1714和市场数据合约1716。双方之间的双边子空间1700包含股权互换合约1708、支付合约
1710、注册表合约1706和事件调度器合约1704。图17B示出在双边子空间1700中创建新的股权互换合约。市场节点1720与服务器节点1718交互以启动创建新的贸易合约。服务器节点创建区块链消息以根据基本合约1712中定义的模板来创建互换合约1708。在创建互换合约之后,注册表合约1706和调度器合约1704被更新。图17C示出双方之间的支付在一天结束时的更新的事件序列。市场数据提供方1724连接到公共子空间中服务器节点1722。服务器节点通过发送消息来更新市场数据合约1716。双边子空间中的事件调度器合约1704触发一个按市值计价(MTM)事件,该事件从注册表1706取得未完成的合约。未完成的贸易合约1708查询市场数据合约1716的最新利率,计算MTM并最终向支付合约1710发送消息。
[0079] 图18示出参考数据提供方1816、确认服务提供方1812和其他节点如何通过公共连通性网络1822进行交互。买方公司、经销商和其他服务提供方与网络保持不同的连接。匹配和确认服务提供方1812、参考数据提供方1816和其他服务提供方1814只维护到网络的基于软件定义网络(SDN)的连接。这三个服务只有服务级节点,因此对网络的可见性有限。这些节点只能访问特定子空间中有限的合约集。它们还接收公共子空间中的所有消息。经销商节点1800是一个完整的节点,这暗示着它接收其被许可的子空间中的所有消息,并将区块提交给子空间化区块链。它维护客户端和供应商到网络1822的连接。经销商节点1802和1804也是完整节点,维护到网络的SDN和客户端连接。买方节点1806、1808和1810是服务节点,并有权访问被许可子空间中的有限消息集。
[0080] 虽然已经通过若干优选实施例描述了本发明,但应理解本发明范围内存在许多变更、置换和等同方案。还应该指出,有一些备选方式可以同时实现本发明的过程和装置。例如,步骤不一定要按照附图中所示的顺序进行,可以根据需要重新安排。因此,所附权利要求旨在于包括所有落入本发明的真正精神和范围内的此类变更、置换和等同方案。
[0081] 本发明可在数字电子电路中、或计算机硬件、固件、软件或其组合中实现。本发明可以实现为计算机程序产品,即有形地体现在信息载体中(例如机器可读存储设备中或传播信号中)的计算机程序,以供数据处理装置(例如可编程处理器、计算机或多个计算机)执行或控制其操作。计算机程序可以用任何形式的编程语言编写,包括编译或解释语言,它也可以以任何形式部署,包括作为单机程序或模块、组件、子例程或其他适合在计算环境中使用的单元。计算机程序可以部署在一个计算机上或在一个地点或分布在多个地点通过通信网络互连的多个计算机上执行。
[0082] 本发明的方法步骤可以由一个或多个执行计算机程序的可编程处理器执行,通过对输入数据进行操作并生成输出来执行本发明的功能。本发明的方法步骤还可以通过专用逻辑电路来执行,并且本发明的装置可以实现为专用逻辑电路,例如FPGA(现场可编程阵列)或ASIC(专用集成电路)。
[0083] 适合于执行计算机程序的处理器包括例如微处理器和任何高性能数字计算平台中的任意一个或多个处理器。处理器将从只读存储器或随机访问存储器或二者接收指令和数据。计算机的基本要素是执行指令的处理器和存储指令和数据的一个或多个存储设备。通常,计算机还将包括用于存储数据的一个或多个海量存储设备,或与之可操作地耦接以从其接收数据或向其传送数据,或两种情况都可以,存储设备例如是磁的、磁光盘或光盘。
适用于具体化计算机程序指令和数据的信息载体包括所有形式的非易失性存储器,包括例如半导体存储器设备,如EPROM、EEPROM和闪存设备;磁盘,如内部硬盘或可移动盘;磁光盘;
以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或合并。
[0084] 在本公开上下文中(尤其是在权利要求的上下文中)术语“一”、“一个”和“该”以及类似指代的使用应当解释为覆盖单数和复数形式,除非另有说明或明确与上下文矛盾。本文描述的所有方法可以以任何合适的顺序执行,除非另有说明或明确与上下文矛盾。本文提供的任何以及所有示例、或示例性语言(例如,诸如、优选的、优选地)的使用仅仅旨在于进一步解释公开的内容,而不是对权利要求的范围施加限制。说明书中的任何语言都不应被解释为表明任何非主张要素对于本公开的实践是必要的。
[0085] 本文描述了多个实施例,包括发明人所知的实施所请求保护发明的最佳模式。其中,当阅读上述公开时,对于本领域普通技术人员而言,所公开实施例的各种变体将变得明显。发明人期望技术人员适当地使用这些变体(例如,改变或组合特征或实施例),并且发明人旨在于本发明也可以以本文具体描述的那些之外的方式来实践。
[0086] 因此,本发明包括根据适用法律所允许的、所附权利要求书中记载的主题的所有修改和等同物。此外,上述各要素在其所有可能的变体中的任何组合均包含在本发明中,除非本文另有说明或明显与上下文矛盾。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈