掌桥专利:专业的专利平台
掌桥专利
首页

具有数据流控制的多域区块链网络

文献发布时间:2023-06-19 09:36:59


具有数据流控制的多域区块链网络

技术领域

本申请一般地涉及一种用于经由区块链来存储数据的系统,并且更具体地,涉及一种可以经由单个逻辑区块链网络来控制在物理上隔离的安全域之间的双向数据流的区块链网络。

背景技术

安全域(在本文中也被称为域)可以是在其内发生行为、交互和结果的域,并且该域由管理安全策略来定义。例如,安全域可以由用于用户、过程、系统和服务的规则来定义,这些规则应用于域内的活动和域中具有类似实体的活动。具有不同安全域的网络可以与其他网络保持分离。这些网络可能包含仅用于授权用户的保密信息,或者以其他方式存储不希望与其他网络的用户共享的信息。

计算机系统可能必须与来自不同安全分类级别的信息进行交互或以其他方式访问该信息,这些信息例如经由公共网络的非保密数据和来自专用网络的保密数据等。具有高安全分类的网络被称为高端,而具有低安全分类的网络被称为低端。跨越两个域的计算机系统不能简单地直接连接到两个网络/分类,以免冒着在两个网络之间故意或有目的地溢出保密和恶意内容的风险。而是,在两个网络之间放置受控接口或“防护”系统。这些防护需要高度确保它们的安全控制不能被有意或无意破坏,并且通常需要具有专业技能的程序员来开发数据过滤器。传统的防护通常是较大整体任务系统内的单点解决方案,并且不能提供数据到达其预期的最终远端目的地的端到端起源、控制和保证。

因此,需要一种克服这些缺点和限制的跨域解决方案。

发明内容

一个示例实施例提供一种系统,所述系统包括以下一项或多项:网络接口,被配置为接收来自第一安全域的存储事件,所述第一安全域符合第一安全策略并且与符合不同于所述第一安全策略的第二安全策略的第二安全域相隔离;以及处理器,被配置为基于所述第一安全策略和所述第二安全策略来确定所述存储事件满足跨域安全策略,创建跨域数据区块,所述跨域数据区块存储满足跨域安全策略的所述存储事件作为区块链交易,以及控制所述网络接口以将所述跨域数据区块发送到在所述第一安全域中包括的第一区块链节点和在所述第二安全域中包括的第二区块链节点。

另一个示例实施例提供一种方法,所述方法包括以下一项或多项:接收来自第一安全域的存储事件,所述第一安全域符合第一安全策略并且与符合不同于所述第一安全策略的第二安全策略的第二安全域相隔离;基于所述第一安全策略和所述第二安全策略来确定所述存储事件满足跨域安全策略;创建跨域数据区块,所述跨域数据区块存储满足跨域安全策略的所述存储事件作为区块链交易;以及将所述跨域数据区块发送到在所述第一安全域中包括的第一区块链节点和在所述第二安全域中包括的第二区块链节点。

另一个示例实施例提供一种包括指令的非瞬时性计算机可读介质,所述指令在由处理器执行时使得所述处理器执行以下一项或多项:接收来自第一安全域的存储事件,所述第一安全域符合第一安全策略并且与符合不同于所述第一安全策略的第二安全策略的第二安全域相隔离;基于所述第一安全策略和所述第二安全策略来确定所述存储事件满足跨域安全策略;创建跨域数据区块,所述跨域数据区块存储满足跨域安全策略的所述存储事件作为区块链交易;以及将所述跨域数据区块发送到在所述第一安全域中包括的第一区块链节点和在所述第二安全域中包括的第二区块链节点。

附图说明

图1是示出根据示例实施例的用于跨域控制的多域区块链网络的图;

图2A是示出根据示例实施例的示例区块链架构配置的图;

图2B是示出根据示例实施例的在节点之间的区块链交易流的图;

图3A是示出根据示例实施例的许可网络的图;

图3B是示出根据示例实施例的另一个许可网络的图;

图3C是示出根据示例实施例的无许可网络的图;

图4A是示出根据示例实施例的在第一安全域内创建交易并将其提供给区块创建者的过程的图;

图4B是示出根据示例实施例的创建跨域数据区块并将其提供给多个安全域的过程的图;

图5是示出根据示例实施例的生成用于区块链的跨域数据区块的方法的图;

图6A是示出根据示例实施例的被配置为执行本文描述的一个或多个操作的示例系统的图;

图6B是示出根据示例实施例的被配置为执行本文描述的一个或多个操作的另一个示例系统的图;

图6C是示出根据示例实施例的被配置为利用智能合约的另一个示例系统的图;

图6D是示出根据示例实施例的被配置为利用区块链的又一个示例系统的图;

图7A是示出根据示例实施例的将新区块添加到分布式账本的过程的图;

图7B是示出根据示例实施例的新数据区块的数据内容的图;

图7C是示出根据示例实施例的用于数字内容的区块链的图;

图7D是示出根据示例实施例的可以表示区块链中的区块结构的区块的图;

图8A是示出根据示例实施例的存储机器学习(人工智能)数据的示例区块链的图;

图8B是示出根据示例实施例的示例量子安全区块链的图;

图9是示出支持一个或多个示例实施例的示例系统的图。

具体实施方式

将很容易理解,如通常在本文附图中描述和示出的,可以以各种不同的配置来布置和设计即时组件(instant component)。因此,以下对如附图中表示的方法、装置、非瞬时性计算机可读介质和系统中的至少一者的实施例的详细描述并非旨在限制如要求保护的本申请的范围,而只是选定实施例的表示。

如在本说明书中描述的即时特性、结构或特征可以以任何合适的方式在一个或多个实施例中被组合或删除。例如,本说明书中对短语“示例实施例”、“一些实施例”或其他类似语言的使用指以下事实:结合该实施例描述的特定特性、结构或特征可以被包括在至少一个实施例中。因此,本说明书中出现的短语“示例实施例”、“在一些实施例中”、“在其他实施例中”或其他类似语言不一定都指同一组实施例,并且所描述的特性、结构或特征可以以任何合适的方式在一个或多个实施例中被组合或删除。此外,在附图中,元件之间的任何连接都可以允许单向和/或双向通信,即使所示的连接是单向或双向箭头。此外,附图中示出的任何设备可以是不同的设备。例如,如果示出移动设备正在发送信息,则也可以使用有线设备来发送信息。

此外,尽管可以在实施例的描述中使用术语“消息”,但是本申请可以应用于许多类型的网络和数据。此外,尽管可以在示例性实施例中示出特定类型的连接、消息和信令,但是本申请并不限于特定类型的连接、消息和信令。

示例实施例提供了方法、系统、组件、非瞬时性计算机可读介质、设备和/或网络,它们提供了用于多个安全域之间的双向跨域数据流的区块链控制器。

该系统在一个实施例中,使用去中心化数据库(如区块链),其是一个包括多个相互通信的节点的分布式存储系统。去中心化数据库包括一个只可附加但不可改变的数据结构,类似于能够在不受信任的各方之间维护记录的分布式账本(ledger)。不受信任的各方在本文中称为对等体(peers)或对等节点。每个对等体维护数据库记录的副本,在分布式对等体之间没有达成共识(consensus)的情况下,单一对等体不能修改数据库记录。例如,对等体可以执行共识协议来验证区块链存储交易,将存储交易分组成区块,并在区块上构建散列链。该过程根据需要通过对存储事务进行排序来形成账本以便保持一致性。在各种实施例中,可以使用许可的和/或无许可的区块链。在公共或无许可的区块链中,任何人都可以在没有特定身份的情况下参与。公共区块链通常涉及本地加密货币,使用基于各种协议(诸如工作证明(PoW))的共识。另一方面,许可的区块链数据库提供了在一组有共同目标但彼此不完全信任的实体—例如交换资金、商品、信息等的企业—之间的安全交互。

该系统可以利用一种操作为去中心化存储方案定制的、称为“智能合约”或“链码”(chaincode)的任意可编程逻辑的区块链。在某些情况下,可能存在用于管理功能和参数的专用链码,称为系统链码。本申请可以进一步利用这种智能合约:其是受信任的分布式应用程序,利用了区块链数据库的防篡改属性和节点之间称为背书(endorsement)或背书策略的基础协议。与本申请关联的区块链交易可先被“背书”(endorsed)再被提交(committed)到区块链,而未被背书的交易则不被考虑。背书策略允许链码针对交易指定为背书所需的一组对等节点的形式的背书者。当客户端将交易发送到在背书策略中指定的对等体时,该交易被执行,以验证该交易。在验证之后,交易进入排序阶段,在排序阶段,用共识协议来生成按顺序排列的一系列背书的交易,这些背书的交易被分组到区块中。

该系统可以利用作为区块链系统通信实体的节点。“节点”可以执行逻辑功能,即不同类型的多个节点可以在同一物理服务器上运行。节点在信任域中被分组,并与以各种方式控制它们的逻辑实体相关联。节点可以包括不同的类型,例如客户端或提交客户端(submitting-client)节点,其将交易调用(transaction-invocation)提交给背书者(例如对等体),并将交易建议广播给排序服务(例如排序节点)。另一种节点类型是可以接收客户端提交的交易、提交交易并维护区块链交易账本的状态和副本的对等节点。对等体也可以扮演背书者(endorser)的角色,尽管这不是必需的。排序服务节点或排序者(orderer)是为所有节点运行通信服务的节点,它实现交付保证,例如在提交交易和修改区块链的世界状态(world state)时向系统中的每个对等节点的广播,这是通常包括控制和设置信息的初始区块链交易的另一个名称。

该系统可以利用是区块链的所有状态转变的有序、防篡改的记录的账本。状态转变可能由参与方(例如,客户端节点、排序节点、背书者节点、对等节点等)提交的链码调用(即,交易等)产生。每个参与方(例如对等节点)都可以维护账本的副本。交易可以导致一组资产键-值对作为一个或多个操作数(例如创建、更新、删除等)被提交给账本。账本包括用于以块存储不可改变的有序记录的区块链(也称为链)。账本还包括维护区块链的当前状态的状态数据库。

该系统可以使用一种是交易日志的链,其结构为散列链接的区块(hash-linkedblock),每个区块包含一系列的N个交易,其中N等于或大于1。区块头(block header)包括该区块的交易的散列(hash),以及前一区块的头的散列。通过这种方式,账本上的所有交易都可以按顺序排列并以加密方式链接在一起。因此,在不破坏散列链(hash links)的情况下,不可能篡改账本数据。最近添加的区块链块的散列代表在它之前已经到达的链上的每一个交易,这使得有可能确保所有对等节点处于一致和可信状态。可以将该链存储在对等节点文件系统(即本地、附加存储、云等)上,从而高效地支持区块链工作负载的只可附加的性质。

不可改变的账本的当前状态代表了链交易日志中包含的所有的键的最新值。当前状态表示一个通道已知的最新键值,因此有时称之为世界状态。链码调用针对账本的当前状态数据执行交易。为了使这些链码交互有效,可以将键的最新值存储在状态数据库中。状态数据库可以只是链交易日志的索引视图,因此可以随时根据链来重新生成。状态数据库可以在对等节点启动时和接受交易之前自动恢复(或根据需要生成)。

当系统需要从不同的安全域/区域(enclave)访问数据时,如何以安全方式提供这种访问存在问题。例如,访问必须遵守两个网络的安全策略,并且不允许未授权数据从一个网络溢出到另一个网络。一个示例是在将诸如网络事件(安全事件、违反等)或网络事故(中断、更改等)之类的数据从低级域传递到高保密域以与其他网络一起聚合在共同操作图中时。此外,这仅是几个示例,并且应该理解,示例实施例可以构想和使用能够从一个网络传递到另一个网络的任何区块链交易。

示例实施例通过使用跨越不同安全域的单个许可区块链网络,提供了对该问题的解决方案。在这些示例中,每个域网络在公共区块链网络上具有它自己的一组区块链对等节点,并且这些组通过在单独的安全域上操作而在逻辑上彼此隔离。换句话说,在与第一安全域相关联的第一组中的节点和在与第二安全域相关联的第二组中的节点是隔离的,并且在与第一安全域相关联的第一组中的节点不知道在与第二安全域相关联的第二组中的节点。但是,在这些示例中,来自所有域的所有节点共享同一分布式账本。

在不同的安全域之间存在中间接口。该接口可以包括区块创建者和多个控制器(对应于多个域),这使得能够在两个或更多安全域之间以安全方式共享数据。在该架构中,每个域可以具有它自己的控制器,该控制器检测何时要共享数据,例如何时已对数据进行背书以及何时相应域中的对等节点已达成共识。作为响应,控制器将对背书执行提交对等体验证,并且可以将验证后的背书数据传输到区块创建者。区块创建者可以接收存储事件并聚合/累积来自不同域的存储事件,直到区块已满、已经过预定时间或某些其他条件为止,并且创建新的数据区块,其中事件被存储为区块链交易。当就绪时,数据区块然后被从区块创建者发送到每个相应域中的控制器以用于存储在区块链账本上。以这种方式,尽管对等节点不知道其他节点(和域)的存在,但是它们共享相同的数据,因为所创建的区块被存储在每个域的对等节点之间。

本文描述和示出的即时解决方案的一些益处包括具有跨越不同的网络安全域来连接和分发账本信息所需的高度保证控制的区块链网络。该系统确保只有符合每个安全域的安全和业务策略的数据才跨越域边界传递并且提交到分布式账本。一般而言,跨域策略旨在防止不适当地保密的信息从高安全性网络域传递到低安全性网络域(被称为溢出),以及防止恶意数据从低到高流动(例如计算机病毒)。例如,被认为是保密的信息包括高端主机名称、IP地址以及正在被传递的信息本身中的保密内容。不同安全分类的网络之间跨越边界的信息交换需要高度稳健的安全控制以防止溢出。示例实施例能够在不同的安全域之间安全地仅传播可共享数据,同时防止未授权数据离开域。

在本文的示例中,计算机网络可以包括具有严格的安全控制的高端计算机网络和具有不太严格的安全控制的低端计算机网络。但是,应该理解,可以通过示例实施例来实现具有不同策略的任何两个不同的计算机网络。换句话说,它不需要是高端和低端网络,而是任何类型的作为专用网络并设法在有限的基础上彼此共享数据的区块链网络。

图1示出了根据示例实施例的用于跨域控制的多域区块链网络100。参考图1,网络100包括两个安全域,包括高端域110和低端域130。域110和130中的每一个可以包括计算系统(例如服务器、用户设备、数据库、云平台等)网络,例如广域网(WAN)等,为了简洁起见,未在图1的示例中示出它们。在该示例中,高端域110指具有比在低端域130中包括的网络更高的安全分类的网络。换句话说,高端域110具有比低端域130更严格的安全协议。因此,数据不能从高端域110自由地传递到低端域,并且可能反之亦然。

根据各种实施例,网络100还包括控制系统,该控制系统包括区块创建者120系统以及多个域控制器121和122。在该示例中,域控制器121对应于高端域110并且可以在高端域110内实现,而域控制器122对应于低端域130并且可以在低端域130内实现。此外,高端域110包括区块链对等节点112的子集,而低端域130包括它自己的区块链对等节点132的子集,区块链对等节点132在逻辑上和物理上与来自高端域110的区块链对等节点112隔离。但是,通过控制系统的用户,高端对等节点112和低端对等节点132可以共享区块链账本140(即分布式账本),区块链账本140可以存储区块的散列链接链(区块链),包括诸如网络事件、网络信息、安全问题之类的数据,它们可以被在两个域110与130之间共享。

根据各种实施例,区块创建者120以及域控制器121和122也可以被称为多域区块创建者(MDBC)。MDBC提供了受控接口以用于不同安全域之间的交易区块到共享区块链账本140的安全传播。MDBC可以托管和封装多域区块创建机构(例如,Hyperledger Fabric中的排序者等)。此外,MDBC可以应用和实施操作系统(OS)级别安全控制以保护托管的组件过程,并且例如使用强制访问控制将互连的域彼此隔离。

在图1的示例中,高端域110和低端域130可以具有相应域必须遵守的不同安全策略。作为一个示例,高端域110可能在共享方面比低端域130更严格。由相应域110和130中的每一个内的对等节点执行的智能合约可以执行策略验证,以确保交易满足包括高端域110和低端域130两者的安全策略的并集。在此,交易必须满足两个安全策略的并集(即,是两者公共的)。换句话说,智能合约将不会泄露机密,因为即使第一安全策略允许机密在高端处,但是因为第二安全策略也不允许机密在低端处。然后,基于交易出现在哪个域,满足跨域安全策略的背书后的交易被转发到相应的域控制器121或122。

当域控制器121或122之一接收到存储事件(例如区块链交易)时,相应的域控制器121或122可以执行提交对等体验证以防止将未背书的交易发布到区块创建者120。但是,域控制器121和122不能重新执行智能合约。而是,它们可以防止未背书的交易溢出到跨域区块中。响应于两个域的安全策略都被满足,相应的域控制器121或122可以将交易传输到区块创建者120,在区块创建者120中可以将该交易添加到新的数据区块并且在两个域之间传播。因此,示例实施例能够针对近端域和远端域两者实施安全策略。例如,尽管通常在机密网络上允许机密信息,但是仅未保密的信息可以被写入跨越机密网络和未保密的网络两者的区块链。本文描述的智能合约和域控制器验证能够确保仅未保密的信息被传递到用于高端发起的交易建议的排序者。

区块创建者120以及域控制器121和122一起(MDBC)防止任何直接的域到域通信,并且实施跨域背书和内容策略(即,确保存储事件已被正确背书并且不包含未授权信息,例如原始建议的交易)。区块创建者120可以确保在包含在区块中之前,每个交易都被检查和验证。MDBC可以包括由防护的操作者定义和批准的域安全策略。区块创建者120可以仅连接到域控制器121和122,从而防止与相应域110和130中的对等节点和其他计算系统的连接。区块创建者120可能不接受来自域控制器121和122之外的任何其他过程的任何形式的通信。

域控制器过程121和122中的每一个都以与它们的相应域相同的安全分类级别进行操作,并且防止未背书、不正确地背书或其他类型的无效的客户机提交的交易到达区块创建机构120,因为域控制器121和122是客户机从每个域向账本提交交易的唯一外部连接点。从安全性角度来看,每个域控制器121和122可以被认为是可信的,因为它们使用诸如区块创建者之类的高度保证安全控制进行隔离和保护。例如,可以通过网络、存储、具有安全标签的操作系统、虚拟机、容器、安全服务容器(SSC)、逻辑分区(LPAR)等来隔离区块创建者120以及域控制器121和122。域控制器121和122可以各自是高可用性组件。域控制器121和122从(不可信)客户机接收交易,验证交易并且将交易转发到可信区块创建者120,从而执行与提交对等体相同的验证并且应用任何域特定的过滤策略。在一些实施例中,策略可以由防护的提供者/操作者定义和批准。对等节点在背书阶段执行的跨域兼容智能合约将生成跨域兼容的读取/写入集。域控制器的功能不是通过重新运行这些智能合约来复制背书过程。而是,它们的目的是防止未背书、不正确地背书或其他类型的无效的客户机提交的交易到达区块创建机构120。

当创建新区块时,区块创建者120可以合并在单独域(例如高端域110和低端域130等)中发生的交易(网络事件等),并且创建具有合并后的交易的区块。新创建的区块分别被独立地发送到高端域110和低端域130的域控制器121和122。每个域控制器121和122根据域分发模型/方法在其域内分发区块。例如,可以在分布在对等节点112和132之间的账本中复制区块。

一般而言,高端域和低端域可以借助于受控接口组(即区块创建者和相应的域控制器,也称为MDBC)而在逻辑上和物理上分离。受控接口应用实施两个网络的共享策略的安全控制,而不考虑不同的安全策略。可以构造并且独立地认证受控接口组,以使得受控接口组高度确保安全控制不能被有意或无意地绕过。在该示例中,单个逻辑区块链业务网络可以跨越两个在物理上分离的网络安全域,其中一些节点位于高端WAN上,而一些节点位于低端WAN上。但是,业务网络中的所有节点通过区块创建者和域控制器而具有相同的账本数据。

传统的区块链架构不能跨越两个不同的安全域被使用,因为它需要从提交对等体到区块创建机构(排序节点)的直接网络连接,并且区块创建机构不防止未授权数据经由未背书或不正确背书的交易从一个域溢出到另一个域。在本文描述的跨域解决方案中,永远不存在跨越两个分离的网络域的直接网络连接。在没有本文中的中间区块创建机构的情况下,创建机构将必须位于高域或低域中。然后,任何远端提交对等体将需要跨越域边界而直接连接到区块创建机构,这以两种方式违反了防护的安全策略。第一,它需要近端提交对等体知道远端网络地址,这本身就是一种安全违反(对高端网络节点地址进行了分类)。第二,安全策略禁止跨越安全域的不间断的直接网络连接。

本文描述的区块创建者通过以下方式来解决该问题:插入第三域并使用基础设施(即OS,VM等)实施的安全策略(例如强制访问控制)来隔离/保护所有托管过程(120,121,122),并且仅经由在每个域中作为可信过程运行的域控制器在外部连接。每个域控制器过程本身在高度保证安全的可信环境中运行。以这种方式,提交对等体/客户机永远不知道远端地址或永远不直接连接到远端节点,而是它们仅连接到它们的同端域控制器。仅域控制器(121,122)可以连接到区块创建者(120)。

域控制器还通过在将交易发送到区块创建机构之前执行提交对等体验证来防止溢出。例如,在Hyperledger Fabric(HLF)业务网络中,如果提交节点被破坏(提交背书后的交易建议的节点),则被破坏的节点可能将包含保密信息的交易提交到排序者以用于分发。在这种情况下,排序者将只是进行排序,阻止被破坏的交易以及将其分发到未保密域。到达低端WAN的任何保密数据都立即被视为溢出,而不管低端对等体是否将该保密数据提交到账本。发生溢出是因为排序者在排序和作为区块进行分发之前没有执行背书策略验证。相比之下,在本文描述的区块创建者机构中,域控制器可以在区块创建机构获得它之前执行提交对等体验证(包括背书策略验证),以确保不会发生溢出。

图2A例示了根据示例实施例的区块链架构配置200。参照图2A,区块链架构200可以包括某些区块链元素,例如,一组区块链节点202。区块链节点202可以包括一个或多个节点204-210(这四个节点仅仅是举例说明)。这些节点参与许多活动,例如区块链交易添加和验证过程(共识)。一个或多个区块链节点204-210可以根据背书策略来背书交易,并可以为架构200中的所有区块链节点提供排序服务。区块链节点可以发起区块链验证,并寻求写入存储在区块链层216中的区块链不可变账本,其副本也可以存储在基础物理设施214上。区块链配置可以包括一个或多个应用程序224,这些应用程序224链接到应用程序编程接口(API)222以访问和执行所存储的程序/应用程序代码220(例如,链码、智能合约等),这些程序/应用程序代码可以根据参与者寻求的自定义配置来创建,并可以维护它们自己的状态,控制它们自己的资产,以及接收外部信息。这可以作为交易进行部署,并通过附加到分布式账本而安装在所有区块链节点204-210上。

区块链基础或平台212可包括区块链数据、服务(例如,加密信任服务、虚拟执行环境等)以及基础物理计算机设施的各个层,该基础设施可用于接收和存储新的交易,并为寻求访问数据条目的审核者(auditors)提供访问。区块链层216可以开放接口,以为处理程序代码和参与基础物理设施214提供所需的对虚拟执行环境的访问。加密信任服务218可用于验证诸如资产交换交易的交易,并将信息保密。

图2A的区块链架构配置可以通过由区块链平台212开放的一个或多个接口处理和执行程序/应用程序代码220以及所提供的服务。代码220可以控制区块链资产。例如,代码220可以存储和传输数据,并且可以由节点204-210以智能合约的形式执行,并将链码与条件或其它受其执行约束的代码元素相关联。作为非限制性的示例,可以创建智能合约来执行提醒、更新和/或其它通知(取决于更改、更新等)。智能合约本身可用于识别与授权、访问要求和账本使用相关的规则。例如,信息226可以包括读取集,该读取集可以由包括在区块链层216中的一个或多个处理实体(例如虚拟机)来处理。结果228可以包括具有要被写入和存储到数据区块的处理结果的写入集。物理基础设施214可以用于取得本文描述的任何数据或信息。

智能合约可以通过高级应用程序和编程语言创建,然后被写入区块链中的区块。智能合约可以包括被注册、存储和/或复制到区块链(例如,区块链对等体的分布式网络)的可执行代码。交易是智能合约代码的执行,智能合约代码的执行可以响应于与智能合约相关的条件的满足而进行。智能合约的执行可以触发对数字区块链账本的状态的可信修改。智能合约的执行导致的对区块链账本的修改可以通过一个或多个共识协议在区块链对等体的分布式网络中被自动复制。

智能合约可以以键-值对的形式向区块链写入数据。此外,智能合约代码可以读取存储在区块链中的值,并在应用程序操作中使用这些值。智能合约代码可以将各种逻辑运算的输出写入区块链。代码可用于在虚拟机或其它计算平台中创建临时数据结构。写入区块链的数据可以是公共的和/或可以被加密并保持为私有,但是必须符合所连接的域的安全策略。智能合约使用/生成的临时数据由所提供的执行环境保存在存储器中,然后一旦识别了区块链所需的数据,便删除临时数据。

链码可以包括智能合约的代码解释,并且具有附加功能。如本文所述,链码可以是部署在计算网络上的程序代码,在共识过程期间由链验证器一起执行和验证。链码接收散列,并从区块链中取得与使用先前存储的特征提取器创建的数据模板相关联的散列。如果散列标识符的散列与从存储的标识符模板数据创建的散列相匹配,则链码将向被请求的服务发送授权钥。链码可以将与加密细节相关的数据写入区块链。

图2B例示根据示例实施例的区块链节点之间的区块链交易流250的示例。参考图2B,该交易流可以包括由应用客户端节点260发送给背书对等节点281的交易建议291。背书对等节点281可以验证客户端签名并执行链码函数来发起交易。输出可包括链码结果、在链码中读取的一组键/值版本(读取集)、以及在链码中写入的一组键/值(写入集)。如果得到批准,则将建议响应292连同背书签名一起发送回客户端260。客户机260将背书组装成交易有效负载293,并且经由域控制器将其广播到排序服务节点284。域控制器在发送到排序服务节点之前执行提交对等体验证和任何其他验证。以这种方式,无效背书永远不会离开其始发域。然后,排序服务节点284将有序交易作为区块传送到通道上的所有对等体281-283。在提交到区块链之前,每个对等体281-283可以验证交易。例如,对等体可以检查背书策略以确保指定对等体的正确分配已对结果进行签名,并且针对交易有效负载293已验证该签名。

再次参考图2B,客户端节点260通过构造请求并向对等节点281(背书者)发送请求来发起交易291。客户端260可以包括利用受支持的软件开发工具包(SDK)的应用程序,该工具包利用可用的API来生成交易建议。交易建议是一个调用链码函数以便可以读取数据和/或将数据写入账本(即,写入资产的新键值对)的请求。该SDK可以充当一个填充程序(shim),用于将交易建议封装成适当架构的格式(例如,远程过程调用(RPC)上的协议缓冲区),并获取客户端的加密凭据来生成用于交易建议的唯一性签名。

作为响应,背书对等节点281可以验证:(a)交易建议形成得很好,(b)该交易过去未曾提交(重放攻击保护),(c)签名有效,以及(d)提交方(在该示例中为客户端260)被适当授权在该通道上执行所建议的操作。背书对等节点281可以将交易建议输入作为被调用的链码功能的参量。然后针对当前状态数据库执行链码以产生包括响应值、读取集和写入集的交易结果。但是,此时没有对账本进行更新。在292中,将该组值与背书对等节点281的签名一起作为建议响应292传递回客户端260的SDK,该SDK解析负载以供应用程序使用。

作为响应,客户端260的应用程序检查/验证背书对等体签名并比较建议响应以确定建议响应是否相同。如果链码仅查询了账本,则应用程序将检查查询响应并且通常不将该交易提交给排序服务节点284。如果客户端应用程序打算将该交易提交给排序服务节点284以更新账本,则应用程序在提交之前确定指定的背书策略是否已得到满足(即,交易所需的所有对等节点都支持该交易)。在此,客户端可以仅包括交易的多方中的一方。在这种情况下,每个客户机可以具有它们自己的背书节点,并且每个背书节点将需要对交易进行背书。该架构使得即使应用选择不检查响应或者以其他方式转发未背书交易,背书策略仍将由域控制器在排序和阻止(以防止溢出)之前以及由对等体实施,并且在提交验证阶段得到支持。

在成功检查之后,在步骤293中,客户机260将背书组装成交易,并且经由近端域控制器在交易消息内将交易建议和响应广播到排序节点284。只有经过近端域控制器验证的交易才被传送到排序者。交易可以包含读取/写入集、背书对等体签名和通道ID。排序节点284不需要检查交易的全部内容以便执行其操作,而是,排序节点284可以只是从网络中的所有通道接收交易,按通道以时间顺序对它们进行排序,并且创建每个通道的交易区块。域控制器已经执行所需的验证以防止经由排序者溢出。

将交易的区块从排序服务节点284交付到通道上的所有对等节点281-283。验证区块内的交易294以确保任何背书策略都得到满足,以及确保自读取集被交易执行生成以来,读取集变量的账本状态没有变化。将区块中的交易标记为有效或无效。此外,在步骤295中,每个对等节点281-283将区块附加到通道的链上,并且针对每个有效交易,将写入集提交给当前状态数据库。发出一个事件,以通知客户端应用程序已经将交易(调用)已不可变地附加到链上,以及通知该交易验证是有效的还是无效的。

图3A例示了许可的区块链网络300的示例,该网络具有分布式、去中心化的点对点架构。在这个例子中,区块链用户302可以向许可的区块链304发起交易。在本例中,交易可以是部署、调用或查询,并可以利用SDK通过客户端侧的应用程序、直接通过API等方式来发布。网络可以提供对诸如审核员的监管者306的访问。区块链网络操作者308管理成员权限,例如将监管者306注册为“审核员”,将区块链用户302注册为“客户”。可以限制审核员只能查询账本,而客户则可以被授权部署、调用和查询某些类型的链码。

区块链开发者310可以编写链码和客户端应用程序。区块链开发者310可以通过接口将链码直接部署到网络。为了在链码中包括来自传统数据源312的凭证,开发者310可以使用带外连接来访问数据。在该示例中,区块链用户302通过对等节点314连接到许可的区块链304。在进行任何交易之前,对等节点314从管理用户角色和许可的认证机构316取得用户的注册和交易证书。在某些情况下,区块链用户必须拥有这些数字证书才能在许可的区块链304上进行交易。同时,试图使用链码的用户可能需要验证他们在传统数据源312上的凭证。为了确认用户的授权,链码可以通过传统处理平台318使用与该数据的带外连接。

图3B示出了许可的区块链网络320的另一示例,其具有分布式、去中心化的对等架构。在该示例中,区块链用户322可以向许可的区块链324提交交易。在该示例中,交易可以是部署、调用或查询,并且可以利用SDK通过客户端侧的应用程序、直接通过API等方式来发布。区块链网络操作者328管理成员权限,例如将监管者326注册为“审核员”,将区块链用户322注册为“客户”。可以限制审核员只能查询账本,而客户则可以被授权部署、调用和查询某些类型的链码。

区块链开发者330编写链码和客户端应用程序。区块链开发者330可以通过接口直接将链码部署到网络上。为了在链码中包含来自传统数据源332的凭证,开发者330可以使用带外连接来访问数据。在本例中,区块链用户322通过对等节点334连接到网络。在继续进行任何交易之前,对等节点334从认证机构336取得用户的注册和交易证书。在某些情况下,区块链用户必须拥有这些数字证书才能在许可的区块链324上进行交易。同时,试图使用链码的用户可能需要验证他们在传统数据源332上的凭证。为了确认用户的授权,链码可以通过传统的处理平台338使用与该数据的带外连接。

图3C示出了由包括多个节点354的无许可区块链352处理的交易的过程350。发送者356期望经由无许可区块链352将付款或某种其他形式的价值(例如契据、病历、合同、商品、服务或可以封装在数字记录中的任何其他资产)发送到接收者358。在一个实施例中,发送者设备356和接收者设备358中的每一个都可以具有数字钱包(与区块链352相关联),其提供用户界面控件和交易参数的显示。作为响应,交易被广播通过区块链35以到达节点354。取决于区块链352的网络参数,节点基于由无许可区块链352创建者建立的规则(其可以是预定义的或动态分配的)来验证360交易。例如,这可以包括验证所涉及各方的身份等。交易可以被立即验证或者可以被与其他交易一起放置在队列中,并且节点354基于一组网络规则来确定交易是否有效。

在结构362中,有效交易形成区块并且用锁(散列值)来密封。该过程可以由节点354之间的挖掘节点来执行。挖掘节点可以利用专门用于针对无许可区块链352挖掘和创建区块的附加软件。可以通过使用网络同意的算法创建的散列值(例如256位数字等)来标识每个区块。每个区块可以包括标头、指向链中前一个区块的标头的散列值的指针或参考、以及一组有效交易。对前一个区块的散列值的参考与安全独立区块链的创建相关联。

在可以将区块添加到区块链之前,必须验证区块。用于无许可区块链352的验证可以包括工作证明(PoW),该工作证明是对从区块标头中得出的难题的解。尽管在图3C的示例中未示出,但是用于验证区块的另一个过程是权益证明。不同于工作证明(其中算法奖励解决数学问题的挖掘者),对于权益证明,新区块的创建者是根据其财富(也被定义为“权益”)以确定性的方式来选择的。然后,由选定/选择的节点执行类似的证明。

借助挖掘364,节点尝试通过对一个变量进行增量改变来求解区块,直到解满足网络范围的目标。这将创建PoW,从而确保正确答案。换句话说,潜在的解必须证明在求解问题时计算资源被耗尽。在一些类型的无许可区块链中,挖掘者可能因正确挖掘区块而获得价值奖励(例如钱币等)。

在此,PoW过程以及区块的成链使区块链的修改极为困难,因为攻击者必须修改所有后续区块才能使一个区块的修改被接受。此外,随着新区块被挖掘,修改区块的难度增加,并且后续区块的数量增加。借助分发366,成功验证的区块被分发通过无许可区块链352,并且所有节点354将该区块添加到作为无许可区块链352的可审核账本的多数链(majority chain)。此外,由发送者356提交的交易中的价值被存放或以其他方式转账到接收者设备358的数字钱包。

图4A示出了根据示例实施例的在第一安全域内创建交易并将其提供给区块创建者的过程400A,图4B示出了根据示例实施例的创建跨域数据区块并将其提供给多个安全域的过程400B。参考图4A,在第一域中包括多个网络设备411和412,在该示例中第一域被称为高端域。客户机应用等可以创建任何类型的交易,并且被发送到区块链对等体413。

作为响应,区块链对等体413可以提交事件以便在与高端域相关联的对等节点(未示出)之间背书和达成共识。在此,背书和共识可以验证网络事件满足与低端域等的共享协议。如果对事件进行背书,则背书事件作为交易被发送到域控制器414。域控制器414可以类似于传统区块链网络中的提交对等节点来验证交易,以确保事件满足用于从高端到低端的跨域数据流的共享策略。当交易被验证时,交易然后被发送到区块创建者420以包含在新的数据区块中。

参考图4B,区块创建者420可以从所有域(不仅仅是图4A中的高端域)上的域交易控制器接收验证后的交易。在此,域交易控制器是从相应的域到区块创建者的唯一桥梁。响应于诸如满足某一存储量、经过某一时段、接收某一数量的交易之类的触发机制,区块创建者420可以创建新的数据区块441,新的数据区块441包括所接收和所验证的交易作为存储在数据区块441中的区块链交易。然后,区块创建者420可以经由这些域的相应的域控制器将新的区块441发送到多域区块链网络的每个域。在图4B的示例中,存在两个域以及两个对应的域控制器414和434。响应于接收到新的区块441,新的区块可以被传输到域中的相应各组对等节点,并被存储在相应的账本413和433上。结果,账本413和433中的每一个可以包含相同的数据,但是可以由两组不同且隔离的对等节点(其不知道另一组节点)来管理。

图5示出了根据示例实施例的生成用于区块链的跨域数据区块的方法500。参考图5,在510中,该方法可以包括接收来自符合跨域安全策略的第一安全域的背书存储事件。在此,存储事件可以是在第一安全域中包括的计算网络内发生的交易。在该示例中,第一安全域可以与第二安全域隔离,该第二安全域包括符合不同于第一安全策略的第二安全策略的第二网络。不同安全策略的示例包括高端域(高分类)和低端域(低分类)。

在一些实施例中,接收还可以包括接收来自第二安全域的第二存储事件,并且创建还将第二存储事件存储在跨域数据区块中。例如,第二安全域可以包括低端域,而第一安全域包括具有比低端域更严格的安全策略的高端域。在一些实施例中,存储事件可以由在第一安全域中包括的在逻辑上与第二安全域相隔离的多个对等节点来背书。

在520中,该方法可以包括确定存储事件背书策略和其他跨域特定策略是否已被满足。例如,域控制器可以接收高端域或低端域内的存储事件,并且确定该事件是否满足高端域和低端域两者的背书安全策略。在该示例中,存储事件可以包括由在相应域中的对等节点上运行的智能合约来背书的区块链交易。对等节点的背书可以确保交易满足两个安全策略的并集(即,对两者是公共的,例如它不能泄露机密,因为即使第一安全策略允许机密在高端,但是因为第二安全策略也不允许机密在低端)。当存储事件满足两个策略时,则确定将存储事件将添加到数据区块。在这种情况下,区块链对等节点可以将存储事件转发到相应的域控制器。当域控制器接收到背书后的交易时,域控制器可以执行提交对等体验证以确保满足相应域的背书策略,从而防止未背书的交易溢出到不同的网络中。

在530中,该方法可以包括创建跨域数据区块,该跨域数据区块存储从第一安全域接收的验证后的存储事件作为区块链交易。例如,跨域数据区块可以由跨域区块创建者生成,该跨域区块创建者从不同域(区域)接收验证后的背书网络事件并且将它们一起存储在数据区块中。

在540中,该方法还可以包括将跨域数据区块发送到在第一安全域中包括的第一区块链节点和在第二安全域中包括的第二区块链节点。在此,可以将跨域数据区块分别存储在不同安全域中的多组不同对等体中。例如,第一区块链节点可以被包括在第一对等体子集中,第二区块链节点可以被包括在第二对等体子集中,并且第一对等体子集和第二对等体子集基于操作系统实施的强制访问控制而在逻辑上彼此隔离。在一些实施例中,第一对等体子集和第二对等体子集共同共享分布式账本。在一些实施例中,第一安全域可以包括与第二安全域的计算机网络隔离的广域网(WAN)。

图6A例示了一个示例系统600,其包括一个配置为根据示例性实施例执行各种操作的物理基础设施610。参考图6A,基础物理设施610包括模块612和模块614。模块614包括区块链620和智能合约630(可以位于区块链620上),该智能合约可以执行任何示例性实施例中包含的任何操作步骤608(模块612中)。步骤/操作608可以包括所说明或描述的一个或多个实施例,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。物理基础设施610、模块612和模块614可包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是同一模块。

图6B例示另一个示例系统640,其被配置得执行根据示例性实施例的各种操作。参照图6B,系统640包括模块612和模块614。模块614包括区块链620和智能合约630(可以位于区块链620上),该智能合约可以执行任何示例性实施例中包含的任何操作步骤608(模块612中)。步骤/操作608可以包括所说明或描述的一个或多个实施例,并且可以表示从一个或多个智能合约630和/或区块链620写入或读取的输出或写入信息。对于跨域实施例,智能合约630通过生成同时符合两个域的安全策略的读取/写入集,来针对内容实施跨域安全策略。物理基础设施610、模块612和模块614可以包括一个或多个计算机、服务器、处理器、存储器和/或无线通信设备。此外,模块612和模块614可以是同一模块。

图6C例示根据示例性实施例的被配置为利用合约方与中介服务器之间智能合约配置的示例系统,该中介服务器被配置为在区块链上实施智能合约条款。参考图6C,配置650可以代表由智能合约630驱动的通信会话、资产转移会话或过程,其明确地标识一个或多个用户设备652和/或656。智能合约执行的执行、操作和结果可以由服务器654管理。智能合约630的内容可以要求由智能合约交易的参与方中的一个或多个实体652和656进行数字签名。智能合约执行的结果可以作为区块链交易写入区块链620。智能合约630驻留在区块链620上,区块链620可以驻留在一个或多个计算机、服务器、处理器、存储器和/或无线通信设备上。

图6D例示根据示例性实施例的包括区块链的系统660。参考图6的示例,应用程序编程接口(API)网关662提供用于访问区块链逻辑(例如,智能合约630或其它链码)和数据(例如,分布式账本等)的公共接口。在该示例中,API网关662是用于通过将一个或多个实体652和656连接到区块链对等体(即,服务器654)来对区块链执行交易(调用、查询等)的公共接口。在此,服务器654是区块链网络对等组件,其保存世界状态的副本和分布式账本,从而允许客户端652和656查询关于世界状态的数据以及将交易提交到区块链网络中,其中,取决于智能合约630和背书策略,背书对等体将运行智能合约630。

以上实施例可以以硬件、处理器执行的计算机程序、固件或以上的组合的形式来实现。计算机程序可以体现在计算机可读介质—例如存储介质—上。例如,计算机程序可以驻留在随机存取存储器(“RAM”)、闪存、只读存储器(“ROM”)、可擦除可编程只读存储器(“EPROM”)、电可擦除可编程只读存储器(“EEPROM”)、寄存器、硬盘、可移动磁盘、光盘只读存储器(“CD-ROM”)或本领域已知的任何其它形式的存储介质。

示例性存储介质可以耦合到处理器,使得处理器可以从存储介质读取信息,将信息写入存储介质。在替代性方案中,存储介质可以是处理器的组成部分。处理器和存储介质可以驻留在专用集成电路(“ASIC”)中。在替代性方案中,处理器和存储介质可以作为分立组件驻留。

图7A例示根据示例性实施例的将新的区块添加到分布式账本720的过程700,图7B例示根据示例性实施例的用于区块链的新数据区块结构730的内容。参考图7A,客户端(未示出)可以向区块链节点711、712和/或713提交交易。客户端可以是从任何源接收的用以在区块链720上进行活动的指令。作为示例,客户端可以是代表请求者—如设备、人或实体—执行动作以针对区块链建议交易的应用程序。多个区块链对等体(例如,区块链节点711、12和713)可以维护区块链网络的状态和分布式账本720的副本。区块链网络中可以存在不同类型的区块链节点/对等体,包括模拟和背书由客户端提交的交易的背书对等体,验证背书、验证交易并向分布式账本720提交交易的提交对等体。在该示例中,区块链节点711、712和713可以执行背书者节点、提交方节点或二者的角色。

分布式账本720包括在区块中存储不可变的顺序记录的区块链,以及维护区块链722的当前状态的状态数据库724(当前世界状态)。每个通道可以对应有一个分布式账本720,并且每个对等体维护其所属的每个通道的分布式账本720的自己的副本。区块链722是以散列链接的区块构造的交易日志,其中每个区块包含一系列的N个交易。区块可以包括诸如图7B中所示的各种组件。可以通过在当前区块的块头中添加先前区块的块头的散列来生成区块的链接(由图7A中的箭头示出)。以这种方式,区块链722上的所有交易被排序并加密地链接在一起,从而防止不破坏散列链接而篡改区块链数据。此外,由于链接,区块链722中的最新区块表示在其之前的每个交易。区块链722可以存储在对等文件系统(本地或附接存储)上,其支持只可附加的区块链工作负载。

区块链722和分布式账本722的当前状态可以存储在状态数据库724中。在此,当前状态数据表示区块链722的链交易日志中包含的所有键的最新值。链码调用针对状态数据库724中的当前状态执行交易。为了使这些链码交互非常有效,所有键的最新值都存储在状态数据库724中。状态数据库724可以包含区块链722的交易日志的索引视图,因此可以随时根据区块链重新生成索引视图。在接受交易之前,状态数据库724可以在对等体启动时自动恢复(或根据需要生成)。

背书节点从客户端接收交易,并根据模拟结果对交易进行背书。背书节点持有模拟交易建议的智能合约。当背书节点背书某交易时,背书节点将创建一个交易背书,该背书是背书节点对客户端应用程序的签名响应,该响应指示对模拟交易的背书。对交易进行背书的方法取决于可以在链码中规定的背书策略。背书策略的一个例子是“大多数背书对等体必须为交易背书”。不同的通道可以有不同的背书策略。背书的交易由客户端应用程序转发给排序服务710。对于跨域实施例,排序流是经由同端域控制器,该域控制器在向排序服务710发送之前验证背书策略已被满足。

排序服务710接收背书的交易,将它们排序到一个区块中,并将这些区块交付给提交对等体。例如,当达到交易阈值、计时器超时或其它条件时,排序服务710可以启动新的区块。在图7A的示例中,区块链节点712是已经接收到一个用于在区块链720上存储的新数据区块730的提交对等体。区块链中的第一个区块可以称为起始区块,其中包括关于该区块链及其成员、存储在其中的数据等的信息。

排序服务710可以由一组排序者组成。排序服务710不处理交易、智能合约或维护共享账本。而是,排序服务710可以接受背书的交易,并指定将这些交易提交到分布式账本720的顺序。可以将区块链网络的架构设计为使得“排序”的具体实现(如Solo、Kafka、BFT等)成为可插拔组件。

交易是按照一致性的顺序被写入分布式账本720的。确立交易的顺序以确保状态数据库724的更新在提交到网络时是有效的。与通过求解难题或挖掘进行排序的加密货币区块链系统(如比特币等)不同的是,在本示例中,分布式账本720的各方可以选择最适合该网络的排序机制。

当排序服务710初始化一个新数据区块730时,可以将新数据区块730广播给提交对等体(例如区块链节点711、712和713)。作为响应,每个提交对等体通过确保读取集和写入集仍然与状态数据库724中的当前世界状态匹配的检查,来验证新数据区块730中的交易。具体来说,提交对等体可以确定当背书者模拟交易时存在的读取数据是否与状态数据库724中的当前世界状态相同。当提交对等体验证该交易时,该交易被写入分布式账本720上的区块链722,状态数据库724被读取-写入集中的写入数据更新。如果交易失败,即如果提交对等体发现读取-写入集与状态数据库724中的当前世界状态不匹配,则排序到区块中的交易仍将被包括在该区块中,但它将被标记为无效,并且状态数据库724将不会更新。

参考图7B,存储在分布式分类账720的区块链722上的新数据区块730(也称为数据区块)可以包括多个数据段,诸如区块头740、区块数据750、以及区块元数据760。应该理解,图7B中所示的各种描述的区块及其内容(例如新数据区块730及其内容)仅仅为示例,并非是要限制示例性实施例的范围。新数据区块730可以在区块数据750中存储N(例如1、10、100、500、1000、2000、3000等)个交易的交易信息。新数据区块730还可以在区块头740中包括指向(例如图7B中的区块链722上的)前一区块的链接。特别地,区块头740可以包括前一区块的头的散列。区块头740还可以包括唯一性区块号、新数据区块730的区块数据750的散列等。新数据区块730的区块号可以是唯一性的,并以各种顺序(例如以从零开始的递增/顺序的顺序)进行分配。

区块数据750可以存储新数据区块730中记录的每个交易的交易信息。例如,交易数据可以包括下述的一个或多个:交易类型、版本、时间戳、分布式分类账720的通道ID、交易ID、时期(epoch)、有效负载可见性、链码路径(部署交易)、链码名、链码版本、输入(链码和函数)、客户(创建者)标识—诸如公钥和证书、客户签名、背书者身份、背书者签名、建议散列、链码事件、响应状态、命名空间、读取集(交易读取的键和版本列表等)、写入集(键和值列表等)、开始键、结束键、键列表、默克尔树(Merkel tree)查询摘要,等等。可以为N个交易中的每个交易存储交易数据。

区块元数据760可以存储多个元数据字段(例如,以字节数组等形式)。元数据字段可以包括区块创建时的签名、对最后一个配置块的引用、识别区块内的有效和无效交易的交易过滤器、对该区块进行排序的排序服务的最后一个偏移量等。排序服务710可以添加签名、最后一个配置区块和排序者元数据。同时,区块的提交方(如区块链节点712)可以添加基于背书策略的有效性/无效性信息、读取/写入集的验证等。交易过滤器可以包括大小等于区块数据750中的交易个数的字节数组和识别交易有效还是无效的验证码。

图7C例示根据本文所述实施例的用于数字内容的区块链770的实施例。数字内容可以包括一个或多个文件和相关信息。这些文件可以包括媒体、图像、视频、音频、文本、链接、图形、动画、网页、文档或其它形式的数字内容。区块链的不可改变、只可附加的特点对保护数字内容的完整性、有效性和真实性起着保障作用,使数字内容适用于其中应用了容许性规则的法律程序,或者适用于考虑证据或呈现和使用数字信息很重要的其它情景。在这种情况下,数字内容可以称为数字证据。

区块链的形成方式有多种多样。在一个实施例中,可以将数字内容包含在区块链中并从区块链本身访问。例如,区块链的每个区块可以存储引用信息(例如块头、值等)的散列值以及相关的数字内容。然后可以将散列值和相关的数字内容一起加密。因此,可以通过解密区块链中的每个区块来访问每个区块的数字内容,每个区块的散列值可以作为引用前一个区块的基础。这可以例示如下:

在一个实施例中,数字内容可以不含在区块链中。例如,区块链可以存储每个区块的内容的加密散列,而不存储任何数字内容。可以将数字内容与原始文件的散列值相关联地存储在另一个存储区或内存地址中。另一个存储区域可以是用于存储区块链的同一存储设备,也可以是不同的存储区,甚至是单独的关系数据库。通过获取或查询感兴趣的区块的散列值,然后在存储区中查找与实际的数字内容对应存储的该散列值,可以引用或访问每个区块的数字内容。此操作可以由例如数据库网关管理器来执行。

这可以例示如下:

在图7C的示例实施例中,区块链770包括多个区块778

区块链中的每个区块778

区块链中的第一个区块778

头772

起始区块中的原始文件774

起始区块中的值776

1)原始文件的SHA-2计算的散列值

2)始发设备ID

3)原始文件的开始时间戳

4)原始文件的初始存储位置

5)用于软件当前控制原始文件和关联的元数据的区块链网络成员ID

区块链中的其他区块778

一般而言,其他区块中的每个头772

其他区块中的文件774

附加地或备选地,处理可以涉及只是从前一个区块复制文件、改变文件的存储位置、分析来自一个或多个先前区块的文件、将文件从一个存储器或存储位置移动到另一个存储器或存储位置、或者执行相对于区块链的文件和/或其关联的元数据的动作。涉及分析文件的处理可以包括例如附加、包括或以其他方式关联与文件相关联的各种分析、统计或其他信息。

其他区块中的每个其他区块776

例如,考虑以下情况:对前一个区块中的文件部分进行编辑、分块或像素化以便保护文件中显示的个人的身份。在这种情况下,包括已编辑文件的区块将包括与已编辑文件相关联的元数据,例如如何执行编辑、何人执行编辑、发生编辑的时间戳等。可以对元数据执行散列以形成值。因为该区块的元数据与前一个区块中被执行散列以形成值的信息不同,所以这些值彼此不同,并且可以在解密时被恢复。

在一个实施例中,当发生以下一项或多项时,可以更新前一个区块的值(例如计算出新的散列值)以形成当前区块的值。在该示例实施例中,可以通过对以下所述的全部或部分信息执行散列来计算新的散列值。

a)新SHA-2计算的散列值,前提是已经以任何方式处理了文件(例如,如果文件被编辑、复制、改变、访问,或者采取其他动作)

b)文件的新存储位置

c)所识别的与文件相关联的新元数据

d)将文件的访问或控制从一个区块链参与者转移到另一个区块链参与者

图7D示出了根据一个实施例的区块的实施例,该区块可以表示区块链790中的区块的结构。区块Block

头772

文件774

一旦元数据被分配给数据(例如通过智能合约),元数据在散列没有改变情况下就不能被更改,而散列的改变很容易被识别为无效。因此,元数据创建了可被访问以供区块链参与者使用的信息的数据日志。

值776

一旦区块链770形成,在任何时间点,可以通过向区块链查询跨区块的值的交易历史来获取文件的不可改变的监管链。此查询或跟踪过程可以始于解密最近被包括的区块(例如,最后一个(第N个)区块)的值,然后继续解密其它区块的值,直到到达起始区块,然后恢复原始文件。解密也可能涉及到解密每个区块上的头和文件以及相关的元数据。

解密是根据每个区块中发生的加密的类型执行的。这可能涉及使用私钥、公钥或公钥-私钥对。例如,当使用非对称加密时,网络中的区块链参与者或处理器可以使用预定的算法生成公钥和私钥对。公钥和私钥通过某种数学关系相互关联。公钥可以被公开分发以用作从其它用户接收消息的地址(例如IP地址或家庭地址)。私钥是保密的,用于对发送给其它区块链参与者的消息进行数字签名。签名被包括在邮件中,以便接收者可以使用发件人的公钥进行验证。这样,接收者就可以确信只有发件人才可能发送了此邮件。

生成密钥对可以类似于在区块链上创建帐户但无须实际在任何地方注册。此外,在区块链上执行的每个交易都由发送方使用其私钥进行数字签名。此签名确保只有帐户所有者才能跟踪和处理区块链的文件(如果在智能合约确定的权限范围内)。

图8A和8B示出了可以在本文中包含和使用的用于区块链的用例的附加示例。特别地,图8A示出了存储机器学习(人工智能)数据的区块链810的示例800。机器学习依赖大量历史数据(或训练数据)来构建预测模型,以对新数据进行准确的预测。机器学习软件(例如神经网络等)通常可以筛选数百万个记录以发现非直观模式。

在图8A的示例中,主机平台820构建和部署用于对资产830进行预测监视的机器学习模型。在本文中,主机平台820可以是云平台、工业服务器、网络服务器、个人计算机、用户设备等。资产830可以是任何类型的资产(例如机器或设备等),例如飞机、机车、涡轮机、医疗机械和设备、石油和天然气设备、船、轮船、车辆等。作为另一个示例,资产830可以是非有形资产,例如股票、货币、数字硬币、保险等。

区块链810可以用于显著改进机器学习模型的训练过程802和基于训练后的机器学习模型的预测过程804两者。例如,在802中,历史数据可以由资产830本身(或通过中介,未示出)存储在区块链810上,而不是需要数据科学家/工程师或其他用户来收集数据。这能够显著减少主机平台802在执行预测模型训练时需要的收集时间。例如,使用智能合约,数据可以直接且可靠地直接从其原始位置传输到区块链810。通过使用区块链810以确保所收集的数据的安全性和所有权,智能合约可以直接将来自资产的数据发送到使用该数据构建机器学习模型的个体。这允许在资产830之间共享数据。

可以基于共识机制将所收集的数据存储在区块链810中。引入共识机制(许可节点)以确保被记录的数据得到验证并且准确。所记录的数据带有时间戳,经过加密签名并且不可变。因此,它是可审核、透明和安全的。在某些情况下(即供应链、医疗保健、物流等),添加直接写入区块链的IoT设备能够提高被记录的数据的频率和准确性。

此外,主机平台820可以对机器学习模型针对所收集的数据的训练进行多轮细化和测试。每一轮可以基于附加数据或先前未被认为有助于扩展机器学习模型的知识的数据。在802中,主机平台820可以将不同的训练和测试步骤(以及与其相关联的数据)存储在区块链810上。机器学习模型的每个细化(例如变量、权重等的改变)可以被存储在区块链810上。这提供了如何训练模型以及使用哪些数据来训练模型的可验证的证明。此外,当主机平台820已获得最终训练后的模型时,所得到的模型可以被存储在区块链810上。

在模型已被训练之后,其可以被部署到实际环境中,在该环境中可以基于最终训练后的机器学习模型的执行来做出预测/决策。例如,在804中,机器学习模型可以用于资产(例如飞机、风力涡轮机、医疗保健机器等)的视情维护(CBM)。在该示例中,可以将从资产830反馈的数据输入机器学习模型,并且用于做出事件预测,例如故障事件、错误代码等。通过在主机平台820处执行机器学习模型而做出的确定可以被存储在区块链810上以提供可审核/可验证的证明。作为一个非限制性示例,机器学习模型可以预测资产830的一部分的未来崩溃/故障,并且创建警报或通知以替换该部分。该决策背后的数据可以由主机平台820存储在区块链810上。在一个实施例中,本文描述和/或示出的特性和/或动作可以在区块链810上发生或相对于区块链810发生。

用于区块链的新交易可以被一起收集到新区块中,并且被加到现有散列值。然后,对它们进行加密以创建新区块的新散列。当被加密时,它们被添加到下一个交易列表,依此类推。结果是区块链,每个区块包含所有先前区块的散列值。存储这些区块的计算机定期比较它们的散列值以确保它们都一致。任何不一致的计算机将丢弃导致问题的记录。这种方法对于确保区块链的防篡改很有用,但是并不完美。

使该系统泄露秘密的一种方法是让不诚实的用户以他们的喜好改变交易列表,但是保持散列不变。这可以通过暴力来完成,换句话说,通过改变记录、对结果进行加密并且查看散列值是否相同。如果不同,则再三地尝试直到发现匹配的散列。区块链的安全性基于以下信念:普通计算机只能在完全不切实际的时间标度(例如,宇宙的年龄)内执行这种暴力攻击。相比之下,量子计算机要快得多(快1000多倍),并且因此构成大得多的威胁。

图8B示出了实现量子密钥分发(QKD)以保护免受量子计算攻击的量子安全区块链852的示例850。在该示例中,区块链用户可以使用QKD来验证彼此的身份。它使用诸如光子之类的量子粒子来发送信息,如果不破坏量子粒子,窃听者就无法复制它们。以这种方式,经过区块链的发送者和接收者可以确信彼此的身份。

在图8B的示例中,存在四个用户854、856、858和860。每对用户可以在他们之间共享密钥862(即QKD)。因为在该示例中存在四个节点,所以存在六个节点对,并且因此使用六个不同的密钥862,包括QKD

区块链852的操作基于两个程序(i)创建交易和(ii)构造聚合新交易的区块。可以创建类似于传统区块链网络的新交易。每个交易可以包含有关发送者、接收者、创建时间、要转移的金额(或价值)、证明发送者具有操作资金的参考交易列表等的信息。然后,将该交易记录发送到所有其他节点,在这些节点中将该交易记录输入未确认交易池中。在此,两方(即854-860中的一对用户)通过提供他们的共享密钥862(QKD)来验证交易。该量子签名可以被附加到每个交易,从而使得很难进行篡改。每个节点相对于区块链852的本地副本检查它们的条目以验证每个交易具有足够的资金。但是,交易尚未被确认。

可以使用广播协议以分散的方式来创建区块,而不是在区块上执行传统的挖掘过程。在预定时段(例如秒、分钟、小时等)内,网络可以将广播协议应用于任何未确认交易,从而实现关于交易的正确版本的拜占庭协议(共识)。例如,每个节点可以拥有私有值(该特定节点的交易数据)。在第一轮中,节点向彼此发送其私有值。在后续各轮中,节点传送它们在上一轮中从其他节点接收的信息。在此,诚实节点能够在新区块内创建完整的交易集。该新区块能够被添加到区块链852。在一个实施例中,本文描述和/或示出的特性和/或动作可以在区块链852上发生或相对于区块链852发生。

图9示出了支持本文描述和/或示出的一个或多个示例实施例的示例系统900。系统900包括计算机系统/服务器802,它与许多其它通用或专用计算系统环境或配置一起运行。可以适用于计算机系统/服务器902的公知计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、厚客户端、手持或笔记本设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、网络PC、小型计算机系统、大型机计算机系统和包括上述任何系统或设备的分布式云计算环境,等等。

计算机系统/服务器902可在由计算机系统执行的计算机系统可执行指令(如程序模块)的一般上下文中描述。通常,程序模块可以包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、逻辑、数据结构等。计算机系统/服务器902可以在分布式云计算环境中使用,其中任务由通过通信网络链接的远程处理设备执行。在分布式云计算环境中,程序模块可以位于包括内存存储设备的本地和远程计算机系统存储介质中。

如图9所示,云计算节点900中的计算机系统/服务器902以通用计算设备的形式表现。计算机系统/服务器902的组件可以包括但不限于:一个或者多个处理器或者处理单元904、系统存储器906、连接不同系统组件(包括系统存储器906和处理单元904)的总线。

总线表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

计算机系统/服务器902典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器902访问的可用介质,包括易失性和非易失性介质、可移动和不可移动的介质。在一个实施例中,系统存储器906实现其他附图的流程图。系统存储器906可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)910和/或高速缓冲存储器912。计算机系统/服务器902可以进一步包括其他可移动/不可移动、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统914可以用于读写不可移动、非易失性磁介质(图中未显示,通常称为“硬盘驱动器”)。尽管图中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM、DVD-ROM或者其他光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线相连。将如下面进一步示出和描述的,存储器906可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请的各种实施例的功能。

具有一组(至少一个)程序模块918的程序/实用工具916,可以存储在例如存储器906中,这样的程序模块918包括—但不限于—操作系统、一个或者多个应用程序、其他程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块918通常执行本申请所描述的各种实施例中的功能和/或方法。

如本领域的技术人员将理解的,本申请的各个方面可以体现为系统、方法或计算机程序产品。因此,本申请的各个方面可以采取完全硬件实施例、完全软件实施例(包括固件、驻留软件、微代码等)或组合了软件和硬件方面的实施例的形式,所有这些实施例在本文中通常可以被称为“电路”、“模块”或“系统”。此外,本申请的各个方面可以采取包含在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质上包含计算机可读程序代码。

计算机系统/服务器902也可以与一个或多个外部设备920(例如键盘、指向设备、显示器922等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器902交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其他计算设备进行通信的任何设备(例如网卡、调制解调器等等)通信。这种通信可以通过I/O接口924进行。并且,计算机系统/服务器902还可以通过网络适配器926与一个或者多个网络(例如局域网(LAN)、广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器926通过总线与计算机系统/服务器902的其他组件通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器902使用其他硬件和/或软件组件,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

尽管已在附图中示出并且在上面的详细描述中描述了系统、方法以及非瞬时性计算机可读介质中的至少一个的示例性实施例,但将理解,本申请并不限于所公开的实施例,而是能够进行如由以下权利要求提出和限定的许多重新布置、修改以及替换。例如,各个附图的系统的功能可以由本文描述的一个或多个模块或组件执行或者在分布式架构中执行,并且可以包括发射机、接收机或发射机-接收机对。例如,由单独模块执行的全部或部分功能可以由这些模块中的一个或多个来执行。此外,本文描述的功能可以在各种时间执行,并且针对模块或组件的各种内部或外部事件来执行。此外,可以经由以下至少一者,在模块之间发送在各种模块之间发送的信息:数据网络、因特网、语音网络、网际协议网络、无线设备、有线设备和/或经由多种协议。此外,可以直接和/或经由一个或多个其他模块,发送或接收由任何模块发送或接收的消息。

本领域的技术人员将理解,“系统”可以被实现为个人计算机、服务器、控制台、个人数字助理(PDA)、蜂窝电话、平板计算设备、智能电话或任何其他合适的计算设备或设备组合。将上述功能呈现为由“系统”执行并非旨在以任何方式限制本申请的范围,而是旨在提供许多实施例的一个示例。实际上,本文公开的方法、系统和装置可以以与计算技术一致的本地化和分布式形式来实现。

应当注意,本说明书中描述的一些系统特征被呈现为模块,以便更具体地强调它们的实现独立性。例如,模块可以实现为包括定制的超大规模集成(VLSI)电路或门阵列的硬件电路,诸如逻辑芯片、晶体管或其它分立元件的现成半导体。模块还可以在诸如现场可编程门阵列、可编程阵列逻辑、可编程逻辑器件、图形处理单元等的可编程硬件设备中实现。

模块还可以至少部分地在软件中实现,以便由各种类型的处理器执行。例如,所识别的可执行代码的单元可以包括一个或多个物理或逻辑的计算机指令块,这些块例如可以被组织为对象、过程或函数。然而,所识别的模块的可执行代码不需要在物理上位于一起,而是可以包括存储在不同位置的不同指令,当这些指令被逻辑地结合时,将包括模块并且实现模块的所述目的。此外,模块可以存储在计算机可读介质上,该计算机可读介质例如可以是硬盘驱动器、闪存设备、随机存取存储器(RAM)、磁带或用于存储数据的任何其他此类介质。

实际上,可执行代码的模块可以是单个指令或多个指令,并且甚至可以分布在数个不同的代码段上、不同的程序中,以及跨越多个存储设备。类似地,操作数据可以在本文中在模块内被识别和示出,并且可以以任何合适的形式体现并且被组织在任何合适类型的数据结构中。操作数据可以作为单个数据集被收集,或者可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。

将很容易理解,如通常在本文附图中描述和示出的,本申请的组件可以以各种不同的配置来布置和设计。因此,实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅表示本申请的选定实施例。

本领域普通技术人员将容易理解,可以以不同顺序的步骤和/或使用与所公开的配置不同的配置中的硬件元件来实现上述内容。因此,尽管已经基于这些优选实施例描述了本申请,但是对于本领域技术人员来说显而易见的是,某些修改、变化和替代构造将是显而易见的。

虽然已经描述了本申请的优选实施例,但是应该理解,所描述的实施例仅仅是说明性的,本申请的范围仅由所附的权利要求在考虑各种等同物和修改(例如协议、硬件设备、软件平台等)的全部范围的情况下限定。

相关技术
  • 具有数据流控制的多域区块链网络
  • 一种在具有对等节点的区块链网络上分发和检索数据的方法
技术分类

06120112230413