具有经验证的区块链和共识协议的联盟区块链网络的制作方法

文档序号:18745718发布日期:2019-09-21 02:19阅读:180来源:国知局
具有经验证的区块链和共识协议的联盟区块链网络的制作方法

已经针对各种应用场景提出了区块链系统,包括金融业、健康护理、IoT等中的应用。例如,比特币(Bitcoin)系统被开发以允许电子现金直接从一方转移到另一方,而无需通过金融机构。比特币(例如电子硬币)由将所有权从一方转移到另一方的事务链来表示。为了转移比特币的所有权,新的事务可以被生成,并且被添加到块中的事务的堆栈中。包括新所有者的公钥的新事务可以由所有者利用所有者的私钥进行数字签名,以将所有权转移给新所有者,如新所有者公钥所表示的。

一旦块已满,该块可以用块头“加盖”,该块头是块内所有事务标识符的哈希摘要。块头可以被记录为链中的下一块中的第一个事务,创建被称为“区块链”的数学层次结构。为了验证当前所有者,可以遵循事务的区块链来验证从第一个事务到最后一个事务的每个事务。新所有者只需要具有与传输比特币的事务的公钥匹配的私钥。区块链可以在由安全标识(例如,公钥)表示的实体中创建所有权的数学证明,其在比特币系统的情况下是伪匿名的。



技术实现要素:

提供本发明内容是为了以简化的形式介绍一些概念,这些概念将在下面的具体实施方式中进一步描述。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

简而言之,所公开的技术总体上涉及区块链和其他认证技术。在本技术的一个示例中,预定类型的区块链或其他认证协议代码和预定类型的共识代码被存储在处理器的可信执行环境(TEE)中。在一些示例中,TEE证明被用于验证在TEE中存储的区块链或其他认证协议代码是预定类型的区块链或其他认证协议代码,并且验证在TEE中存储的共识代码是预定类型的共识代码。可以接收更改预定类型的区块链或其他认证协议代码的请求。可以基于预定的共识代码来确定是否改变预定类型的区块链或其他认证协议代码。

在一些示例中,区块链联盟的预期成员在建立网络之前就联盟区块链网络的某些方面达成一致,包括例如要使用的区块链协议代码、要使用的共识协议、初始成员资格列表、以及区块链网络的可能的许多其他方面。预期成员中的至少一个成员可以认可验证节点(VN)。在验证成员中的全部成员的某些商定方面(诸如要使用的区块链协议和要使用的共识协议)是相同的时,TEE证明可以用来验证节点中的每个节点存储商定的区块链网络协议和商定的共识协议。

如果TEE证明成功,则联盟网络可以被引导,并且私钥可以被交换,所有预期成员现在是联盟网络的成员。区块链主密钥可以从成员的私钥生成。在一些示例中,然后网络的参与者可以由成员批准加入。在一些示例中,此时,网络已被建立,并且准备好接收事务。

在一些示例中,区块链网络的参与者可以向区块链网络提交事务。可以将事务转发到区块链网络中的VN,该VN是基于商定的共识协议而被选择的。然后,所选择的VN可以通过执行事务的代码来处理事务,并且然后可以解决任何冲突。然后,VN可以基于区块链事务的处理来直接更新经处理的区块链的官方状态。然后,VN可以将经处理的区块链的经更新的官方状态广播到区块链网络。

在阅读和理解附图和本说明书之后,将理解所公开技术的其他方面和应用。

附图说明

参考以下附图描述本公开的非限制性和非穷举性示例。在附图中,除非另有说明,否则类似的附图标记在各个附图中指代类似的部件。这些附图不一定按比例绘制。

为了更好地理解本发明,将参考以下结合附图阅读的具体实施方式,在附图中:

图1是图示了其中可以采用本技术的方面的合适环境的一个示例的框图;

图2是图示了根据所公开技术的方面的合适计算设备的一个示例的框图;

图3是图示了系统的一个示例的框图;

图4是图示了验证节点的一个示例的框图;

图5A-图5C是图示用于建立区块链网络的过程的示例数据流的示图;

图6A-图6B是图示了用于区块链网络的事务处理的过程的示例数据流的图;

图7是图示了用于区块链网络的事务处理的另一示例过程的示图;

图8是图示了包括具有三个成员的机密联盟区块链框架(COCO)网络的系统的一个示例的框图;

图9是图示了包括COCO网络的一部分的系统的一个示例的框图,该COCO网络包括经历验证节点证明和密钥交换的两个验证节点;

图10是图示了用于将新成员添加到COCO网络的示例步骤的示图;以及

图11是图示了根据本公开的方面的用于区块链系统的过程的示例数据流的示图。

具体实施方式

以下描述提供了用于彻底理解本技术的各种示例和实现本技术的各种示例的描述的具体细节。本领域技术人员将理解,可以在没有许多这些细节的情况下实践该技术。在某些情况下,没有示出或详细描述公知的结构和功能,以避免不必要地模糊对技术示例的描述。本公开中使用的术语旨在以其最广泛的合理方式进行解释,即使其与该技术的某些示例的详细描述一起使用。尽管下面可以强调某些术语,但是旨在以任何受限制的方式解释的任何术语将在本具体实施方式部分中明确地和具体地进行限定。在整个说明书和权利要求书中,除非上下文另有指示,否则以下术语至少采用本文明确相关的含义。下面标识的含义不一定限制术语,而仅仅提供术语的示意性示例。例如术语“基于”和“基于”中的每一个都不是排他性的,并且等同于术语“至少部分地基于”,并且包括基于附加因素的选项,其中一些可能在本文中没有描述。作为另一示例,术语“经由”不是排他性的,并且等同于术语“至少部分地经由”,并且包括经由附加因素的选项,其中一些可能在本文中没有描述。“在…中”的含义包括“在…中”和“在…上”。本文使用的短语“在一个实施例中”或“在一个示例中”不一定是指相同的实施例或示例,尽管它可以指相同的实施例或示例。特定的文本数字指示符的使用并不意味着存在较低价的数字指示符。例如记载“从包括第三个foo和第四个bar的组中选择的小部件”本身并不意味着存在至少三个foo,也不意味着至少四个bar元件。除非明确排除复数参考,否则单数的参考仅仅是为了阅读的清楚,并且包括复数参考。除非另有明确说明,否则术语“或”是包含性的“或”操作符。例如短语“A或B”表示“A、B或A和B”。如本文所使用的,术语“部件”和“系统”旨在涵盖硬件、软件或硬件和软件的各种组合。因此,例如,系统或部件可以是过程、在计算设备上执行的过程、计算设备或其一部分。

简而言之,所公开的技术总体上涉及区块链和其他认证技术。在本技术的一个示例中,预定类型的区块链或其他认证协议代码和预定类型的共识代码被存储在处理器的可信执行环境(TEE)中。在一些示例中,TEE证明被用于验证在TEE中存储的区块链或其他认证协议代码是预定类型的区块链或其他认证协议代码,并且验证在TEE中存储的共识代码是预定类型的共识代码。可以接收更改预定类型的区块链或其他认证协议代码的请求。可以基于预定的共识代码来确定是否改变预定类型的区块链或其他认证协议代码。

在一些示例中,区块链联盟的预期成员在建立网络之前就联盟区块链网络的某些方面达成一致,包括例如要使用的区块链协议代码、要使用的共识协议、初始成员资格列表、以及可能还有区块链网络的许多其他方面。预期成员中的至少一个成员可以认可验证节点(VN)。在验证成员中的全部成员的某些商定方面(诸如要使用的区块链协议和要使用的共识协议)是相同的时,TEE证明可以用来验证节点中的每个节点存储商定的区块链网络协议和商定的共识协议。

如果TEE证明成功,则联盟网络可以被引导,并且私钥可以被交换,所有预期成员现在是联盟网络的成员。区块链主密钥可以从成员的私钥生成。在一些示例中,然后网络的参与者可以由成员批准加入。在一些示例中,此时,网络已被建立,并且准备好接收事务。

在一些示例中,区块链网络的参与者可以向区块链网络提交事务。可以将事务转发到区块链网络中的VN,该VN是基于商定的共识协议而被选择的。然后,所选择的VN可以通过执行事务的代码来处理事务,并且然后可以解决任何冲突。然后,VN可以基于区块链事务的处理来直接更新经处理的区块链的官方状态。然后,VN可以将经处理的区块链的经更新的官方状态广播到区块链网络。

示意性设备/操作环境

图1是可以实践本技术的方面的环境100的示图。如所示,环境100包括经由网络130连接的计算设备110以及网络节点120。即使图1中示出了环境100的特定部件,但是在其他示例中,环境100还可以包括附加的和/或不同的部件。例如在某些示例中,环境100还可以包括网络存储设备、维护管理器和/或其他合适的部件(未示出)。图1中示出的计算设备110可以处于各种位置,包括室内、云中等。例如,计算机设备110可以在客户端侧、服务器侧等。

如图1所示,网络130可以包括一个或多个网络节点120,一个或多个网络节点120互连多个计算设备110,并且将计算设备110连接到外部网络140(例如因特网或内联网)。例如,网络节点120可以包括交换机、路由器、集线器、网络控制器或其他网络元件。在某些示例中,计算设备110可以被组织成机架、动作区域、组、集合或其他合适的划分。例如在所示示例中,计算设备110被分组为分别标识为第一、第二和第三主机集合112a-112c的三个主机集合。在所示的示例中,主机集合112a-112c中的每一个主机集合分别可操作地被耦合到对应的网络节点120a-120c,其通常被称为“架顶”或“TOR”网络节点。然后,TOR网络节点120a-120c可以可操作地被耦合到附加网络节点120,以形成分层、平面、网状或其他合适类型的拓扑中的计算机网络,其允许计算设备110和外部网络140之间的通信。在其他示例中,多个主机集合112a-112c可以共享单个网络节点120。计算设备110实际上可以是任何类型的通用或专用计算设备。例如这些计算设备可以是用户设备,诸如台式计算机、膝上型计算机、平板计算机、显示设备、相机、打印机或智能电话。然而,在数据中心环境中,这些计算设备可以是服务器设备,诸如应用服务器计算机、虚拟计算主机计算机或文件服务器计算机。此外,计算设备110可以分别被配置为提供计算、存储和/或其他合适的计算服务。

示意性计算设备

图2是图示其中可以实践本技术的方面的计算设备200的一个示例的示图。计算设备200实际上可以是任何类型的通用或专用计算设备。例如,计算设备200可以是用户设备,诸如台式计算机、膝上型计算机、平板计算机、显示设备、相机、打印机、嵌入式设备、可编程逻辑控制器(PLC)或智能电话。同样地,计算设备200还可以是服务器设备,诸如应用服务器计算机、虚拟计算主机计算机或文件服务器计算机,例如,计算设备200可以是图1的计算设备110或网络节点120的示例。计算设备200还可以是连接到网络以接收IoT服务的IoT设备。同样地,计算机设备200可以是在各个附图中示出或参考的任何设备、节点、成员或其他实体的示例,如下面更详细地讨论的。如图2所示,计算设备200包括处理电路210、操作存储器220、存储器控制器230、数据存储存储器250、输入接口260、输出接口270和网络适配器280。计算设备200的这些前面列出的部件中的每一个部件包括至少一个硬件元件。

计算设备200包括至少一个处理电路210,其被配置为执行指令,诸如用于实现本文描述的工作负载、过程或技术的指令。处理电路210可以包括微处理器、微控制器、图形处理器、协处理器、现场可编程门阵列、可编程逻辑器件、信号处理器或适合于处理数据的任何其他电路。上述指令以及其他数据(例如数据集合、元数据、操作系统指令等)可以在计算设备200的运行时间期间被存储在操作存储器220中。操作存储器220还可以包括多种数据存储设备/部件中的任何一种,诸如易失性存储器、半易失性存储器、随机存取存储器、静态存储器、高速缓存、缓冲器或用于存储运行时信息的其他介质。在一个示例中,当计算设备200断电时,操作存储器220不保留信息。相反,计算设备200可以被配置为将指令从非易失性数据存储部件(例如,数据存储部件250)传输到操作存储器220,作为引导或其他加载过程的一部分。

操作存储器220可以包括第四代双倍数据速率(DDR4)存储器、第三代双倍数据速率(DDR3)存储器、其他动态随机存取存储器(DRAM)、高带宽存储器(HBM)、混合存储器立方体存储器、3D-堆叠存储器、静态随机存取存储器(SRAM)或其他存储器,并且这种存储器可以包括集成在DIMM、SIMM、SODIMM或其他封装上的一个或多个存储器电路。这种操作存储器模块或设备可以根据信道、等级(rank)、存储体(bank)来组织。例如操作存储器设备可以经由信道中的存储器控制器230而被耦合到处理电路210。计算设备200的一个示例可以包括每个信道一个或两个DIMM,每个信道具有一个或两个等级。等级内的操作存储器可以与共享时钟、共享地址和命令总线一起操作。此外,操作存储器设备可以被组织成若干存储体,其中存储体可以被认为是由行和列寻址的阵列。基于操作存储器的这种组织,操作存储器内的物理地址可以由信道、等级、存储体、行和列的元组来引用。

尽管有上述讨论,但操作存储器220具体地不包括或涵盖通信介质、任何通信介质或本身的任何信号。

存储器控制器230被配置为将处理电路210接口到操作存储器220。例如,存储器控制器230可以被配置为在操作存储器220和处理电路210之间接口命令、地址和数据。存储器控制器230还可以被配置为从处理电路210或为处理电路210提取或以其他方式管理存储器管理的某些方面。虽然存储器控制器230被示为与处理电路210分开的单个存储器控制器,但是在其他示例中,可以采用多个存储器控制器,(多个)存储器控制器可以与操作存储器220等集成。此外,(多个)存储器控制器可以被集成到处理电路210中。这些和其他变型是可能的。

在计算设备200中,数据存储存储器250、输入接口260、输出接口270和网络适配器280通过总线240被接口到处理电路210。尽管图2将总线240示为单个无源总线,但是其他配置(诸如总线集合、点对点链路的集合、输入/输出控制器、桥接器、其他接口电路系统或其任何集合)也可以适用于将数据存储存储器250、输入接口260、输出接口270或网络适配器280接口到处理电路210。

在计算设备200中,数据存储存储器250用于长期非易失性数据存储。数据存储存储器250可以包括各种非易失性数据存储设备/部件中的任何一种,诸如非易失性存储器、磁盘、磁盘驱动器、硬盘驱动器、固态驱动器或可用于信息的非易失性存储的任何其他介质。然而,数据存储存储器250具体地不包括或涵盖通信介质、任何通信介质或本身的任何信号。与操作存储器220相反,数据存储存储器250被计算设备200采用以用于非易失性长期数据存储,而不是用于运行时数据存储。

此外,计算设备200可以包括或者被耦合到任何类型的处理器可读介质,诸如处理器可读存储介质(例如,操作存储器220和数据存储存储器250)和通信介质(例如,通信信号和无线电波)。虽然术语处理器可读存储介质包括操作存储器220和数据存储存储器250,但是在整个说明书和权利要求中的术语“处理器可读存储介质”,无论是以单数还是复数形式使用,在本文中都被定义为使得术语“处理器可读存储介质”具体地排除并且不涵盖通信介质、任何通信介质或本身的任何信号。然而,术语“处理器可读存储介质”涵盖处理器高速缓存、随机存取存储器(RAM)、寄存器存储器等。

计算设备200还包括输入接口260,输入接口260可以被配置为使计算设备200能够从用户或从其他设备接收输入。此外,计算设备200包括输出接口270,输出接口270可以被配置为提供来自计算设备200的输出。在一个示例中,输出接口270包括帧缓冲器、图形处理器、图形处理器或加速器,并且被配置为绘制用于在单独的可视显示设备(诸如,监视器、投影仪、虚拟计算客户端计算机等)上呈现的显示。在另一示例中,输出接口270包括可视显示设备,并且被配置为绘制和呈现用于观看的显示。

在所示示例中,计算设备200被配置为经由网络适配器280来与其他计算设备或实体通信。网络适配器280可以包括有线网络适配器,例如以太网适配器、令牌环适配器或数字订户线(DSL)适配器。网络适配器280还可以包括无线网络适配器,例如Wi-Fi适配器、蓝牙适配器、ZigBee适配器、长期演进(LTE)适配器或5G适配器。

尽管计算设备200被图示为具有以特定布置配置的某些部件,但是这些部件和布置仅仅是可以采用该技术的计算设备的一个示例。在其他示例中,数据存储存储器250、输入接口260、输出接口270或网络适配器280可以直接被耦合到处理电路210,或者经由输入/输出控制器、桥接器或其他接口电路系统而被耦合到处理电路210。该技术的其他变型是可能的。

计算设备200的一些示例包括:被适配为存储运行时数据的至少一个存储器(例如,操作存储器220);和分别被适配为执行处理器可执行代码的至少一个处理器(例如,处理单元210),其响应于执行来使计算设备200能够执行动作。

示意性系统

图3是图示用于区块链联盟的系统(300)的一个示例的框图。系统300可以包括网络330、VN 351-353、成员设备341-343和参与者设备311-313。每个VN 351-353包括对应的TEE 361-363。

成员设备341-343、参与者设备311-313和/或VN 351-353中的每一个可以包括图2的计算设备200的示例。图3和说明书中的图3的相应描述出于说明目的说明了示例系统,示例系统不限制本公开的范围。

网络330可以包括一个或多个计算机网络,包括有线和/或无线网络,其中每个网络可以是例如无线网络,局域网(LAN),广域网(WAN),和/或诸如因特网的全球网络。在互连的LAN集合(包括基于不同层次结构和协议的LAN)上,路由器用作LAN之间的链路,使消息能够从一个LAN发送到另一个LAN。此外,LAN内的通信链路通常包括双绞线或同轴线缆,而网络之间的通信链路可以利用模拟电话线、全部或部分专用数字线路(包括T1、T2、T3和T4)、综合业务数字网(ISDN)、数字订户线(DSL)、无线链路(包括卫星链路)或本领域技术人员已知的其他通信链路。此外,远程计算机和其他相关电子设备可以经由调制解调器和临时电话链路来远程连接到LAN或WAN。网络330可以包括各种其他网络,诸如使用诸如6LoWPAN、ZigBee等本地网络协议的一个或多个网络。一些IoT设备可以经由网络330中的不同网络而不是其他IoT设备来连接到用户设备。基本上,网络330包括信息可以通过其在VN 351-353、成员设备341-343和参与者设备311-313之间传播的任何通信方法。虽然每个设备或服务被示出为被连接到网络330,但这并不意味着每个设备与所示的每个其他设备通信。在一些示例中,示出的一些设备/服务仅经由一个或多个中间设备来与示出的一些其他设备/服务通信。此外,尽管网络330被图示为一个网络,但是在一些示例中,网络330可以取而代之包括多个网络,该多个网络可以彼此连接或可以不彼此连接,其中所示设备中的一些设备通过多个网络中的一个网络彼此通信,并且所示设备中的其他设备用多个网络中的不同网络相互通信。

在一些示例中,成员设备341-343是成员用于在网络330上进行通信的设备,诸如用于成员与其对应的VN之间的通信,例如以认可VN。在一些示例中,参与者设备311-313是成员用于在网络330上进行通信的设备,例如以请求事务。

在一些示例中,VN 351-353是在正常操作期间验证和处理提交的区块链事务并执行链码的设备。如上所述,在一些示例中,每个VN 351-353包括TEE。在一些示例中,TEE能够实现受保护区域在处理器内部的创建,使得受保护区域中的存储器被加密,并且仅在TEE内部被解密。TEE可以互换地被称为飞地(enclave),或者在一些示例中,TEE可以被视为飞地的子集。TEE证明可以用于验证在TEE中运行的代码。在一些示例中,TEE允许在TEE内发生的计算的完整性以及在TEE内发生的事件的机密性。

TEE的一些示例基于硬件,而其他示例基于软件。基于硬件的TEE的示例使用基于硬件的存储器范围保护来定义TEE的地址范围。在一些示例中,对TEE的写入是加密的。在一些示例中,CPU不允许TEE的地址范围之外的任何内容以明文形式查看该地址范围,并且从TEE的地址范围中不允许的地址范围区域外部进行写入。

在一些示例中,在建立联盟区块链网络之前,区块链网络的预期成员就某些细节达成一致,包括哪些区块链协议代码以及哪些共识协议代码将在联盟区块链网络的每个验证节点的TEE中被执行。在联盟区块链网络的建立期间,一个或多个验证节点由联盟区块链网络的一个或多个成员认可。此外,TEE证明可以被用于验证每个验证节点正在执行商定的区块链协议代码和商定的共识协议代码。在建立联盟区块链网络之后,在一些示例中,可以改变最初商定的参数,诸如要在TEE中运行的商定的区块链协议代码——在一些示例中,这种改变基于关于共识协议、N个中的M个的投票等来被确定,如下面更详细地解释的。

系统300可以包括比图3中图示的更多或更少的设备,其仅作为示例示出。

图4是图示VN 451的一个示例的框图,VN 451可以与例如参与者411和/或认可方441通信。VN 451可以包括TEE 461、区块链服务471和磁盘存储装置472。TEE 461可以包括区块链协议465、机密联盟(COCO)区块链应用编程接口(API)466和COCO核心467。

区块链服务471可以包括执行用于维持区块链系统的可用性和持久性的功能的软件。例如,当TEE中可用的存储装置不足以存储所有数据时,或者在其他合适的情况下,磁盘存储装置472可以包括加密的区块链数据和元数据。区块链协议465可以包括商定的区块链协议代码。在一些示例中,COCO核心是核心COCO框架代码,其在下面更详细地解释。在一些示例中,COCO API 466是COCO框架的API。

VN 451可以在网络上与其他VN、一个或多个参与者和/或一个或多个认可方(包括例如参与者411和认可方441)通信,其中认可方441是认可VN 451的成员。

在一些示例中,TEE外部的VN中的所有内容都被建模为不可信的。在一些示例中,TEE外部的VN的部分用于维持系统的可用性和持久性。在一些示例中,在参与者或认可方与用于安全通信的TEE之间存在SSL、TLS或其他安全隧道,其中TEE外部的VN中的元件是用于安全通信的直通。

在一些示例中,TEE中的区块链协议的生命周期由在TEE内部运行的软件基于成员的指令并且稍后基于该联盟(例如仲裁集)的决策作为一个整体来被控制,如下面更详细地讨论的。

如下面更详细讨论的,尽管未在图4中示出,但在一些示例中,TEE被分成两个单独的受保护区域,一个具有区块链API,另一个运行区块链协议,它们之间具有安全连接。

示意性处理

为清楚起见,本文描述的过程是根据由特定设备或系统部件以特定序列执行的操作来描述的。然而,应注意,其他过程不限于所述序列、设备或部件。例如某些动作可以以不同的序列、并行地、被省略地执行,或者可以通过附加的动作或特征来补充,无论本文是否描述了这种序列、并行、动作或特征。同样地,本公开中描述的技术中的任何技术可以被结合到所描述的过程或其他过程中,无论该技术是否结合过程进行具体描述。所公开的过程还可以在其他设备、部件或系统上或由其他设备、部件或系统执行,无论本文是否描述了这种设备、部件或系统。这些过程还可以以各种方式体现。例如它们可以体现在制品上(例如作为在处理器可读存储介质中存储的处理器可读指令),或者作为计算机实现的过程来执行。作为替代示例,这些过程可以被编码为处理器可执行指令并且经由通信介质进行传输。

图5A-图5C是图示用于建立联盟区块链网络的过程(520)的示例数据流的示图。

在所示示例中,首先发生步骤521。在步骤521处,在一些示例中,区块链联盟的预期成员在建立网络之前就联盟区块链网络的某些方面达成一致。在一些示例中,商定的方面可以包括以下一项或多项:初始成员将是谁、批准在网络的VN的TEE中执行什么代码(包括区块链协议代码和共识协议代码)、哪个或哪些处理器是在网络的VN中可接受的、什么构成接受的TEE、区块链码的什么软件版本将被执行等。

如所示,在一些示例中,接下来发生步骤522。在步骤522处,在一些示例中,每个预期成员认可至少一个单独的VN。在一些示例中,作为验证的一部分,预期成员将商定的代码存储在TEE中,并且将公钥/私钥对(分别为PBK和KBK)存储在TEE中。商定的方面中的一些方面还可以被存储在VN中,诸如商定的成员资格列表以及在TEE中执行的商定代码的标识。

在一些示例中,步骤522可以以与上述不同的方式执行。例如在某些示例中,并非每个预期成员都认可单独的VN。例如在一些示例中,仅认可一个VN。

如所示,在一些示例中,接下来发生步骤523。在步骤523处,每个VN发现网络中的其他VN。在一些示例中,仅存在一个VN,并且不执行步骤523。

如所示,在一些示例中,接下来发生步骤524。在步骤524处,在一些示例中,从联盟的每个预期成员接收以下内容:多个成员资格列表、以及来自该联盟的多个预期成员的多个授权。在一些示例中,授权是与预定类型的区块链协议代码和预定类型的共识协议代码相关联的指示。在一些示例中,成员资格列表和授权由VN中的每个VN发送,并且每个VN接收由每个其他VN发送的成员资格列表和授权。在其他示例中,仅存在一个VN,并且从预期成员的成员设备接收成员资格列表和授权。

如所示,在一些示例中,接下来发生决策框525。在决策框525处,在一些示例中,确定来自预期成员中的每个预期成员的成员资格列表是否彼此匹配。如果不是,则在一些示例中,该过程前进到返回框,其中其他过程被恢复。然而,如果在决策框525处的确定是肯定的,则在一些示例中,该过程移动到决策框526。

在决策框526处,在一些示例中,确定来自预期成员中的每个区块链协议代码和共识协议代码的类型的授权是否彼此匹配。如果不是,则在一些示例中,该过程前进到返回框,其中其他过程被恢复。然而,如果在一些示例中,决策框526处的确定是肯定的,则该过程移动到决策框527。

在决策框527处,TEE证明可以用来验证与联盟的预期成员相关联的节点存储要在TEE上运行的商定的授权的区块链协议代码和共识协议代码。如果TEE证明是否定的,则在一些示例中,该过程移动到返回框。否则,在一些示例中,该过程前进到框528。

在框528处,可以在VN之间交换私钥。如图所示,在一些示例中,接下来发生决策框529。在框529处,可以从私钥中的每个私钥生成区块链主密钥(BMK)。如所示,在一些示例中,接下来发生决策框530。在框530处,在一些示例中,参与者由成员被批准加入。在一些示例中,参与者被允许请求事务并查看他们被授权查看的事务,但是没有成员的其他权利,诸如对改变成员资格、更改所使用的协议区块链码等进行投票的投票权。在一些示例中,网络现在准备好处理来自参与者的事务。然后该过程可以进入返回框。

在一些示例中,公共网络可以允许任何参与者提交事务,但是非公共网络要求规定参与者,这是VN的认可方的另一权限。参与者可以由公钥/私钥对表示,该公钥/私钥对被允许提交由网络执行的事务。参与者集合不一定包括成员,但在某些示例中其包括成员。成员可以通过向其VN提交参与者的公共事务密钥(PTK)来授权参与者,并且VN可以与网络共享其规定的参与者的列表。如果网络要求参与者被多于一个成员批准,则网络可以使用类似于批准新成员的协议,如下面更详细地讨论的。

一旦建立了联盟区块链网络,联盟区块链网络就可以开始接收和处理事务。

图6A-图6B是图示了用于联盟区块链网络的事务处理的过程(620)的示例数据流的图图。

在所示示例中,首先发生步骤621。在步骤621处,在一些示例中,参与者使用区块链主密钥来加密区块链事务。如所示,接下来发生步骤622。在步骤622处,在一些示例中,参与者发送经加密的区块链事务。如所示,在一些示例中,接下来发生步骤623。在步骤623处,可以将经加密的区块链事务转发到基于商定的共识协议代码所选择的特定VN。

例如,在一些示例中,可以使用共识算法来选择VN领导者,并且VN领导者接收事务、提交事务、并且向全部其他成员广播事务。(VN领导者在本文中可互换地被称为主VN。)在这些示例中,在步骤623处,共识算法被用于选择VN领导者,并且经加密的区块链事务被转发给VN领导者。

如所示,在一些示例中,接下来发生步骤624。在步骤624处,在一些示例中,经加密的事务被转发所至的VN接收经加密的区块链事务。如所示,在一些示例中,接下来发生步骤625。在框625中,在一些示例中,VN通过执行事务的代码来处理区块链事务。

如所示,在一些示例中,接下来发生步骤626。在框626处,在一些示例中,VN基于区块链事务的处理来直接更新经处理的区块链的官方状态。如所示,在一些示例中,接下来发生步骤627。“直接”更新状态意味着VN更新状态而不需要任何其他实体的任何动作或确认以便更新状态。在步骤627处,可以向区块链网络广播经处理的区块链的经更新的官方状态。

在一些示例中,由于信任,VN不进行用于验证的重新计算,这使得可以在步骤626处直接更新区块链状态。在一些示例中,因为区块链联盟网络中的VN是完全可信的,所以网络上的其他VN可以隐式接受其从可信的VN接收的任何区块链状态更新,因为它符合区块链的协议并且受到TEE保护免受外部篡改。此外,在一些示例中,不需要事务的副本以便确认框。

然后,过程可以进行到返回框,其中其他过程被恢复。

在一些示例中,链码不需要由网络执行多于一次,链码可以是非确定性的,并且链码可以包括与外部系统的交互。在一些示例中,区块链还可以被构建为具有针对试图妥协完整性和机密性的敌对参与者的不同级别的防御,从针对单个流氓成员的保护,到N个中的M个投票,到要求所有成员就状态改变达成一致。网络可以容纳任何区块链抽象概念、任何区块链协议和任何分类账,并且可以能够集成任何类型的现有区块链技术。本文中,关于N个中的M个投票,N表示成员的总数,M表示用于在投票中建立仲裁集的成员的数目。

网络的示例可以使得能够在不改变成员之间的信任假设的情况下改进区块链的性能特征。网络的示例可以允许数据在被放置到区块链时保持私密,使得仅相关方可以查看事务。网络的示例可以使得在区块链内部运行的代码是非确定性的,从而例如每次可以产生不同的结果。网络的示例可以在不引入不必要的复杂性、不引入附加的显著性能开销、或不引入非自然信任假设的情况下实现这种结果。

网络的示例利用网络的VN中的TEE证明,使得TEE内部的代码可以信任接受操作系统,并且TEE的操作环境中的TEE周围的其他用户模式代码完全不可信任,但TEE仍然可以通过依赖硬件强制隐私(例如,通过利用或以其他方式采用软件保护扩展、平台安全处理器、安全执行环境等)以可信方式操作,并且TEE可以通过建立到TEE之外的某个端点的安全连接来在外部投射信任。在一些示例中,这允许在TEE内发生的计算的完整性和TEE内发生的事件的机密性。网络的示例使用与TEE相关联的信任作为区块链系统中的信任假设的构建块。

在一些示例中,网络中的每个VN完全由网络信任,因为以下事实:其他VN可以通过其认可成员来验证VN的认可,并且使用VN正在执行由成员资格批准的代码的TEE证明。如前所述,VN可以通过对认可的类似的过程建立彼此之间的可信连接,其中以在VN证明VN的代码是在可信TEE中运行的可信版本的事实以及它具有相同的成员资格列表的事实之后,其他VN发布了他们认可成员的KBK。在一些示例中,可以信任作为来自另一节点的输入提供的一个节点的输出,因为生成输出的代码被证明是先前由成员资格批准的可信代码。在一些示例中,区块链的所有内容都被加密,并且区块链的内容仅在TEE内用有效证明被解密,这能够实现机密性。此外,具有有效证明的TEE中的代码可以是非确定性的——因为TEE是可信的,所以在这种示例中不需要其他节点再现其他节点的结果。

在一些示例中,VN根据机密联盟区块链框架(COCO)框架操作,其允许使用任何合适的区块链协议,并且允许任何合适的共识协议与COCO框架结合使用。尽管COCO中有“机密”一词,但COCO框架的一些示例包括机密性,而COCO框架的一些示例不包括机密性。在一些示例中,COCO框架不被独立使用,而是与例如区块链协议和由成员选择的共识协议结合使用。在一些示例中,COCO框架是在VN中操作的代码,其用于建立区块链网络,实现任何区块链和共识协议、任何区块链分类账、任何区块链抽象以及任何合适的区块链技术的使用。在一些示例中,大多数COCO代码是在TEE中被执行的,但是COCO的一些外围方面可以在TEE之外执行,如下面更详细地讨论的。在一些示例中,COCO框架本身不定义区块链分类帐和实际区块链事务处理,但是允许使用任何合适的分类帐和区块链协议,并且能够实现事务的机密属性,管理信任假设,允许链码仅由网络执行一次,允许链码是非确定性的,并允许链码包括与外部系统的交互。COCO框架还可以包括针对试图妥协完整性和机密性的敌对参与者的不同级别的防御,从针对单个流氓成员的保护,到“N中的M个”投票,到要求所有成员就状态变化达成一致。根据在VN中的每一个VN上执行的COCO框架操作的VN网络可以被称为COCO网络。

如上所述,在一些示例中,成员最初就某些批准达成一致,包括例如成员将是谁、批准在TEE中执行什么代码、哪个或哪些处理器是可接受的、什么构成一个已接受的TEE、使用什么COCO框架、区块链码的什么软件版本将被执行,并且每个成员启动至少一个VN。在一些示例中,每个成员维护至少一个VN,VN中的每一个VN参与区块链网络的事务处理和共识协议。在其他示例中,每个成员不一定维持其自己的VN。

在一些示例中,某些初始批准需要一致同意以便建立网络,并且其他批准可能仅需要预期成员中的仲裁集之间的协议,或者可以基于共识协议代码中的共识协议来确定初始批准。

在一些示例中,在正常操作期间,VN验证并处理提交的事务,并执行链码。成员可以将他们信任的区块链协议实现的版本部署到可信执行环境(TEE),并且一旦区块链码证明其是该成员信任的代码并且它在同样被成员信任的TEE中执行,则成员通过为其规定它们的公共和私有区块链密钥(分别为PBK和KBK)来认可VN。在一些示例中,VN的所有者被认为是其认可方,并且认可方可以通过提交成员的公共区块链签名密钥来更新VN信任的成员资格列表。

在一些示例中,成员资格和协议更新以及区块链和链码状态的更新需要达成共识。在一些示例中,如上所述,使用的共识协议是用于建立网络的商定参数之一。在一些示例中,每个VN完全信任其已建立可信连接的所有其他VN。因此,在一些示例中,只要区块链更新与VN维护的现有状态不冲突,其就可以明确地被接受;在这些示例中,只有在存在冲突更新的可能性时才需要明确的共识协议。在各种示例中,网络可以通过多种方式实现共识,但是在一些示例中,网络不需要浪费的工作证明、导致延迟的时间限制、或者可能不公平的利益证明算法。

在一些示例中,共识依赖于Paxos或许多类Paxos共识算法中的一个,当网络由相对少量的共识参与者组成时,这是可行的。在一些示例中,在TEE中执行的区块链码实现了共识,并且因为代码是可信的,所以不需要防御诸如恶意消息的拜占庭(byzantine)故障。在一些示例中,允许Paxos设置为增长以适应每个成员的至少一个VN,但是在一些示例中,不包括多于一个,以便将共识参与者集合保持为小以获得最大效率。在一些示例中,Paxos类型的共识用于实现集中式数据库的高可用性,因此示例小型网络可以使用它来实现数据库级吞吐量和延迟。这种方案可以确保存在由网络的大多数同意的区块链状态的一个版本。

图7是示出用于区块链事务处理的过程(760)的示例数据流的示图。

首先,参与者可以提交事务。在一些示例中,使用BMK加密事务。

在一些示例中,网络中的任何VN可以接受和处理事务,并且商定的共识协议被使用。在一些示例中,基于共识协议将所接收的事务转发到用作主设备的VN。在该示例中,然后,主VN接收事务。

接下来,根据商定的共识协议,要处理事务的VN可以通过执行事务的代码来处理事务。在一些示例中,主VN然后解决任何冲突。在一些示例中,TEE内的所有数据都是纯文本的。在一些示例中,TEE之外(磁盘/网络)的数据由BSK签名并由BMK加密。在一些示例中,每个VN存储分类帐的完整副本,TEE内的数据是纯文本,并且TEE外部的数据(诸如磁盘上的数据或通过网络传送的数据)由BSK签名并由BMK加密。

在其他示例中,每个VN不需要存储分类帐的副本。在其他示例中,分类帐可以被存储在外部存储云服务中或本地存储阵列中。

接下来,VN可以将事务和事务状态广播到其他VN。接下来,VN可以直接更新区块链状态。在一些示例中,由于信任,VN不需要进行重新计算以进行验证,并且直接更新区块链状态。

图8是示出了包括具有三个成员和三个对应VN的示例COCO网络(800)的系统的示例的框图。图8示出了示例COCO网络,其中已经规定了三个VN,每个VN由不同的成员规定。

成员i的公钥被描绘为PBKmi,以及其私钥为KBKmi。图8的示例中的VN已建立可信连接并共享这些密钥。

在一些示例中,一旦建立了具有由VN表示的大多数成员的可信网络,就可以实现使用高效的共识算法的区块链协议的基础,其中单个VN可以代表整个网络使得其他节点接受事务(包括链码事务),已知它们符合区块链的规则。

在一些示例中,VN还可以单方面或通过投票方案批准参与者,包括其自己。在一些示例中,参与者没有网络投票权限,但是由于网络被规定有其公共事务密钥(PTK),所以可以提交事务。

通过利用网络的信任,VN的区块链协议代码可以在知道其遵守区块链协议规则的情况下接受来自其他VN的事务,并且提交不与已经提交的任何事务冲突的任何事务。在一些示例中,如果事务与另一个未提交的事务冲突,则VN使用共识协议来确定哪个事务获胜,并且大多数VN将快速收敛于获胜事务。此外,因为VN的执行可以由TEE保护免受外部检查,所以它可以实现任何机密性模型,包括仅允许作为事务参与者的成员来查看事务。

在一些示例中,VN通过使用一对区块链公钥和私钥(BPK和BSK)来保护外部存储的区块链状态的完整性,并且可选地通过使用从成员的KBK的集合导出的区块链主密钥(BMK)来保护其机密性。在一些示例中,出于该原因,KBK在网络的VN之间共享。在一些示例中,BMK特定于成员资格集合,并且灵活的N中的M个的方案保护BMK免受少于M个串通成员的妥协。在一些示例中,当成员资格集合更新时,网络生成新的BMK以保护所有随后附加的状态。

以上各种示例讨论了在联盟区块链网络中的联盟区块链网络和事务处理的建立。在一些示例中,可以基于共识协议代码来改变最初商定的参数中的一个、一些或全部,诸如成员资格、区块链协议代码、共识协议代码、COCO框架、处理器、TEE和其他参数。例如,在一些示例中,可以对验证节点做出请求,以更改这些参数中的一个,诸如成员资格添加、成员资格删除、用于包括TEE的处理器的处理器类型、TEE类型、在TEE中执行的代码版本、或在TEE中执行的机密联盟区块链框架(COCO)版本。接收请求的验证节点可以基于共识协议代码来确定是否更改参数。

如上所述,在一些实例中,BMK只能在N个成员的M的同意下恢复。类似地,上面讨论的参数中的一些或全部的改变可以由N个中的M个投票改变,其中N是当前的总成员数,并且M是从1到N的数目,其是用于改变参数的仲裁集,其中M是最初建立联盟区块链网络时商定的参数之一。如上所述,在一些示例中,成员具有投票权限,而非成员的参与者没有投票权限。

在一些示例中,添加新参与者要求基于商定的共识协议的共识。在其他示例中,成员可以单方面添加新参与者。新参与者的添加是否可以被单方地完成可以是商定的初始参数之一。

在一些示例中,对向网络成员资格列表的添加和从网络成员资格列表的删除的批准、以及对网络允许参与的批准的区块链实现的集合的改变可以基于商定的共识协议进行。此外,在一些示例中,对于要求参与者由成员授权的网络,成员还可以批准具有向网络提交事务的许可的参与者集合。用于在成员之间达成一致的协议可以通过在每个验证节点的TEE中存储的商定代码来实现。

在一些示例中,每个成员用公钥/私钥对(PBK和KBK)表示,成员用其以通过认可过程来引导其在COCO中的成员资格。在一些示例中,认可表示成员完全信任网络的区块链协议的特定实现的事实。在一些示例中,VN在可信执行环境(TEE)中执行经认可的区块链码,并且每个VN仅由一个成员认可。例如,存储在区块链上的代码可以作为事务的一部分执行。在一些示例中,作为认可操作的一部分,成员与VN共享成员的KBK。在这些示例中,因为成员与VN共享成员的KBK,出于安全原因,成员信任区块链协议实现和TEE不泄漏密钥可以是有用的。该信任可以通过区块链协议的仔细审查及其实现,并基于TEE妥协的威胁模型和风险来实现。在一些示例中,每个成员认可至少一个VN,但是认可多个节点可以提供高可用性。

认可可以向认可成员提供授权VN将参与的区块链协议实现的哪些其他成员和其他实现的专有能力。在一些示例中,VN将接受成员资格更新和批准以信任区块链协议实现,而不仅仅是来自VN的认可成员。在一些示例中,为了保护所有VN的外部通信,VN使用TEE生成公钥/私钥对,并在外部共享其公钥。成员可以使用VN的公钥来与VN建立安全隧道,包括VN不是认可方的预期成员。然后,VN可以使用VN的KBK的拥有证明来验证VN请求。

一种类型的VN请求是授权网络成员,如上所述,在一些示例中,只有节点的认可方可以执行。在一些示例中,为了授权成员,认可方提交该成员的PBK。在一些示例中,一旦填充了认可方的密钥和由其PBK标识的网络成员的列表,VN就可以加入网络。在一些示例中,加入是VN与网络的其他VN建立可信连接的行为。网络可以使用适合网络要求的发现协议来为VN提供查找网络的其他VN和与网络的其他VN连接的能力。例如,认可方可以通过提交节点的DNS名称、IP地址或特定于区块链网络的发现和连接系统的标识符来提供节点列表。

如上所述,在一些示例中,与另一个VN建立可信连接与创建在通信VN的公钥上构建的相互认证的安全隧道一起开始。作为信任建立的一部分,在某些示例中,VN证明它拥有其认可方的KBK。在一些示例中,这确保了远程节点已被授权成员认可,因为隧道证明节点可以提供引用VN的公钥的认可,其由与成员的PBK匹配的成员的KBK签名。

图9是示出了包括COCO网络的一部分的系统(900)的示例的框图,该COCO网络包括两个验证节点,该两个验证节点经历验证节点证明和密钥交换,作为加入网络的新成员的最终部分。

图9示出了VN证明和密钥交换的示例,作为经由节点正在运行的区块链协议实现的精确版本的交换以及成员资格列表的比较来在节点之间建立信任的最后步骤。节点可以使用TEE证明来完成此操作,其包括证明节点正在特定TEE中运行特定实现。

在一些示例中,一旦VN确定远程节点正在VN也信任的TEE中执行可信代码,则VN检查以确保远程认可方在本地成员资格列表中,并且如果是,则信道被认为是可信的,VN将接受来自远程节点的区块链更新。在一些示例中,这意味着VN确信远程节点不会暴露或泄露区块链协议不允许的数据。在一些示例中,通过使VN通过其PBK的哈希(例如加盐哈希)而不是PBK本身来引用成员,可以使商定的成员集本身机密。在一些示例中,一旦建立了可信连接,VN就共享VN的认可方的KBK。

在一些示例中,区块链有两种演进方式:如上所述的成员资格更新和区块链码更新。当网络同意协议更新时,这可能导致网络希望接受区块链码的一个或多个新实现。希望更新区块链码的成员可以关闭其现有的VN,并启动新的VN来代替现有的VN。成员可以选择允许新VN信任先前版本,或仅信任新版本。信任现有版本可以确保在新版本不具有N个中的M个大多数的情况下可以继续处理事务,但是如果先前的代码由于某种原因被认为是不可靠的,或者如果维护协议兼容性的复杂性太大,则可以取而代之信任新版本而不是现有版本。但是,更新期间的跨版本不兼容可能会中断事务处理。

在一些示例中,在表示每个成员的VN之间建立信任导致每个节点最终获得所有网络成员的KBK的副本。在一些示例中,节点将接受使用该节点被提供给参与的成员的私有签名密钥所签名的区块链更新,无论节点是直接从成员的VN还是从另一个可信任的VN接收事务。

向网络添加新成员可能要求VN的认可方通过规定新成员的PBK来将其提议给网络。然后,认可方可以让其他VN知道该提议,以及认可方投票准许新成员进入网络的事实。当其他成员提出相同的成员时,他们的VN可能会注意到投票并让网络知道。在一些示例中,VN不接受成员提出的区块链更新,直到基于商定的共识协议来达成共识为止。

图10是示出用于将新成员添加到联盟区块链网络的过程(1080)的示例的示图。图10示出了具有两个成员(m1和m2)的网络添加第三成员m3所遵循的步骤的示例。图10的步骤的一个示例如下进行。在(a)中,成员m1提议新成员m3。成员的VN注意到该提议并且成员的认可方投票,然后将该提议传递给其他VN。m1的VN注意到提议和m1的准许投票。然后在(b)中,成员m2提议新成员,并且两个VN都注意到投票,该投票现在是一致的,因此在(c)每个VN都添加了新成员,并且一旦如此,VN认为新成员在投票中并将接受来自新成员的区块链更新。

在一些示例中,在任何时间,成员可以请求区块链网络(意味着VN)将其从成员集合中去除。然而,在一些示例中,根据网络的成员资格规则,当表示除被去除者之外的成员的多数或所有VN同意去除成员时,VN将仅去除成员。在一些示例中,大多数(≥1/2N+1,其中N是初始成员资格计数)(注意去除成员没有投票权(因此有效≥1/2N))被要求去除成员,以便防止恶意成员指示其VN去除所有其他成员,这将使其具有解密所有区块链的状态的能力(下面更详细地讨论区块链加密方案的示例)。在一些示例中,当成员被去除时,VN销毁成员的私有对称加密密钥的VN的短暂副本,并触发新成员资格元数据块的生成。

成员还可以请求密钥翻转操作,由此更新成员资格元数据以反映新的公钥,并且成员的旧KBK被用新的公钥加密,并被存储在成员资格元数据中。在一些示例中,一旦翻转,网络将不接受引用旧KBK的任何事务。然而,当成员证明他们可以访问新密钥时,网络可以允许成员访问与旧密钥相关联的任何事务,这可以使成员能够完全访问他们的数据,同时防止旧密钥的访问。

在一些示例中,除了COCO的成员资格、可信连接建立和共识的选项之外,COCO支持任何区块链协议。例如区块链码可以实现以太坊、Corda、链核心(Chain Core)或超级账本(Hyperledger)系统。但是,现有系统不被设计为利用COCO的一些示例的信任和机密性的优点。

在一些示例中,因为COCO VN是完全可信任的,所以网络上的其他VN可以隐含地接受它从可信任的VN接收的任何区块链状态更新,因为它符合区块链的协议并且被保护免受TEE的外部篡改。这允许链码的一次性和非确定性的执行的可能性。例如链码可以使用TEE的非确定性来生成用于彩票或解决冲突的随机数。链码还可以调用外部系统,这可以用链码信任的外部系统代替对链内代码的需要,其优点是在VN接受链码事务时可以引用外部系统。链码还可以执行具有副作用的外部操作,只要如果有任何可能由于替代冲突而导致这种操作将被过时或者在VN中的大多数发生事务之前事务被丢失,则补偿操作可以撤消操作。

利用COCO信任基础,可以构建任何机密性模型。

例如首先,参与者可以通过用成员的KBK的PBK加密事务来确保网络(或者更具体地,其提交事务的VN)将是机密的。在这些示例中,只有VN的代表成员已经认可的网络的VN才能访问事务的内容,其可以包括敏感信息。对于其中参与者希望仅向作为具有附加成员的网络的一部分的VN揭示事务的网络,事务可以用唯一密钥被加密,该密钥本身用这些成员的PBK的N个中的M个编码被加密。

在一些示例中,在成员将其自身与另一个或多个成员之间的事务指定为机密的情况下,VN全部以明文处理事务,但是事务本身存储在用BMK加密的区块链中。在一些示例中,VN然后仅允许事务中涉及的成员查看事务。相同的模型可以应用于链码和链码状态。

在其他示例中,相反,大多数成员可以请求揭示另外的机密事务,这对于联盟随后需要完整查看历史活动的情况可以是所期望的。其他示例允许规定审计成员。就像新参与成员的N个中的M个接受一样,N个中的M个方案可以使成员能够同意许可成员具有特殊权限,例如能够阅读所有事务,甚至是标记为机密的事务。

示例性区块链网络的一个方面是VN如何实现共识。可以使用多播、广播树或由成员资格认为对成员资格规模和VN通信网络的拓扑高效的任何其他协议来执行遍及网络的分发事务。在一些示例中,VN的可信特性意味着可以如消息可以被分发到大多数节点一样快速实现共识。

在一些示例中,在任何VN可以接受事务的模型中,每个VN可以构建不同版本的区块链。在任何时候,VN可以具有以及由VN的多数子集N提交的一些事务以及由不同子集N提交的其他事务。在一些示例中,因为最终所有节点都收敛到所提交事务的公共视图,即使块的顺序是唯一的,每个VN的提供的区块链状态也是区块链状态的正确表示。

COCO网络可以用其他共识协议构建,但是一些示例使用共识协议,其可以有利地利用从可信VN接收的消息本身被信任的事实来实现高效协议和最大吞吐量。

在一些示例中,事务处理如下进行。首先,参与者提交事务。参与者提交的事务可以用BMK加密,并且基于共识协议被转发到用作主设备的VN。(主VN可互换地被称为领导者VN。)在该示例中,主VN然后接收事务,并通过执行事务的代码来处理事务。在此示例中,主VN然后解决任何冲突,并将事务和事务的状态广播到其他VN。在一个示例中,每个VN存储分类帐的完整副本,TEE内的数据为纯文本,并且TEE外部的数据(诸如磁盘上或通过网络传送的数据)由BSK签名并由BMK加密。然后,VN可以直接更新事务状态。

在其他示例中,每个VN不需要存储分类帐的副本。在其他示例中,分类帐可以被存储在外部存储云服务中或内部存储阵列中。

COCO区块链的持久状态(意味着写入持久存储装置的状态)可以包括三种类型的数据:元数据、事务和链码状态。链码代码可以被认为是链码状态的一部分。可以使用一对区块链公钥(BPK)和区块链私钥(BSK)来保护持久状态的完整性。BPK可以用于验证由对应BSK签名的块状态摘要。在一些示例中,链仅附加有使用BSK签名的摘要绑定到链的先前部分的链的任何附加项。如果BSK泄漏,流氓或串通成员可能能够妥协区块链的完整性,这就是为什么在一些示例中,BSK在TEE中被生成并且专门密封在TEE内。

在一些示例中,元数据包括用于完整性验证的纯文本BPK。在一些示例中,使用对称密码术利用区块链主密钥(BMK)来保护不以明文暴露的任何区块链状态的机密性。BMK还可以以受保护的方式成为区块链元数据的一部分,因为仲裁集的成员可能需要或想要在紧急情况下绕过TEE来解密和恢复区块链数据(例如在所有TEE被销毁之后进行灾难恢复)。

在一些示例中,区块链包括随时间生长的分类帐。在一些示例中,区块链分类帐可能变得太大而不能被存储在TEE中,并且取而代之被存储到磁盘。在一些示例中,当私有数据被存储到磁盘时,BPK和BSK使数据能够被存储在磁盘上,并且一旦数据被读回,就验证数据没有被篡改。在一些示例中,BMK可以用于加密存储到磁盘的私有数据,因此即使当数据被存储在磁盘上,数据也不能被查看。

如在一些示例中所使用的,保护BMK的一种方案是在区块链元数据中存储针对加密到该成员的KBK的每个成员的BMK的副本。这可以防止BMK泄漏到成员之外。但是,在某些示例中,它并不能防止流氓或妥协成员泄露它。

为了防御恶意节点或串通成员,基于COCO的区块链可以使用N个中的M个的加密方案来要求必须知道某些阈值数目的成员的KBK以获得BMK。一旦VN加入了由该数目的成员认可的足够的其他VN,VN很快就可以获得访问权,但是,在某些示例中,是立即。在一些示例中,由于成员在TEE之外仅能够访问其自身的密钥,因此至少需要M个成员泄漏或共享他们的KBK以便链在VN的TEE之外被解密。

虽然M可以等于N,或者甚至可以是1,但是COCO实现的一些示例要求M至少为1/2N+1并且与成员集协议一致模型匹配,这可以确保只要多数成员集合不要串通,区块链状态的机密性受到在TEE内执行的相互信任的代码的保护。它还可以确保只要网络可以与代表至少M+1个成员的VN建立连接,它就可以操作,从而即使在成员撤销其VN或其VN与网络分区的情况下也能确保弹性。

在一些示例中,N个中的M个的方案可以如下实现。区块链的成员资格元数据块中列出的每个成员都由成员的公钥以及加密到该公钥的BMK的片段表示,如表1所示。在一些示例中,第一个元数据成员资格块在网络引导期间被创建,将BMK加密到初始成员资格集合。当额外的成员被添加到网络时,COCO的一个示例采取步骤以通过创建新的BMK来调整M和N,在更新的N个集合的成员中对其进行分段,并附加新元数据块,新元数据块包括由新的BMK加密的先前BMK,以及更新的成员资格列表两者。

表1.持久性区块链中BMK的N个中的M个加密

如前所述,直到成员资格更新时的区块链状态可能经受根据区块链的N个中的M个的实现的先前成员资格集合中的串通集合的妥协。但是通过创建新的BMK,如果区块链实现了一个,那么区块链时间线中从该点开始的所有区块链状态可以受到更新的成员资格集合的保护,包括更新的N个中的M个的方案。

为了防止区块链回滚到先前状态,可以将链的最后添加的签名、认证码或唯一标识符存储在仅可由VN访问的可信非易失性存储中。类似地,区块链的最后添加的签名可以被包括在与成员的所有交互中,以允许成员检测将区块链回滚到先前状态的任何尝试。在某些示例中,成员在成员资格更改时翻转KBK以防止旧代码版本中的错误。在一些示例中,在某些情况下在每个成员资格版本之后重新运行证明、密钥交换或两者,诸如从代码的批准列表中去除代码版本。

在一些示例中,COCO被适配于不要求每个成员具有专用VN的模型。共享VN对于开发和/或测试、注重成本的成员、或者作为可以由云提供商或者由用作其他成员的托管代理的成员的多租户托管解决方案的基础可以是有用的。在一个示例中,所有成员依赖于由单个集中方托管的单个VN(或用于高可用性的VN的集合)。在集中模型的该示例中,所有成员可能需要依赖集中方来处理事务和处理成员资格更新,并且除非区块链状态被串流或导出,否则集中式基础结构可能成为区块链状态的单点故障。

在一些示例中,为了适应多租户VN,认可处理器如上所述接受成员输入,在TEE内存储每个成员的单独认可状态。在一些示例中,认可处理器仅在参与共享VN的成员之间达到仲裁集时才提交更改。

与传统的区块链实现不同,COCO VN的一些示例信任它们的对等体,从而能够实现跨VN的高效、可缩放和高性能的事务处理。

若干措施可以大体上减轻与TEE妥协相关联的风险。可以通过若干方式降低TEE妥协的可能性。降低TEE妥协的可能性的一种方式可以如下完成。每个VN分为两部分。管理者TEE可以负责私钥管理、加密处理和成员资格更新逻辑,以便实现管理者TEE所需的代码量是有界的,并且该代码不需要随每个区块链集成而变化。然后可以对该代码进行正式验证并进行大量审核,以进一步降低妥协风险。

在这种示例中,管理者TEE大体上是基于TEE的硬件安全模块(HSM),其负责VN的最可信操作,并且工作者TEE是托管区块链协议代码的单独的飞地。(在一些示例中,工作者TEE可以包括比管理者TEE大得多的代码库,并且工作者TEE的代码库随着与COCO集成的每个分类帐而变化。)在这种示例中,工作者TEE向管理者TEE发出请求,用于使用VN的私钥加密、解密和签名数据,使得如果工作者TEE妥协,攻击者就可以访问工作者TEE加载到内存中的任何纯文本数据-但它无法直接访问密钥,独立解密磁盘上的块或建议或批准成员资格更改。这个双TEE因子的示例降低了管理者TEE妥协的可能性,并降低了工作者TEE妥协的影响。

在一些示例中,网络还可以实施VN授权以参与网络是必须定期更新的租约的规则。更新过程可以要求将TEE重置为原始状态,并且可以消除攻击者可能能够获得的任何立足点。不更新租约的VN可能会从网络中隔离,因此可能会在隔离生效后阻止新区域链中添加新数据。

KBK的加密和认证功能可以分成两个单独的密钥。这种拆分可以消除VN复制身份验证私钥的需要。在一些示例中,仅需要跨VN复制加密密钥-这可以在管理者TEE妥协时消除成员认证私钥的全局暴露。

VN可以对从其他VN发送的事务进行采样,并在提交之前同步地完全验证样本。这可以确保可以快速检测到产生虚假结果的VN,从而在不显著降低性能的情况下驱动警报。类似地,单独的节点可以异步验证所有事务,如果检测到任何问题也会驱动警报。

区块链系统的各种示例利用TEE的属性,并且可以用作支持数据库级事务吞吐量和延迟的区块链实现以及灵活的机密性模型的基础。在一些示例中,许多不同的区块链协议可以有利地利用COCO框架的示例来提供具有区块链和事务机密性的高效事务处理。

通过本说明书,给出了其中成员具有其自己的VN的示例。然而,在一些示例中,如上面更详细地讨论的,多个成员可以共享相同的VN,或者甚至所有成员可以共享由所有成员认可的单个节点。

并非所有示例都包括本文所讨论的所有特征。例如某些示例不使用加密。

图11是图示用于区块链系统的过程(1190)的示例数据流的示图。在一些示例中,图11的过程由验证节点执行。在所示的示例中,首先发生步骤1191。在步骤1191处,在一些示例中,预定类型的区块链协议代码和预定类型的共识代码被存储在处理器的可信执行环境(TEE)中。

如所示,在一些示例中,接下来发生步骤1192。在步骤1192处,在一些示例中,TEE证明被用于验证在TEE中存储的区块链协议代码是预定类型的区块链协议代码,并且验证在TEE中存储的共识代码是预定类型的共识代码。如所示,在一些示例中,接下来发生步骤1193。在步骤1193处,可以接收更改预定类型的区块链协议代码的请求。如所示,在一些示例中,接下来发生步骤1194。在步骤1194处,在一些示例中,基于预定的共识代码来确定是否改变预定类型的区块链协议代码。然后过程进入返回框,其中其他过程被恢复。

结论

虽然以上具体实施方式描述了本技术的某些示例,并且描述了设想的最佳模式,但是无论上文在文本中如何详细描述,该技术都可以以多种方式实践。细节可以在实现上变化,同时仍然被涵盖在本文描述的技术中。如上所述,在描述本技术的某些特征或方面时使用的特定术语不应被视为暗示术语在本文中被重新定义为限于与该术语相关联的任何特定特征、特性或方面。一般而言,以下权利要求中使用的术语不应被解释为将技术限制于本文公开的具体示例,除非具体实施方式明确地定义了这种术语。因此,技术的实际范围不仅涵盖所公开的示例,还涵盖实践或实现技术的所有等效方式。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1